Otro factor a tener en cuenta es que, si estamos en contexto de fila, la máquina DAX va a rodear cualquier medida a la que hagamos referencia con un CALCULATE implícito (también de forma automática y sin que sea visible), forzando la transición de contexto.
Pongamos un ejemplo: ya tenemos una medida que calcula la suma de la columna Sales[Amount] (la medida [Sales]):
Y ya hemos visto que, si creamos una columna calculada haciendo uso explícito de la función SUM, obtenemos las ventas totales con independencia de la subcategoría de que se trate:
Pues bien, si en lugar de usar la función SUM hiciésemos referencia a la medida [Sales] para crear la columna calculada:
El resultado no coincidiría con el mostrado en la captura de pantalla anterior:
De hecho, el resultado es el correspondiente al obtenido cuando se ejecuta la transición de contexto. El motivo es, como se ha comentado, que la máquina DAX rodea la medida con un CALCULATE implícito. Es decir, lo que realmente se está ejecutando es esto:
CALCULATE(
[Sales]
)
O, yendo más allá, para -por ejemplo- el primer valor de la columna que estamos creando (el correspondiente a la subcategoría “Servers”), lo que realmente se está ejecutando es esto:
CALCULATE(
[Sales],
Subcategory[Category Id] = 1,
Subcategory[Subcategory] = "Servers",
Subcategory[Subcategory Id] = 1
)