CALCULATE y los elementos calculados

Se ha comentado que esta sustitución se va a producir siempre que el grupo calculado se filtre de forma que un y solo un elemento calculado quede seleccionado. Y acabamos de ver un ejemplo en el que la selección se realiza usando una segmentación, pero hay otras formas de seleccionar un valor en una tabla, como ya sabemos. Una es usando la función CALCULATE y especificando el cambio en el contexto de filtro que deseamos. Veamos un ejemplo:

En la segmentación que hemos generado vamos a limpiar todas las selecciones para asegurar que no va a influir en el cálculo. A continuación, vamos a crear una medida que calcule el valor acumulado desde el principio de año, pero vamos a hacerlo con el siguiente código:

Sales YTD =
CALCULATE(
    [Sales],
    'gc time intelligence'[time calculation] = "YTD"
)

Es decir, estamos evaluando la medida [Sales] forzando la selección del elemento calculado “YTD” en el grupo calculado.

Si creamos una matriz, llevamos el campo Calendar[Date] a filas y las medidas [Sales] y [Sales YTD] a valores (y desagregamos por trimestre), el resultado es el siguiente:

CALCULATE y los elementos calculados

Comprobamos que, efectivamente, la medida [Sales YTD] está acumulando correctamente las ventas.

Eso sí, un recordatorio: se ha comentado que cuando se seleccione algún elemento del grupo calculado se sustituirán las medidas por el código del elemento calculado. Pero solo las medidas. Esto quiere decir que, si modificamos el código de la medida [Sales YTD] de forma que ya no se esté haciendo referencia a ninguna medida:

Sales YTD = 
CALCULATE(
    SUM(Sales[Amount]),
    'gc time intelligence'[time calculation] = "YTD"
)

la sustitución ya no se produce, por lo que el código anterior es equivalente a

Sales YTD = SUM(Sales[Amount])

Ahora nuestra matriz ahora muestra exactamente el mismo valor en ambas columnas:

CALCULATE y los elementos calculados