Contenido del curso
Automarización con Power Query
Optimización de Modelos de Datos
Funciones Avanzada con DAX
Visualización de Datos Avanzada
Power BI Service
Integraciones Avanzadas Con Power BI
Inteligencia Artificial con Power BI
Qué hace CALCULATE en DAX
Resumen
Cuando empiezas a escribir fórmulas en Power BI, descubres rápido que CALCULATE es la función madre de DAX: la que te permite evaluar una operación y, al mismo tiempo, modificar el contexto de filtro de tu modelo. Si trabajas con tableros comerciales, dominarla es el paso que separa una medida básica de un análisis real.
¿Qué es CALCULATE en DAX y por qué es la función más importante?
CALCULATE es la función que evalúa una expresión, como una suma o un total de ventas, y le aplica un contexto de filtro distinto al que viene de la tabla o el visual. En la práctica, te deja responder preguntas tipo "¿cuánto vendió solo Toyota?" sin tocar el modelo.
¿Qué hace CALCULATE en Power BI? Evalúa una expresión y le aplica filtros nuevos. Por ejemplo, suma el total de ventas pero solo cuando la marca del vehículo sea Toyota. [01:18]
Un detalle que conviene tener claro: DAX no es case sensitive, a diferencia de Power Query. Da igual si escribes "Toyota" o "toyota", el resultado será el mismo.
¿Cómo crear una medida con CALCULATE paso a paso?
Partimos de un modelo comercial donde ya existe la medida Total de ventas. En una tabla con el campo Marca de la dimensión Vehículo, Toyota aparece como la marca con más ventas. Para aislar ese valor en una tarjeta, creas una nueva medida así:
- Clic derecho sobre la tabla de medidas y elegir Nueva medida.
- Nombrarla Venta Toyota.
- Escribir:
Venta Toyota = CALCULATE([Total de ventas], Vehículo[Marca] = "Toyota"). - Arrastrar el resultado a una tarjeta.
El indicador devuelve 105 millones, que corresponden únicamente a Toyota. [02:30]
¿Cómo calcular el porcentaje de participación por marca con DAX?
Aquí es donde DAX se separa de Excel. No existe una "celda total" a la que apuntar. Para sacar la participación de cada marca respecto al gran total de 359 millones, necesitas generar tú mismo ese gran total con una agregación.
La clave está en combinar CALCULATE con la función ALL, que elimina el contexto de filtro que el visual está aplicando sobre una columna específica.
¿Para qué sirve la función ALL dentro de CALCULATE?
ALL ignora los filtros de una columna o tabla, lo que te permite obtener un total que se repite en cada fila del visual. Esto es indispensable cuando quieres comparar una parte contra el todo.
¿Qué hace ALL en DAX? Quita el filtro que el visual aplica sobre una columna, por ejemplo Marca, para que el cálculo devuelva el total general en todas las filas. [03:45]
La medida queda así:
Total de ventas marca = CALCULATE([Total de ventas], ALL(Vehículo[Marca])).
Al arrastrarla a la tabla, los 359 millones aparecen repetidos en cada marca. Importante: esa medida funciona dentro de ese visual específico, porque el contexto que estamos eliminando es el de la columna Marca de Vehículo.
¿Cómo combinar DIVIDE para obtener la participación porcentual?
Con las dos piezas listas (ventas por marca y total general), construyes la participación con DIVIDE, que es la forma segura de dividir en DAX porque maneja los errores por cero automáticamente.
Participación marca = DIVIDE([Total de ventas], [Total de ventas marca]).
Al llevarla a la tabla, todos los porcentajes suman 100 %. No es tan directo como en Excel, pero el resultado es mucho más flexible y reutilizable.
¿Cómo dar formato y aislar un valor específico en una tarjeta?
El formato lo aplicas seleccionando la medida y entrando a Herramientas de medición. Para los montos en dólares eliges Inglés Estados Unidos con dos decimales, y para Participación marca eliges porcentaje.
Si después te piden mostrar la participación de Toyota en una tarjeta, vuelves a apoyarte en CALCULATE:
Participación Toyota = CALCULATE([Participación marca], Vehículo[Marca] = "Toyota").
El resultado es 29.36 %, listo para colocarse en un visual de tarjeta con formato porcentaje. [06:50]
¿Cuándo debo usar CALCULATE en lugar de SUM? Cuando necesitas que la suma responda a un filtro distinto al del visual, como aislar una marca, una fecha o una región específica.
Entre los conceptos que vale la pena fijar: medida como fórmula optimizada que se recalcula según el contexto, contexto de filtro como el conjunto de filtros activos sobre una visualización, y agregación como cualquier operación que resume datos (suma, promedio, conteo). Las funciones protagonistas son CALCULATE [01:05], ALL [04:10] y DIVIDE [05:20], y los datos numéricos que ordenan el ejercicio son los 105 millones de Toyota, los 359 millones del total y el 29.36 % de participación.
¿Qué otra medida te gustaría construir con CALCULATE en tu modelo? Cuéntame en los comentarios.