CALCULATE en Power BI es, sin lugar a dudas, esa función que no puede faltar en tu arsenal de funciones DAX. Es, probablemente, una de la funciones que mayor impacto puede tener en tus métricas, ya que no añade una gran complejidad y simplifica muchos de los cálculos comúnmente utilizados, permitiendo de esta manera crear nuevos contextos sobre los cuales filtrar campos y tablas de manera independiente a los filtros que ya existen en nuestro reporte.
Primero que todo: Un pequeño repaso acerca de los contextos de filtrado
Cuando creamos una nueva expresión en DAX, ésta es evaluada en su contexto, es decir, en el espacio en el que es creada la función.
Si, por ejemplo, creamos una fórmula que sea la resta de dos columnas diferentes en una misma tabla y, luego, llevamos este resultado a nuestro reporte, veremos que nos entregará un solo valor (que podrá ser la suma, el promedio, la mediana o cualquier agrupación de esta nueva columna calculada), pero no tendremos mayor información respecto a qué categorías pertenece, ni como se subdivide respecto a otros campos de la tabla porque no existe un contexto que le permita desplegar un mayor detalle.
![](https://academiadeldato.com/wp-content/uploads/2024/06/Imagen-1.png)
Por lo general, en nuestros reportes buscaremos aportar un mayor nivel de información a nuestros usuarios. Para esto, utilizaremos una columna que contenga diferentes descripciones que permita dividir en pequeñas partes nuestro resultado, y así, por ejemplo, añadir las diferentes categorías o segmentos de una tabla para que los resultados aparezcan como una porción del total calculado anteriormente.
![](https://academiadeldato.com/wp-content/uploads/2024/06/Imagen-2.png)
Cuando hacemos esto dentro de una tabla de nuestro reporte, lo que está ocurriendo es que DAX evalúa cada fórmula en su contexto y por mucho que creemos una fórmula idéntica a la anterior, el resultado cambiará si la ponemos en un contexto distinto (por ejemplo, si en vez de las razas pusiéramos el color de las mascota), porque la función se ejecutará contra un set de datos distinto, que dependerá de cada tabla y su contexto.
CALCULATE en Power BI:
Cambiando el contexto de filtrado
El contexto de filtrado es creado por el reporte cuando necesitamos expandir el análisis sobre otros campos y es generado de manera automática sobre nuestro modelo y sus tablas, siendo invisible para nosotros el procesamiento que debe realizar Power BI para obtener el resultado esperado.
Es así como DAX en nuestro ejemplo anterior, es capaz de obtener el número de mascotas pertenecientes a la raza Akita, debiendo filtrar todo el modelo para obtener una respuesta en base al contexto requerido por esta tabla del reporte.
![](https://academiadeldato.com/wp-content/uploads/2024/07/Diseno-sin-titulo-23-256x300.png)
¿Es posible crear un nuevo contexto de filtrado?
La respuesta es si, pero en este caso de manera indirecta. Existen dos funciones que permiten modificar el contexto de filtrado dentro de un reporte. Estas funciones son: CALCULATE y CALCULATETABLE.
El día de hoy veremos cómo podemos aprovechar CALCULATE para crear un nuevo contexto de filtrado, declarando nuevos parámetros que irán dentro de la función y observaremos cómo de manera automática se mezcla este nuevo contexto con el contexto de filtrado ya existente en nuestro reporte.
Sintaxis de la función CALCULATE en Power BI
Nombre_de_la_funcion = CALCULATE('Expresión','Condición1','Condición2',...'CondiciónN')
-
Expresión
Corresponde a la medida que vamos a evaluar. Puede ser la suma de una columna [SUM('Columna')], el promedio [AVERAGE('Columna')], la división de dos columnas [DIVIDE(''Columna1','Columna2')] o cualquier otra medida que queramos evaluar.
-
Condiciones
Pueden ser filtros que se ejecutarán sobre una tabla utilizando la función FILTER, o una condición textual que evalúe si ese valor existe o no dentro de la tabla, actuando como un filtro directo que establezca condiciones especfícias de tipo "Boolean" (condición que puede tomar sólo dos valores, verdadero o falso).
Ejemplo: 'Tabla1'[Columna1] = "Perro".
Importante: Cualquier condición que pongamos como argumento dentro de CALCULATE será procesada como si fuera una tabla y no como un valor específico. Incluso, cuando le estemos pasando una condición de tipo Boolean (que puede ser Verdadera o Falsa), esta función la transformará en una tabla de valores que deberá evaluar.
Ejemplo de CALCULATE en Power BI
En el siguiente ejemplo veremos cómo CALCULATE es capaz de cambiar el contexto de filtrado de una tabla. Comenzaremos con un caso base que será el recuento de todas las mascotas que existen en una base de datos, y agregaremos el campo RAZA dentro de nuestro reporte para mostrar cómo se vería la distribución de cada raza y el número de mascotas existentes en esta población.
![](https://academiadeldato.com/wp-content/uploads/2024/06/Imagen-4.png)
A continuación, generaremos una nueva fórmula que contará el número de mascotas de la raza Dachshund existentes en el modelo de datos. Nos apoyaremos en la fórmula COUNTROWS como medida principal y filtraremos directamente la tabla con un texto específico.
MEDIDA_CALCULATE_EJEMPLO =
CALCULATE (
COUNTROWS('Mascotas'),
mascotas[Nombre_Raza]="Dachshund"
)
![](https://academiadeldato.com/wp-content/uploads/2024/06/Imagen-5.png)
Debemos recordar lo que habíamos mencionado anteriormente respecto al contexto de filtrado. Hemos creado una nueva fórmula y con la ayuda de CALCULATE hemos creado un contexto específico para esa medida que lo hace independiente del contexto del reporte. Lo que hace CALCULATE es sobreescribir la condición existente en la tabla con la condición del filtro que hemos declarado en nuestra función.
Atención: No estamos sobreescribiendo el contexto global del reporte, solo estamos reemplazándolo para aquellas columnas que se especifican dentro del argumento de nuestra función. En este caso, solo estamos apuntando al campo que contiene la razas.
Si, por ejemplo, cambiamos nuevamente el contexto de nuestra tabla y reemplazamos la raza por el color de las mascotas, encontraremos que se produce una mezcla entre el contexto de filtrado original y el que se genera a través de nuestra función. La primera columna sigue mostrando el número de mascotas, sólo que ahora dividido por color, y la segunda columna ahora contiene el número de mascotas por color, pero sólo de la raza Dachshund.
![](https://academiadeldato.com/wp-content/uploads/2024/06/Imagen-6.png)
Esperamos que articulo te haya sido de utilidad para aprender a utilizar CALCULATE. También esperamos que hayas entendido la relevancia que tiene esta función y que puedas comenzar a utilizarla como una aliada en tus reportes.
Esto es sólo una parte de lo que puede hacer CALCULATE, dado que las modificaciones que podemos hacer al contexto de filtrado son mucho más amplias. Próximamente veremos cómo puede interactuar con la función ALL para eliminar contextos de filtrado y, por otro lado, cómo las relaciones de nuestro modelo pueden tener un impacto en el contexto de filtrado.