Contexto de las fórmulas DAX

El contexto le permite realizar análisis dinámicos, en los que los resultados de una fórmula pueden cambiar para reflejar la selección de fila o celda actual y también los datos relacionados. Entender lo que es el contexto y usarlo eficazmente es esencial para generar análisis dinámicos y muy eficaces, y para solucionar los posibles problemas de las fórmulas.

En esta sección se definen los diferentes tipos de contexto: contexto de la fila, contexto de la consulta y contexto del filtro. Explica cómo se evalúa el contexto para las fórmulas en las columnas calculadas y en las tablas dinámicas.

La última parte de esta sección proporciona vínculos a ejemplos detallados que ilustran cómo cambian los resultados de las fórmulas según el contexto.

Introducción al contexto

Las fórmulas de PowerPivot pueden verse afectadas por los filtros aplicados en una tabla dinámica, por relaciones entre las tablas y por filtros utilizados en fórmulas. El contexto es lo que hace posible realizar el análisis dinámico. Comprender el contexto es importante para generar fórmulas y solucionar los problemas relacionados con ellas.

Hay diferentes tipos de contexto: contexto de fila, contexto de consulta y contexto de filtro.

El contexto de fila se puede entender como "la fila actual". Si ha creado una columna calculada, el contexto de la fila está formado por los valores de cada fila individual y los valores de las columnas que están relacionadas con la fila actual. Hay también algunas funciones (EARLIER y EARLIEST) que reciben un valor de la fila actual y, a continuación, usan ese valor al realizar una operación en una tabla completa.

El contexto de consulta hace referencia al subconjunto de datos que se crean implícitamente para cada celda en una tabla dinámica, dependiendo de los encabezados de columna y fila.

El contexto de filtro es el conjunto de valores permitido en cada columna, basado en las restricciones de filtro que se aplicaron a la fila o que se han definido por expresiones de filtro dentro de la fórmula.

El siguiente tema explica los diferentes tipos de contexto con más detalle: Contexto de las fórmulas DAX.

Volver al principio

Contexto de la fila

Si crea una fórmula en una columna calculada, el contexto de la fila para esa fórmula incluye los valores de todas las columnas en la fila actual. Si la tabla se relaciona con otra tabla, el contenido también incluye todos los valores de esa otra tabla que están relacionados con la fila actual.

Por ejemplo, suponga que crea una columna calculada, =[Freight] + [Tax] que suma dos columnas de la misma tabla. Esta fórmula se comporta como las fórmulas de una tabla de Excel, que automáticamente hacen referencia a los valores de la misma fila. Observe que las tablas son diferentes de los intervalos: no puede hacer referencia a un valor de la fila antes de la fila actual mediante la notación del intervalo y no puede hacer referencia a cualquier valor único arbitrario en una tabla o celda. Siempre debe trabajar con tablas y columnas.

El contexto de la fila sigue automáticamente las relaciones entre las tablas para determinar qué filas de las tablas relacionadas están asociadas a la fila actual.

Por ejemplo, la fórmula siguiente utiliza la función RELATED para capturar un valor de impuesto de una tabla relacionada, en función de la región a la que se envió el pedido. El valor del impuesto se determina utilizando el valor para la región en la tabla actual, para ello, se busca la región en la tabla relacionada y, posteriormente, se obtiene la tasa impositiva para esa región de la tabla relacionada.

= [Freight] + RELATED('Region'[TaxRate])

Esta fórmula obtiene simplemente la tasa impositiva para la región actual, en la tabla Region. No necesita conocer o especificar la clave que conecta las tablas.

Contexto de varias filas

Además, DAX incluye funciones que iteran los cálculos sobre una tabla. Estas funciones pueden tener varias filas actuales y contextos de filas actuales. En términos de programación, puede crear fórmulas que repitan un bucle interno y externo.

Por ejemplo, suponga que un libro contiene una tabla Products y una tabla Sales. Es posible que desee pasar por la tabla de ventas completa, la cual está llena de transacciones que implican a varios productos, y encontrar la cantidad más grande que se haya pedido para cada producto en cualquiera de las transacciones.

En Excel, este cálculo requiere una serie de resúmenes intermedios, que tendrían que recompilarse si los datos cambiaran. Si es un usuario avanzado de Excel, podría compilar fórmulas de matriz que realizarían el trabajo. De forma alternativa, en una base de datos relacional podría escribir subselecciones anidadas.

Sin embargo, con DAX puede compilar una fórmula única que devuelve el valor correcto y los resultados se actualizan automáticamente cada vez que agregue datos a las tablas.

=MAXX(FILTER(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Para un tutorial detallado de esta fórmula, vea Función EARLIER (DAX).

Para abreviar, la función EARLIER almacena el contexto de la fila de la operación anterior a la operación actual. En todo momento, la función almacena en memoria dos conjuntos de contexto: un conjunto de contexto representa la fila actual para el bucle interno de la fórmula y el otro conjunto de contexto representa la fila actual para el bucle externo de la fórmula. DAX alimenta automáticamente los valores entre los dos bucles de forma que puede crear agregados complejos.

Contexto de la consulta

Contexto de la consulta hace referencia al subconjunto de datos que se recuperan implícitamente para una fórmula. Al colocar una medida u otro campo de valor en una celda en una tabla dinámica, el motor de PowerPivot examina los encabezados de columna y fila, segmentos de datos y los filtros de informe para determinar el contexto. A continuación, PowerPivot realiza los cálculos necesarios para rellenar cada celda en la tabla dinámica. El conjunto de datos que se recupera es el contexto de la consulta para cada celda.

Dado que el contexto puede cambiar según dónde se coloque la fórmula, los resultados de esta también cambian según si se utiliza en una tabla dinámica con muchas agrupaciones y filtros, o en una columna calculada sin filtros y un contexto mínimo.

Por ejemplo, suponga que crea esta fórmula sencilla que suma los valores de la columna Profit de la tabla Sales: =SUM('Sales'[Profit]). Si utiliza esta fórmula en una columna calculada dentro de la tabla Sales, los resultados para la fórmula serán los mismos que para la tabla completa, porque el contexto de la consulta para la fórmula siempre es el conjunto de datos completo de la tabla Sales. Los resultados reflejarán beneficios en todas las regiones, todos los productos, todos los años, etc.

Sin embargo, normalmente no desea ver los mismos resultados cientos de veces, pero desea obtener la ganancia correspondiente a un año determinado, un país determinado, un producto determinado o alguna combinación de estos y, posteriormente, obtener un total general.

En una tabla dinámica, es fácil cambiar el contexto agregando o quitando los encabezados de columna y fila, y agregando o quitando las segmentaciones de datos. Puede crear una fórmula como la anterior, en una medida, y, a continuación, colocarla en una tabla dinámica. Cada vez que agregue encabezados de columna o fila a la tabla dinámica, cambie el contexto de la consulta en el que se evalúe la medida. Las operaciones de segmentación de datos y filtrado también afectan al contexto. Por consiguiente, la misma fórmula, que se utiliza en una tabla dinámica, se evalúa en un contexto de la consulta diferente para cada celda.

Contexto del filtro

El contexto del filtro se agrega al especificar las restricciones de filtro en el conjunto de valores permitido en una columna o tabla, utilizando los argumentos para una fórmula. El contexto del filtro se aplica sobre otros contextos, como el contexto de la fila o el de la consulta.

Por ejemplo, una tabla dinámica calcula sus valores para cada celda según los encabezados de columna y fila, tal como se describe en la sección anterior en el contexto de la consulta. Sin embargo, dentro de las medidas o las columnas calculadas que agrega a la tabla dinámica, puede especificar las expresiones de filtro para controlar los valores que utiliza la fórmula. También puede borrar de forma selectiva los filtros en columnas específicas.

Para obtener más información acerca de cómo crear filtros dentro de fórmulas, vea Filtro FILTER (DAX).

Para obtener un ejemplo de cómo los filtros se pueden borrar para crear totales generales, vea Función ALL (DAX).

Para obtener ejemplos de cómo borrar selectivamente y aplicar filtros dentro de las fórmulas, vea Función ALLEXCEPT (DAX).

Por consiguiente, debe consultar la definición de las medidas o las fórmulas que se usan en una tabla dinámica para conocer el contexto del filtro al interpretar los resultados de las fórmulas.

Determinar el contexto de las fórmulas

Al crear una fórmula, PowerPivot para Excel comprueba primero la sintaxis general y, a continuación, comprueba los nombres de las columnas y las tablas que proporciona con las posibles columnas y las tablas del contexto actual. Si PowerPivot no pueden encontrar las columnas y tablas que especifica la fórmula, obtendrá un error.

El contexto se determina, según se describe en las secciones anteriores, utilizando las tablas disponibles en el libro, cualquier relación entre las tablas y los filtros que se hayan aplicado.

Por ejemplo, si ha importado recientemente algunos datos en una tabla nueva y no ha aplicado ningún filtro, todo el conjunto de columnas de la tabla forma parte del contexto actual. Si tiene varias tablas que se vinculan mediante relaciones y está trabajando en una tabla dinámica filtrada agregando los encabezados de columna y utilizando segmentaciones de datos, el contexto incluye las tablas relacionadas y cualquier filtro en los datos.

El contexto es un concepto eficaz que también puede dificultar la solución de los problemas con las fórmulas. Recomendamos comenzar con fórmulas y relaciones simples para ver cómo funciona el contexto y, posteriormente, empezar a experimentar con fórmulas simples en tablas dinámicas. La siguiente sección también proporciona algunos ejemplos de cómo las fórmulas utilizan tipos diferentes de contexto para devolver resultados de forma dinámica.

Ejemplos de contexto en fórmulas

  • La función RELATED expande el contexto de la fila actual para incluir los valores en una columna relacionada. Esto le permite realizar búsquedas. El ejemplo de este tema muestra la interacción del filtrado con el contexto de la fila.

  • La función FILTER le permite especificar las filas a incluir en el contexto actual. Los ejemplos de este tema también muestran cómo incrustar los filtros dentro de otras funciones que realizan los agregados.

  • La función ALL establece el contexto dentro de una fórmula. Puede utilizarlo para invalidar los filtros que se aplican como resultado del contexto de la consulta.

  • La función ALLEXCEPT le permite quitar todos los filtros excepto uno que especifique. Ambos temas incluyen ejemplos que le guían en el proceso de generación de fórmulas y le ayudan a entender los contextos complejos.

  • Las funciones EARLIER y EARLIEST le permiten recorrer las tablas y realizar cálculos, haciendo referencia a un valor de un bucle interno. Si conoce el concepto de recursividad y los bucles internos y externos, apreciará la eficacia que proporcionan las funciones EARLIER y EARLIEST. Si estos conceptos son nuevos para usted, debe seguir los pasos del ejemplo con atención para ver cómo se utilizan los contextos internos y externos en los cálculos.

Integridad referencial

En esta sección se tratan algunos conceptos avanzados relacionados con los valores que faltan en tablas PowerPivot conectadas por relaciones. Esta sección podría serle de utilidad si tiene libros con varias tablas y fórmulas complejas, y desea obtener ayuda para comprender los resultados.

Si no está familiarizado con los conceptos relativos a los datos relacionales, se recomienda leer primero el tema de introducción, Información general sobre relaciones.

Integridad referencial y relaciones PowerPivot

PowerPivot no requiere que se aplique integridad referencial entre dos tablas para definir una relación válida. En su lugar, se crea una fila en blanco en el extremo "uno" de cada relación de uno a varios y se usa para administrar todas las filas que no tienen correspondencia en la tabla relacionada. De hecho se comporta como una combinación externa de SQL.

En las tablas dinámicas, si se agrupan los datos en un extremo de la relación, todos los datos no coincidentes de la relación se agrupan y se incluyen como totales en una fila con un encabezado en blanco. El encabezado en blanco es aproximadamente el equivalente al "miembro desconocido."

Descripción del miembro desconocido

El concepto del miembro desconocido le resultará probablemente familiar si ha trabajado con sistemas de base de datos multidimensionales, como SQL Server Analysis Services. Si el término es nuevo para usted, el siguiente ejemplo explica lo que es el miembro desconocido y cómo afecta a los cálculos.

Supongamos que está creando un cálculo que suma las ventas mensuales de cada almacén, pero en una columna de la tabla Ventas falta un valor para el nombre del almacén. Dado que las tablas Almacén y Ventas están conectadas por el nombre de almacén, ¿qué espera que ocurra en la fórmula? ¿Cómo debería la tabla dinámica agrupar o mostrar las cifras de ventas que no están relacionadas con un almacén existente?

Este problema es común en almacenamiento de datos, donde las tablas de datos grandes se deben relacionar lógicamente con tablas de dimensiones que contienen información sobre los almacenes, regiones y otros atributos que se utilizan para categorizar y calcular hechos. Para resolver el problema, cualquier nuevo hecho que no esté relacionado con una entidad existente se asignará temporalmente al miembro desconocido. Por eso los hechos no relacionados aparecerán agrupados en una Tabla dinámica bajo un encabezado en blanco.

Tratamiento de valores en blanco frente a la fila en blanco

Los valores en blanco son diferentes de las filas en blanco que se agregan para alojar el miembro desconocido. El valor en blanco es un valor especial que se utiliza para representar valores NULL, cadenas vacías y otros valores perdidos. Para obtener más información sobre el valor en blanco, así como otros tipos de datos de DAX, vea Tipos de datos admitidos en libros PowerPivot.