En el siguiente artículo vamos a recapitular todos los puntos importantes del contexto de evaluación:
- El contexto de evaluación es el contexto que modifica el valor retornado por una expresión DAX filtrando los datos del modelo dando lugar a lo que se conoce como current row o fila actual, cuando necesitamos acceder al valor de una columna.
- El contexto de evaluación (Evaluation Context) está formado por dos partes: el row context y el filter context. Ambos contextos coexisten y están presentes en todas las fórmulas. Para comprender la conducta de todas las fórmulas se deben dominar ambos conceptos, porque operan al mismo tiempo.
- DAX crea automáticamente un contexto de fila cuando definimos una columna calculada. Adicionalmente, también se puede crear un contexto de fila añadiendo funciones de iteración (iterator functions). Todas las funciones de iteración definen un contexto de fila.
- Se pueden anidar contextos de fila, la función EARLIER es la más útil para conseguir acceso al contexto de fila previo.
- DAX crea un contexto de filtro al usar una pivot table con campos en filas,columnas y/o filtros. Hay una puerta trasera para crear contexto de fila utilizando la función CALCULATE.
- El contexto de fila no se propaga automáticamente a través de las relaciones. La propagación ocurre manualmente utilizando las funciones RELATE y RELATEDTABLE. Tienes que usar ambas funciones en el lado correcto de la relación one-to-many para que puedan funcionar. RELATED en el lado «muchos(many)» de la relación, RELATEDTABLE en el lado «uno(one)» de la relación.
- El contexto de fila (filter context) se propaga automáticamente entre las relaciones de un modelo. Siempre se propaga desde el lado one(uno) al lado many(muchos). Tienes la opción de activar la propagación desde el lado many (muchos) al lado one(uno). En este caso, no hay funciones para realizar esto, el motor Power Pivot, automáticamente realiza la propagación según lo definas en el sentido de la relación.
- VALUES retorna una tabla con los valores únicos de una columna de una tabla dentro de su contexto de filtro. Se puede utilizar el resultado de esta tabla como iterador en cualquier fórmula.