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 muy importante para generar fórmulas 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 este artículo proporciona vínculos a ejemplos detallados que ilustran cómo cambian los resultados de las fórmulas según el contexto.
Descripción de contexto
Las fórmulas de Power Pivot 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 aquello que permite llevar a cabo análisis dinámicos. Entender el contexto es importante para generar fórmulas y solucionar problemas.
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. También hay algunas funciones (EARLIER y EARLIEST) que obtienen un valor de la fila actual y, a continuación, usan ese valor al realizar una operación en toda una tabla.
El contexto de consulta hace referencia al subconjunto de datos que se crea 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.
Contexto de fila
Si crea una fórmula en una columna calculada, el contexto de 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 obtener un tutorial detallado de esta fórmula, vea la Función EARLIER.
Para abreviar, la función EARLIER almacena el contexto de fila de la operación anterior a la operación actual. En todo momento, la función almacena dos conjuntos de contexto en la memoria: un conjunto de contexto representa la fila actual para el bucle interno de la fórmula y 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 un campo de medida u otro valor en una celda de una tabla dinámica, el motor de Power Pivot examina los encabezados de fila y columna, las segmentaciones de datos y los filtros de informe para determinar el contexto. A continuación, Power Pivot 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 simple que suma los valores de la columna Profit de la tabla Sales :
=SUMA('Ventas'[Beneficio])
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, sino que desea obtener la ganancia correspondiente a un determinado año, país o región, o producto 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 luego colocarla en una tabla dinámica. Siempre que agregue encabezados de columna o fila a la tabla dinámica, cambie el contexto de la consulta en el que se evalúa 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 consulta diferente para cada celda.
Contexto de filtro
El contexto de filtro se agrega al especificar restricciones de filtro en el conjunto de valores permitido en una columna o tabla, utilizando 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 columnas calculadas que agregue a la tabla dinámica, puede especificar expresiones de filtro para controlar los valores que usa la fórmula. También puede borrar de forma selectiva los filtros en columnas específicas.
Para obtener más información sobre cómo crear filtros dentro de fórmulas, vea Funciones de filtro.
Para obtener un ejemplo de cómo se pueden borrar los filtros para crear totales generales, vea la función ALL.
Para obtener ejemplos de cómo borrar selectivamente y aplicar filtros dentro de fórmulas, vea la función ALLEXCEPT.
Por lo tanto, debe revisar la definición de medidas o fórmulas usadas en una tabla dinámica para que conozca el contexto de filtro al interpretar los resultados de las fórmulas.
Determinar el contexto de las fórmulas
Al crear una fórmula, Power Pivot para Excel comprueba primero la sintaxis general y, a continuación, los nombres de las columnas y las tablas que proporciona con las posibles columnas y las tablas del contexto actual. Si Power Pivot no puede encontrar las columnas y tablas que especifica la fórmula, aparecerá 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, debería 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 analizan algunos conceptos avanzados relacionados con los valores perdidos en tablas de Power Pivot que están 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 conoce los conceptos de datos relacionales, se recomienda que lea primero el tema de introducción, Información general de las relaciones.
Integridad referencial y relaciones de Power Pivot
Power Pivot 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 utiliza 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.
Suponga que está creando un cálculo que suma las ventas mensuales de cada tienda, pero falta un valor para el nombre de almacén en una columna de la tabla Ventas . Dado que las tablas store y Sales están conectadas por el nombre del almacén, ¿qué esperaría que sucediera 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 acerca del valor en blanco así como de otros tipos de datos DAX, vea Tipos de datos en modelos de datos.