Contextos de evaluación

Una complejidad adicional a considerar es que, en estos tres escenarios (creación de medidas, columnas calculadas y tablas calculadas), el lenguaje DAX no se utiliza exactamente de la misma manera.

Así, durante la creación de una medida, ya se ha comentado que el resultado devuelto por ésta no va a ser el mismo si se lleva a una tarjeta o a un objeto visual tipo tabla en el que se esté desagregando por estado civil, pues cada resultado devuelto por la medida DAX va a obtenerse teniendo en cuenta los filtros que se estén aplicando al modelo de datos en cada cálculo. En estas circunstancias estamos trabajando en lo que se llama contexto de filtro.

Sin embargo, cuando añadimos una columna calculada a una tabla, resulta irrelevante que se estén aplicando filtros o no a los datos: cada valor de la columna calculada se va a obtener (en general) a partir de los valores de las columnas de la misma fila en la que se encuentre el valor a calcular. Por ejemplo, supongamos que partimos de una tabla que incluye un único campo conteniendo fechas (el campo Date):

Contextos de evaluación

Si quisiéramos usar DAX para crear una columna calculada que contuviese, por ejemplo, el nombre del día de la semana de cada fecha:

Contextos de evaluación

el primer valor de la columna a obtener (en rojo en la imagen anterior) se extraería exclusivamente a partir de los valores contenidos en la misma fila (en verde), con independencia de que, en el informe, se estén filtrando o no los datos.

En estas circunstancias estamos trabajando en lo que se llama contexto de fila.

Pues bien, el lenguaje DAX no se utiliza exactamente de la misma forma. Por ejemplo, en contexto de filtro trabajaremos con tablas y columnas, y necesitaremos usar funciones de agregación para obtener aquellos resultados que queremos. Por el contrario, trabajando en contexto de fila (calculando los valores de la columna fila por fila) no es necesario usar funciones de agregación pues podemos hacer referencia a los campos de la fila que estemos iterando directamente por su nombre.