La función CALCULATE en contexto de fila

Pues bien, la función CALCULATE que ya conocemos, cuando se usa en contexto de fila, provoca esa transición de contexto que nos lleva a trabajar en contexto de filtro y a que, por lo tanto, se filtre el modelo de datos. Si modificamos la expresión de la columna calculada de la siguiente forma:

Subcategory Sales =
CALCULATE(
    SUM(Sales[Amount])
)

El resultado es bien distinto:

Transición de contexto

Ahora, cuando la máquina DAX ejecuta nuestro código para, por ejemplo, la primera de las filas de la tabla (la correspondiente a la subcategoría “Servers”), el uso de la función CALCULATE hace que “la fila siendo iterada en este momento” (la fila marcada en rojo) filtre el modelo de datos. Como ya sabemos, esta fila filtrará la tabla de Products de forma que solo serán visibles los productos asociados a la subcategoría “Servers”, lo que, a su vez, filtrará la tabla Sales de forma que solo serán visibles las ventas asociadas a productos asociados a la subcategoría “Servers”. Si, en este contexto de filtro, sumamos los valores “visibles” de la columna Amount de la tabla Sales, obtenemos exactamente lo que buscábamos: las ventas de la subcategoría “Servers” (el valor 149285,1205 que se muestra en la imagen anterior).