Excel DAX: contexto de evaluación
En DAX, el contexto es un término importante que debe conocer al escribir fórmulas DAX. También conocido comoevaluation context, El contexto DAX se utiliza para determinar la evaluación de una fórmula DAX y el resultado correspondiente. Esto significa que los resultados de una fórmula DAX pueden variar según el contexto. Debe comprender claramente cómo se usa un contexto DAX específico y cómo los resultados pueden ser diferentes.
El contexto de evaluación le permite realizar análisis dinámicos, en los que los resultados de una fórmula DAX pueden cambiar para reflejar la selección de fila o celda actual y también cualquier dato relacionado. Comprender el contexto y usar el contexto de manera eficaz es muy importante para crear fórmulas DAX potentes, realizar análisis de datos dinámicos y solucionar problemas en fórmulas DAX. Los contextos de evaluación son la base de todas las funciones avanzadas de DAX que necesita dominar para crear informes de análisis de datos complejos.
A medida que sigue haciendo referencia a las funciones de DAX para el uso relevante en las fórmulas de DAX, debe consultar este capítulo sobre el contexto de DAX para obtener claridad sobre los resultados.
Tipos de contexto en DAX
DAX admite los siguientes contextos de evaluación:
- Contexto de fila
- Contexto de filtro
Cuando se evalúa una fórmula DAX, todos los contextos se tendrán en cuenta y se aplicarán según corresponda. Los contextos existen juntos y el resultado de la fórmula será diferente según el contexto que se utilice al calcular un valor. Por ejemplo, cuando selecciona campos para filas, columnas y filtros en una tabla dinámica, los subtotales se calculan dinámicamente según la fila y la columna con la que está asociado el subtotal / total y los valores de las filas y columnas están determinados por los filtros. usado.
Contexto de fila
El contexto de fila significa que la fórmula DAX o la función DAX sabe a qué fila de la tabla hace referencia en cualquier momento. Puede considerar el contexto de fila como la fila actual. La fórmula se calculará fila por fila con el contexto de fila.
Algunas funciones DAX (por ejemplo, las funciones X, FILTER ()) y todas las columnas calculadas tienen un contexto de fila. Por ejemplo, si crea una columna calculada Año con la fórmula DAX = AÑO ([Fecha]), los valores de la columna calculada se obtienen aplicando la fórmula DAX dada en la columna dada en la tabla, fila por fila.
Esto significa que si ha creado una columna calculada, el contexto de la fila consta de los valores de cada fila individual y los valores de las columnas que están relacionados con la fila actual, según lo determinado por la fórmula de DAX utilizada. Aunque la fórmula de DAX no contiene la referencia a una fila, DAX comprende implícitamente el contexto de la fila al calcular los valores.
DAX crea un contexto de fila automáticamente cuando define una columna calculada y todos los valores calculados con la fórmula de DAX utilizada aparecerán en la columna calculada.
Por el contrario, cuando tiene una función DAX como SUMX, los valores calculados fila por fila se suman y solo se mostrará el resultado final. Es decir, se descartan los valores intermedios.
Cuando tiene tablas relacionadas, el contexto de la fila determina qué filas de la tabla relacionada están asociadas con la fila actual. Sin embargo, el contexto de fila no se propaga automáticamente a través de relaciones. Tiene que usar las funciones DAX - RELATED y RELATEDTABLE para esto.
Contexto de varias filas
DAX tiene funciones de iterador como SUMX. Puede utilizar estas funciones para anidar contextos de filas. Con esto, programáticamente puede tener una recursividad sobre un bucle interno y un bucle externo, donde puede tener múltiples filas actuales y contextos de filas actuales.
Por ejemplo, puede usar la función DAX Earlier () que almacena el contexto de fila de la operación que precedió a la operación actual. Esta función almacena dos conjuntos de contexto en la memoria: un conjunto de contexto representa la fila actual para el ciclo interno de la fórmula y otro conjunto de contexto representa la fila actual para el ciclo externo de la fórmula. DAX alimenta automáticamente los valores entre los dos bucles para que pueda crear agregados complejos.
Para ver un ejemplo, consulte el escenario: Creación de una fórmula DAX que clasifique valores dinámicamente en el capítulo Escenarios: Clasificación y comparación de valores.
Contexto de filtro
El contexto de filtro se refiere a cualquier filtrado que se aplique al modelo de datos en DAX. El contexto de filtro es creado por una tabla dinámica y también por las funciones de DAX.
Contexto de filtro creado por una tabla dinámica
El contexto de filtro creado por una tabla dinámica es el filtrado natural que se aplica mediante las selecciones realizadas en los campos de la tabla dinámica de los siguientes:
- Rows
- Columns
- Filters
- Slicers
El contexto de filtro creado por una tabla dinámica, filtra las tablas subyacentes en el modelo de datos. Si las tablas están relacionadas, los filtros fluyen hacia abajo desde las tablas de búsqueda a las tablas de datos. Eso significa que puede filtrar las tablas de datos según los resultados de las tablas de búsqueda. La propagación del filtro no ocurre al revés. Sin embargo, puede usar fórmulas DAX para filtrar las tablas de búsqueda según los resultados de las tablas de datos.
Contexto de filtro creado por funciones DAX
Puede utilizar las funciones de filtro de DAX para definir campos calculados y columnas calculadas, que contienen expresiones de filtro que controlan los valores utilizados por la fórmula de DAX. Estos campos calculados y columnas calculadas pasan a formar parte de la lista de campos de la tabla dinámica y puede agregarlos a la tabla dinámica. También puede borrar selectivamente los filtros en columnas particulares con estas funciones de filtro DAX. Un ejemplo de una potente función de filtro DAX para crear un contexto de filtro es CALCULATE (). Para ver un ejemplo, consulte el capítulo Escenarios: realización de cálculos complejos.
Filtrar contexto como una adición al contexto de fila
El contexto de fila no crea automáticamente un contexto de filtro. Puede lograr lo mismo con las fórmulas DAX que contienen funciones de filtro DAX.