Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Expresiones de análisis de datos (DAX) es un lenguaje de expresiones de fórmula que se usa en Analysis Services, Power BI y Power Pivot en Excel. DAX Las fórmulas incluyen funciones, operadores y valores para realizar cálculos y consultas avanzados en datos de tablas y columnas relacionadas en modelos de datos tabulares.
En este artículo solo se proporciona una introducción básica a los conceptos más importantes de DAX. Describe DAX como se aplica a todos los productos que lo usan. Es posible que algunas funcionalidades no se apliquen a determinados productos o casos de uso. Consulte la documentación del producto que describe su implementación concreta de DAX.
Cálculos
DAX Las fórmulas se usan en medidas, columnas calculadas, tablas calculadas y seguridad de nivel de fila.
Medidas
Las medidas son fórmulas de cálculo dinámicos en las que los resultados cambian en función del contexto. Las medidas se usan en los informes que admiten la combinación y el filtrado de datos del modelo mediante varios atributos, como un informe de Power BI o una tabla dinámica de Excel o un gráfico dinámico. Las medidas se crean mediante la DAX barra de fórmulas del diseñador de modelos.
Una fórmula de una medida puede usar funciones de agregación estándar creadas automáticamente mediante la característica Autosum, como COUNT o SUM, o puede definir su propia fórmula mediante la DAX barra de fórmulas. Las medidas con nombre se pueden pasar como argumento a otras medidas.
Al definir la fórmula de una medida en la barra de fórmulas, una característica de información sobre herramientas muestra una vista previa de los resultados que obtendríamos como total en el contexto actual, pero aparte de esto los resultados no se muestran de inmediato en ningún lugar. La razón por la que no puede ver los resultados (filtrados) del cálculo inmediatamente es porque el resultado de una medida no se puede determinar sin contexto. Para evaluar una medida, se requiere una aplicación cliente de informes que pueda proporcionar el contexto necesario para recuperar los datos pertinentes para cada celda y, a continuación, evaluar la expresión para cada celda. Ese cliente puede ser una tabla dinámica de Excel o un gráfico dinámico, un informe de Power BI o una expresión de tabla en una DAX consulta en SQL Server Management Studio (SSMS).
Independientemente del cliente, se ejecuta una consulta independiente para cada celda de los resultados. Es decir, cada combinación de encabezados de fila y columna en una tabla dinámica, o cada selección de segmentaciones y filtros en un informe de Power BI, genera un subconjunto diferente de datos sobre los que se calcula la medida. Por ejemplo, con esta fórmula de medida muy sencilla:
Total Sales = SUM([Sales Amount])
Cuando un usuario coloca la medida TotalSales en un informe y, a continuación, coloca la columna Categoría de producto de una tabla Product en Filtros, la suma de Importe de ventas se calcula y se muestra para cada categoría de producto.
A diferencia de las columnas calculadas, la sintaxis de una medida incluye el nombre de la medida que precede a la fórmula. En el ejemplo que acaba de proporcionar, el nombre Ventas totales aparece delante de la fórmula. Después de crear una medida, el nombre y su definición aparecen en la lista de campos de la aplicación cliente de informes, y, en función de las perspectivas y roles, están disponibles para todos los usuarios del modelo.
Para más información, consulte: Medidas en Power BI DesktopMedidas en Analysis ServicesMedidas en Power Pivot
Columnas calculadas
Una columna calculada es una columna que se agrega a una tabla existente (en el diseñador de modelos) y, a continuación, crea una DAX fórmula que define los valores de la columna. Cuando una columna calculada contiene una fórmula válida DAX , los valores se calculan para cada fila tan pronto como se escriba la fórmula. A continuación, los valores se almacenan en el modelo de datos en memoria. Por ejemplo, en una tabla Date, cuando la fórmula se escribe en la barra de fórmulas:
= [Calendar Year] & " Q" & [Calendar Quarter]
Un valor para cada fila de la tabla se calcula tomando valores de la columna Año del calendario (en la misma tabla Date), agregando un espacio y la letra mayúscula Q y, a continuación, agregando los valores de la columna Calendar Quarter (en la misma tabla Date). El resultado de cada fila de la columna calculada se calcula inmediatamente y aparece, por ejemplo, como 2017 Q1. Los valores de columna solo se vuelven a calcular si la tabla o cualquier tabla relacionada se procesa (actualizar) o el modelo se descarga de la memoria y, a continuación, se vuelve a cargar, como al cerrar y volver a abrir un archivo de Power BI Desktop.
Para obtener más información, consulte: Columnas calculadas en Power BI DesktopColumnas calculadas de Analysis ServicesColumnas calculadas en Power Pivot.
Tablas calculadas
Una tabla calculada es un objeto calculado, basado en una expresión de fórmula, derivada de todas o parte de otras tablas del mismo modelo. En lugar de consultar y cargar valores en las columnas de la nueva tabla desde un origen de datos, una DAX fórmula define los valores de la tabla.
Las tablas calculadas pueden ser útiles en una dimensión realizadora de roles. Un ejemplo es la tabla Date, como OrderDate, ShipDate o DueDate, según la relación de clave externa. Al crear una tabla calculada para ShipDate explícitamente, se obtiene una tabla independiente que está disponible para las consultas, lo que es totalmente operable como cualquier otra tabla. Las tablas calculadas también son útiles al configurar un conjunto de filas filtrado o un subconjunto o superconjunto de columnas de otras tablas existentes. Esto le permite mantener intacta la tabla original al crear variaciones de esa tabla para admitir escenarios específicos.
Las tablas calculadas admiten relaciones con otras tablas. Las columnas de la tabla calculada tienen tipos de datos, formato y pueden pertenecer a una categoría de datos. Las tablas calculadas se pueden denominar, mostrar u ocultar, como cualquier otra tabla. Las tablas calculadas se vuelven a calcular si alguna de las tablas de las que extraen datos se actualiza o se renueva.
Para más información, consulte: Tablas calculadas en Power BI DesktopTablas calculadas en Analysis Services.
Seguridad a nivel de fila
Con la seguridad a nivel de fila, una fórmula de DAX debe evaluarse como una condición booleana TRUE
/FALSE
, definiendo qué filas se pueden devolver mediante los resultados de una consulta de miembros de un rol determinado. Por ejemplo, en el caso de los miembros del rol Sales, la tabla Customers con la siguiente fórmula DAX:
= Customers[Country] = "USA"
Los miembros del rol de Ventas solo podrán ver los datos de los clientes en EE. UU., y los agregados, como SUM, solo se devuelven para los clientes de EE. UU. La seguridad de nivel de fila no está disponible en Power Pivot en Excel.
Al definir la seguridad a nivel de fila mediante la fórmula DAX, está creando un conjunto de filas permitido. Esto no deniega el acceso a otras filas; en su lugar, simplemente no se devuelven como parte del conjunto de filas permitido. Otros roles pueden permitir el acceso a las filas excluidas por la DAX fórmula. Si un usuario es miembro de otro rol y la seguridad de nivel de fila de ese rol permite el acceso a ese conjunto de filas concreto, el usuario puede ver los datos de esa fila.
Las fórmulas de seguridad de nivel de fila se aplican a las filas especificadas, así como a las filas relacionadas. Si una tabla tiene varias relaciones, los filtros aplican seguridad a la relación que esté activa. Las fórmulas de seguridad de nivel de fila se intersecrán con otras fórmulas definidas para las tablas relacionadas.
Para obtener más información, consulte: Seguridad de nivel de fila (RLS) con Power BIRoles en Analysis Services
Consultas
DAX Las consultas se pueden crear y ejecutar en SQL Server Management Studio (SSMS) y herramientas de código abierto como DAX Studio (daxstudio.org). A diferencia DAX de las fórmulas de cálculo, que solo se pueden crear en modelos de datos tabulares, DAX las consultas también se pueden ejecutar en modelos multidimensionales de Analysis Services. DAX Las consultas suelen ser más fáciles de escribir y más eficaces que las consultas de expresiones de datos multidimensionales (MDX).
Una DAX consulta es una instrucción, similar a una instrucción SELECT en T-SQL. El tipo de DAX consulta más básico es una declaración evaluate. Por ejemplo
EVALUATE
( FILTER ( 'DimProduct', [SafetyStockLevel] < 200 ) )
ORDER BY [EnglishProductName] ASC
Devuelve en Resultados una tabla que muestra solo los productos con un SafetyStockLevel inferior a 200, en orden ascendente por EnglishProductName.
Puede crear medidas como parte de la consulta. Las medidas solo existen durante la consulta. Para más información, consulte DAX consultas.
Fórmulas
DAX Las fórmulas son esenciales para crear cálculos en columnas calculadas y medidas, y proteger los datos mediante la seguridad de nivel de fila. Para crear fórmulas para columnas y medidas calculadas, use la barra de fórmulas en la parte superior de la ventana del diseñador de modelos o el DAX Editor. A fin de crear fórmulas para la seguridad a nivel de fila, use el cuadro de diálogo Administrador de roles o Administrar roles. La información de esta sección está pensada para que comiences a comprender los conceptos básicos de las DAX fórmulas.
Conceptos básicos de fórmulas
DAX las fórmulas pueden ser muy simples o bastante complejas. En la tabla siguiente se muestran algunos ejemplos de fórmulas simples que se pueden usar en una columna calculada.
Fórmula | Definición |
---|---|
= TODAY() |
Inserta la fecha de hoy en cada fila de una columna calculada. |
= 3 |
Inserta el valor 3 en cada fila de una columna calculada. |
= [Column1] + [Column2] |
Agrega los valores de la misma fila de [Column1] y [Column2] y coloca los resultados en la columna calculada de la misma fila. |
Independientemente de si la fórmula que cree es sencilla o compleja, puede usar los pasos siguientes al compilar una fórmula:
Cada fórmula debe comenzar con un signo igual (=).
Puede escribir o seleccionar un nombre de función o escribir una expresión.
Comience a escribir las primeras letras de la función o el nombre que desee y Autocompletar muestra una lista de funciones, tablas y columnas disponibles. Presione TAB para agregar un elemento de la lista Autocompletar a la fórmula.
También puede hacer clic en el botón Fx para mostrar una lista de funciones disponibles. Para seleccionar una función en la lista desplegable, use las teclas de dirección para resaltar el elemento y haga clic en Aceptar para agregar la función a la fórmula.
Proporcione los argumentos a la función seleccionándolos en una lista desplegable de tablas y columnas posibles, o escribiendo valores.
Compruebe si hay errores de sintaxis: asegúrese de que todos los paréntesis están cerrados y las columnas, las tablas y los valores se hacen referencia correctamente.
Presione ENTRAR para aceptar la fórmula.
Nota:
En una columna calculada, tan pronto como escriba la fórmula y se valide la fórmula, la columna se rellena con valores. En una medida, cuando se presiona ENTRAR, se guarda la definición de la medida en la tabla. Si una fórmula no es válida, se muestra un error.
En este ejemplo, echemos un vistazo a una fórmula en una medida denominada Días en el trimestre actual:
Days in Current Quarter = COUNTROWS( DATESBETWEEN( 'Date'[Date], STARTOFQUARTER( LASTDATE('Date'[Date])), ENDOFQUARTER('Date'[Date])))
Esta medida se usa para crear una relación de comparación entre un período incompleto y el período anterior. La fórmula debe tener en cuenta la proporción del período transcurrido y compararla con la misma proporción en el período anterior. En este caso, [Days Current Quarter to Date]/[Days in Current Quarter] nos da la proporción transcurrida en el período actual.
Esta fórmula contiene los siguientes elementos:
Elemento de la fórmula | Descripción |
---|---|
Days in Current Quarter |
Nombre de la medida. |
= |
El signo igual (=) comienza la fórmula. |
COUNTROWS |
COUNTROWS cuenta el número de filas de la tabla Date. |
() |
Paréntesis de apertura y cierre especifica argumentos. |
DATESBETWEEN |
La DATESBETWEEN función devuelve las fechas entre la última fecha para cada valor de la columna Date de la tabla Date. |
'Date' |
Especifica la tabla de fechas. Las tablas están entre comillas simples. |
[Date] |
Especifica la columna Date de la tabla Date. Las columnas están entre corchetes. |
, |
|
STARTOFQUARTER |
La STARTOFQUARTER función devuelve la fecha del inicio del trimestre. |
LASTDATE |
La LASTDATE función devuelve la última fecha del trimestre. |
'Date' |
Especifica la tabla de fechas. |
[Date] |
Especifica la columna Date de la tabla Date. |
, |
|
ENDOFQUARTER |
La función ENDOFQUARTER |
'Date' |
Especifica la tabla Date. |
[Date] |
Especifica la columna Date de la tabla Date. |
Uso de la función Autocompletar fórmula
AutoComplete le ayuda a escribir una sintaxis de fórmula válida proporcionando opciones para cada elemento de la fórmula.
La función Autocompletar fórmula se puede usar en medio de una fórmula existente con funciones anidadas. El texto inmediatamente antes del punto de inserción se usa para mostrar valores en la lista desplegable y todo el texto después de que el punto de inserción permanezca sin cambios.
Autocompletar no inserta el paréntesis de cierre de las funciones ni empareja paréntesis automáticamente. Debe asegurarse de que cada función sea sintácticamente correcta o no pueda guardar ni usar la fórmula.
Uso de varias funciones en una fórmula
Las funciones se pueden anidar, lo que significa que los resultados de una función se usan como argumento de otra. Se pueden anidar hasta 64 niveles de funciones en columnas calculadas. Con todo, el anidamiento puede dificultar la creación de fórmulas o solucionar problemas en ellas. Muchas funciones están diseñadas para usarse únicamente como funciones anidadas. Estas funciones devuelven una tabla, que no se puede guardar directamente como resultado; debe proporcionarse como entrada para una función de tabla. Por ejemplo, las funciones SUMX, AVERAGEXy MINX todas requieren una tabla como primer argumento.
Funciones
Una función es una fórmula con nombre dentro de una expresión. La mayoría de las funciones tienen argumentos obligatorios y opcionales, también conocidos como parámetros, como entrada. Cuando se ejecuta la función, se devuelve un valor. DAX incluye funciones que puede usar para realizar cálculos mediante fechas y horas, crear valores condicionales, trabajar con cadenas, realizar búsquedas basadas en relaciones y la capacidad de recorrer en iteración una tabla para realizar cálculos recursivos. Si está familiarizado con las fórmulas de Excel, muchas de estas funciones aparecerán muy similares; sin embargo, las DAX fórmulas son diferentes de las siguientes maneras importantes:
Una DAX función siempre hace referencia a una columna completa o una tabla. Si desea usar solo valores concretos de una tabla o columna, puede agregar filtros a la fórmula.
Si necesita personalizar los cálculos por fila, DAX proporciona funciones que permiten usar el valor de fila actual o un valor relacionado como un tipo de parámetro, para realizar cálculos que varían según el contexto. Para comprender cómo funcionan estas funciones, consulte Contexto en este artículo.
DAX incluye muchas funciones que devuelven una tabla, en lugar de un valor. La tabla no se muestra en un cliente de informes, pero se usa para proporcionar entrada a otras funciones. Por ejemplo, puede recuperar una tabla y, a continuación, contar los valores distintos en ella o calcular sumas dinámicas entre tablas o columnas filtradas.
DAX Las funciones incluyen una variedad de funciones de inteligencia de tiempo . Estas funciones permiten definir o seleccionar intervalos de fechas y realizar cálculos dinámicos basados en estas fechas o intervalos. Por ejemplo, puede comparar sumas entre períodos paralelos.
Funciones de agregación
Las funciones de agregación calculan un valor (escalar), como count, sum, average, minimum o maximum para todas las filas de una columna o tabla, tal como se define en la expresión. Para más información, consulte Funciones de agregación.
Funciones de fecha y hora
Las funciones de fecha y hora en DAX son similares a las funciones de fecha y hora en Microsoft Excel. Sin embargo, las funciones DAX se basan en un tipo de datos dataime a partir del 1 de marzo de 1900. Para más información, consulte Funciones de fecha y hora.
Funciones de filtro
Las funciones de filtro en DAX devuelven tipos de datos específicos, buscan valores en cuentos relacionados y filtran por valores relacionados. Las funciones de búsqueda funcionan mediante tablas y relaciones, como una base de datos. Las funciones de filtrado permiten manipular el contexto de datos para crear cálculos dinámicos. Para más información, consulte Funciones de filtro.
Funciones financieras
Las funciones financieras en DAX se utilizan en fórmulas que realizan cálculos financieros, como el valor neto actual y la tasa de rendimiento. Estas funciones son similares a las funciones financieras que se usan en Microsoft Excel. Para obtener más información, consulte Funciones financieras.
Funciones de información
Una función de información examina la celda o fila que se proporciona como argumento y indica si el valor coincide con el tipo esperado. Por ejemplo, la función ISERROR devuelve TRUE
si el valor al que hace referencia contiene un error. Para más información, consulte Funciones de información.
Funciones lógicas
Las funciones lógicas actúan sobre una expresión para devolver información sobre los valores de la expresión. Por ejemplo, la función TRUE
le permite saber si una expresión que está evaluando devuelve un valor TRUE
. Para más información, consulte Funciones lógicas.
Funciones matemáticas y trigonométricas
Las funciones matemáticas de DAX son muy similares a las funciones matemáticas y trigonométricas de Excel. Existen algunas diferencias menores en los tipos de datos numéricos usados por DAX las funciones. Para más información, consulte Funciones matemáticas y trigonométricas.
Otras funciones
Estas funciones realizan acciones únicas a las que no puede definir ninguna de las categorías a las que pertenecen la mayoría de las demás funciones. Para más información, consulte Otras funciones.
Funciones de relación
Las funciones de relación de DAX permiten devolver valores de otra tabla relacionada, especificar una relación determinada que se usará en una expresión y especificar la dirección de filtrado cruzado. Para más información, consulte Funciones de relación.
Funciones estadísticas
Las funciones estadísticas calculan valores relacionados con distribuciones estadísticas y probabilidad, como la desviación estándar y el número de permutaciones. Para más información, consulte Funciones estadísticas.
Funciones de texto
Las funciones de texto en DAX son muy similares a sus homólogos en Excel. Puede devolver parte de una cadena, buscar texto dentro de una cadena o concatenar valores de cadena. DAX también proporciona funciones para controlar los formatos de fechas, horas y números. Para más información, consulte Funciones de texto.
Funciones de inteligencia temporal
Las funciones de inteligencia de tiempo proporcionadas DAX permiten crear cálculos que usan conocimientos integrados sobre calendarios y fechas. Mediante el uso de intervalos de fecha y hora en combinación con agregaciones o cálculos, puede crear comparaciones significativas en períodos de tiempo comparables para ventas, inventario, etc. Para más información, consulte Funciones de inteligencia de tiempo (DAX).
Funciones de manipulación de tablas
Estas funciones devuelven una tabla o manipulan las tablas existentes. Por ejemplo, usando ADDCOLUMNS, puede agregar columnas calculadas a una tabla especificada, o bien puede devolver una tabla de resumen sobre un conjunto de grupos con la función SUMMARIZECOLUMNS. Para más información, consulte Funciones de manipulación de tablas.
Variables
Puede crear variables dentro de una expresión mediante VAR. VAR técnicamente no es una función, es una palabra clave para almacenar el resultado de una expresión como una variable con nombre. Después, esa variable se puede pasar como argumento a otras expresiones de medida. Por ejemplo:
VAR
TotalQty = SUM ( Sales[Quantity] )
Return
IF (
TotalQty > 1000,
TotalQty * 0.95,
TotalQty * 1.25
)
En este ejemplo, TotalQty se puede pasar como una variable con nombre a otras expresiones. Las variables pueden ser de cualquier tipo de datos escalar, incluidas las tablas. El uso de variables en las DAX fórmulas puede ser increíblemente eficaz.
Tipos de datos
Puede importar datos en un modelo desde muchos orígenes de datos diferentes que puedan admitir diferentes tipos de datos. Al importar datos en un modelo, los datos se convierten en uno de los tipos de datos del modelo tabular. Cuando se utilizan los datos del modelo en un cálculo, estos se convierten a un tipo de datos DAX para el tiempo que dura el cálculo y el resultado obtenido. Al crear una DAX fórmula, los términos usados en la fórmula determinarán automáticamente el tipo de datos de valor devuelto.
DAX admite los siguientes tipos de datos:
Tipo de datos en el modelo | Tipo de datos en DAX | Descripción |
---|---|---|
Whole Number |
Valor entero de 64 bits (ocho bytes) 1, 2 | Números que no tienen posiciones decimales. Los enteros pueden ser números positivos o negativos, pero deben ser números enteros entre -9.223.372.036.854.775.808 (-2^63) y 9.223.372.036.854.775.807 (2^63-1). |
Decimal Number |
Un número real de 64 bits (ocho bytes) 1, 2 | Los números reales son números que pueden tener posiciones decimales. Los números reales cubren una amplia gama de valores: Valores negativos de -1,79E +308 a -2.23E -308 Cero Valores positivos de 2,23E -308 a 1,79E + 308 Sin embargo, el número de dígitos significativos se limita a 17 dígitos decimales. |
Boolean |
Boolean | Un valor Verdadero o Falso. |
Text |
Cuerda | Cadena de datos de caracteres Unicode. Puede ser cadenas, números o fechas representados en un formato de texto. |
Date |
Fecha y hora | Fechas y horas en una representación de fecha y hora aceptada. Las fechas válidas son todas las fechas posteriores al 1 de marzo de 1900. |
Currency |
Divisa | El tipo de datos Moneda permite valores entre -922,337,203,685,477.5808 y 922,337,203,685,477.5807 con cuatro dígitos decimales de precisión fija. |
N/A |
En blanco | Un valor en blanco es un tipo de datos en DAX que representa y reemplaza los valores NULL de SQL. Puede crear un espacio en blanco mediante la BLANK función y probar los espacios en blanco mediante la función lógica , ISBLANK. |
Los modelos de datos tabulares también incluyen el tipo de datos Table como entrada o salida en muchas DAX funciones. Por ejemplo, la FILTER función toma una tabla como entrada y genera otra tabla que contiene solo las filas que cumplen las condiciones de filtro. Mediante la combinación de funciones de tabla con funciones de agregación, puede realizar cálculos complejos en conjuntos de datos definidos dinámicamente.
Aunque los tipos de datos normalmente se establecen automáticamente, es importante comprender los tipos de datos y cómo se aplican, en particular, a DAX las fórmulas. Los errores en fórmulas o resultados inesperados, por ejemplo, suelen deberse al uso de un operador determinado que no se puede usar con un tipo de datos especificado en un argumento. Por ejemplo, la fórmula , = 1 & 2
devuelve un resultado de cadena de 12. Sin embargo, = "1" + "2"
la fórmula devuelve un resultado entero de 3.
Contexto
El contexto es un concepto importante para comprender al crear DAX fórmulas. El contexto es lo que le permite realizar análisis dinámicos, ya que los resultados de un cambio de fórmula reflejan la selección actual de filas o celdas y también cualquier dato relacionado. Comprender el contexto y usar el contexto de forma eficaz son fundamentales para crear análisis dinámicos, de alto rendimiento y para solucionar problemas en las fórmulas.
Las fórmulas de los modelos tabulares se pueden evaluar en un contexto diferente, en función de otros elementos de diseño:
- Los filtros aplicados en una tabla dinámica o un informe
- Filtros definidos dentro de una fórmula
- Relaciones especificadas mediante funciones especiales dentro de una fórmula
Hay diferentes tipos de contexto: contexto de fila, contexto de consulta y contexto de filtro.
Contexto de fila
El contexto de fila se puede considerar como "la fila actual". Si crea una fórmula en una columna calculada, el contexto de fila de esa fórmula incluye los valores de todas las columnas de la fila actual. Si la tabla está relacionada con otra tabla, el contenido también incluye todos los valores de la otra tabla relacionada con la fila actual.
Por ejemplo, supongamos que crea una columna calculada, = [Freight] + [Tax]
, que agrega valores de dos columnas, Flete e Impuestos, de la misma tabla. Esta fórmula obtiene automáticamente solo los valores de la fila actual en las columnas especificadas.
El contexto de fila también sigue las relaciones que se han definido entre tablas, incluidas las relaciones definidas dentro de una columna calculada mediante DAX fórmulas, para determinar qué filas de las tablas relacionadas están asociadas a la fila actual.
Por ejemplo, la fórmula siguiente usa la RELATED función para capturar un valor fiscal de una tabla relacionada, en función de la región a la que se envió el pedido. El valor fiscal se determina mediante el valor de la región de la tabla actual, la búsqueda de la región en la tabla relacionada y, a continuación, la obtención de la tasa fiscal de esa región de la tabla relacionada.
= [Freight] + RELATED('Region'[TaxRate])
Esta fórmula obtiene la tasa fiscal de la región actual de la tabla Region y la agrega al valor de la columna Freight. En DAX las fórmulas, no es necesario conocer ni especificar la relación específica que conecta las tablas.
Contexto de varias filas
DAX incluye funciones que iteran los cálculos sobre una tabla. Estas funciones pueden tener varias filas actuales, cada una con su propio contexto de fila. En esencia, estas funciones permiten crear fórmulas que realizan operaciones de forma recursiva sobre un bucle interno y externo.
Por ejemplo, supongamos que el modelo contiene una tabla Products y una tabla Sales . Es posible que los usuarios quieran pasar por toda la tabla de ventas, que está llena de transacciones que implican varios productos, y encontrar la mayor cantidad ordenada para cada producto en cualquier transacción.
Con DAX puede crear una única fórmula que devuelva el valor correcto y los resultados se actualizan automáticamente cada vez que un usuario agrega datos a las tablas.
= MAXX(FILTER(Sales,[ProdKey] = EARLIER([ProdKey])),Sales[OrderQty])
Para obtener un ejemplo detallado de esta fórmula, vea EARLIER.
En resumen, la EARLIER función almacena el contexto de fila de la operación que precede 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 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 para que pueda crear agregados complejos.
Contexto de consulta
El contexto de consulta hace referencia al subconjunto de datos que se recuperan implícitamente para una fórmula. Por ejemplo, cuando un usuario coloca una medida o un campo en un informe, el motor examina los encabezados de fila y columna, las segmentaciones y los filtros de informe para determinar el contexto. A continuación, las consultas necesarias se ejecutan en los datos del modelo para obtener el subconjunto correcto de datos, realizar los cálculos definidos por la fórmula y, a continuación, rellenar los valores en el informe.
Dado que el contexto cambia en función de dónde coloque la fórmula, los resultados de la fórmula también pueden cambiar. Por ejemplo, supongamos que crea una fórmula que suma los valores de la columna Profit de la tabla Sales : = SUM('Sales'[Profit])
. Si usa esta fórmula en una columna calculada dentro de la tabla Sales , los resultados de la fórmula serán los mismos para toda la tabla, ya que el contexto de consulta de la fórmula es siempre el conjunto de datos completo de la tabla Sales . Los resultados tendrán beneficios para todas las regiones, todos los productos, todos los años, etc.
Sin embargo, los usuarios normalmente no quieren ver el mismo resultado cientos de veces, sino que quieren obtener el beneficio de un año determinado, un país determinado, un producto determinado o alguna combinación de estos, y luego obtener un total general.
En un informe, el contexto se modifica filtrando, añadiendo o eliminando campos, y utilizando segmentaciones de datos. Para cada cambio, el contexto de consulta en el que se evalúa la medida. Por lo tanto, la misma fórmula, que se usa en una medida, se evalúa en un contexto de consulta diferente para cada celda.
Contexto de filtro
El contexto de filtro es el conjunto de valores permitidos en cada columna o en los valores recuperados de una tabla relacionada. Los filtros se pueden aplicar a la columna del diseñador o en la capa de presentación (informes y tablas dinámicas). Los filtros también se pueden definir explícitamente mediante expresiones de filtro dentro de la fórmula.
El contexto de filtro se agrega cuando se especifican restricciones de filtro en el conjunto de valores permitidos en una columna o tabla, mediante el uso de argumentos en una fórmula. El contexto de filtro se aplica encima de otros contextos, como el contexto de fila o el contexto de consulta.
En los modelos tabulares, hay muchas maneras de crear contexto de filtro. En el contexto de los clientes que pueden consumir el modelo, como los informes de Power BI, los usuarios pueden crear filtros sobre la marcha agregando segmentaciones o filtros de informe en los encabezados de columna y fila. También puede especificar expresiones de filtro directamente dentro de la fórmula, para especificar valores relacionados, para filtrar tablas que se usan como entradas o para obtener dinámicamente el contexto de los valores que se usan en los cálculos. También puede borrar o borrar selectivamente los filtros en columnas concretas. Esto es muy útil al crear fórmulas que calculan totales generales.
Para obtener más información sobre cómo crear filtros dentro de fórmulas, consulte función FILTER (DAX). Para obtener un ejemplo de cómo se pueden borrar los filtros para crear totales generales, vea la ALL función (DAX).
Para obtener ejemplos de cómo borrar y aplicar filtros de forma selectiva dentro de las fórmulas, vea ALLEXCEPT.
Determinación del contexto en fórmulas
Al crear una DAX fórmula, la fórmula se prueba primero para obtener una sintaxis válida y, a continuación, se prueba para asegurarse de que los nombres de las columnas y tablas incluidas en la fórmula se pueden encontrar en el contexto actual. Si no se encuentra ninguna columna o tabla especificada por la fórmula, se devuelve un error.
El contexto durante las operaciones de validación (y actualización) se determina como se describe en las secciones anteriores, mediante el uso de las tablas disponibles en el modelo, las relaciones entre las tablas y los filtros que se han aplicado.
Por ejemplo, si acaba de importar algunos datos en una nueva tabla y no está relacionado con ninguna otra tabla (y no ha aplicado ningún filtro), el contexto actual es todo el conjunto de columnas de la tabla. Si la tabla está vinculada por relaciones con otras tablas, el contexto actual incluye las tablas relacionadas. Si agregamos una columna de la tabla a un informe que tenga Segmentación de datos y puede que algún filtro de informe, el contexto de la fórmula es el subconjunto de datos de cada celda del informe.
El contexto es un concepto eficaz que también puede dificultar la solución de problemas de fórmulas. Se recomienda comenzar con fórmulas y relaciones simples para ver cómo funciona el contexto. En la sección siguiente se proporcionan algunos ejemplos de cómo las fórmulas usan diferentes tipos de contexto para devolver resultados dinámicamente.
Operadores
El DAX lenguaje usa cuatro tipos diferentes de operadores de cálculo en fórmulas:
- Operadores de comparación para comparar valores y devolver un valor lógico
TRUE
"FALSE". - Operadores aritméticos para realizar cálculos aritméticos que devuelven valores numéricos.
- Operadores de concatenación de texto para combinar dos o más cadenas de texto.
- Operadores lógicos que combinan dos o más expresiones para devolver un único resultado.
Para obtener información detallada sobre los operadores usados en las fórmulas DAX, vea DAX operadores.
Trabajar con tablas y columnas
Las tablas de modelos de datos tabulares tienen un aspecto similar a las tablas de Excel, pero son diferentes de la manera en que funcionan con datos y con fórmulas:
- Las fórmulas solo funcionan con tablas y columnas, no con celdas individuales, referencias de rango o matrices.
- Las fórmulas pueden usar relaciones para obtener valores de tablas relacionadas. Los valores que se recuperan siempre están relacionados con el valor de fila actual.
- No puede haber datos irregulares o "desiguales", como sí puede ocurrir en una hoja de cálculo de Excel. Cada fila de una tabla debe contener el mismo número de columnas. Sin embargo, puede tener valores vacíos en algunas columnas. Las tablas de datos de Excel y las tablas de datos del modelo tabular no son intercambiables.
- Dado que se establece un tipo de datos para cada columna, cada valor de esa columna debe ser del mismo tipo.
Referencia a tablas y columnas en fórmulas
Puede hacer referencia a cualquier tabla y columna mediante su nombre. Por ejemplo, la siguiente fórmula ilustra cómo hacer referencia a las columnas de dos tablas usando el nombre completo:
= SUM('New Sales'[Amount]) + SUM('Past Sales'[Amount])
Cuando se evalúa una fórmula, el diseñador de modelos comprueba primero la sintaxis general y, a continuación, comprueba los nombres de columnas y tablas que se proporcionan con las posibles columnas y tablas en el contexto actual. Si el nombre es ambiguo o si no se encuentra la columna o la tabla, obtendrá un error en la fórmula (una cadena #ERROR en lugar de un valor de datos en celdas donde se produce el error). Para obtener más información sobre los requisitos de nomenclatura de tablas, columnas y otros objetos, consulte Requisitos de nomenclatura en DAX sintaxis.
Relaciones entre tablas
Al crear relaciones entre tablas, se obtiene la capacidad de usar valores relacionados en otras tablas en cálculos. Por ejemplo, puede usar una columna calculada para determinar todos los registros de envío relacionados con el revendedor actual y, a continuación, sumar los costos de envío de cada uno. Sin embargo, en muchos casos, es posible que una relación no sea necesaria. Puede usar la LOOKUPVALUE función en una fórmula para devolver el valor de result_columnName para la fila que cumple los criterios especificados en los argumentos search_column y search_value .
Muchas DAX funciones requieren que exista una relación entre las tablas, o entre varias tablas, con el fin de buscar las columnas a las que se hace referencia y devolver resultados que tienen sentido. Otras funciones intentarán identificar la relación; sin embargo, para obtener los mejores resultados, siempre debe crear una relación siempre que sea posible. Los modelos de datos tabulares admiten varias relaciones entre tablas. Para evitar confusiones o resultados incorrectos, solo se designa una relación a la vez como relación activa, pero puede cambiar la relación activa según sea necesario para atravesar diferentes conexiones en los datos de los cálculos. USERELATIONSHIP la función se puede usar para especificar una o varias relaciones que se usarán en un cálculo específico.
Es importante observar estas reglas de diseño de fórmulas al usar relaciones:
Cuando las tablas están conectadas por una relación, debe asegurarse de que las dos columnas usadas como claves tienen valores que coinciden. La integridad referencial no se aplica, por lo tanto, es posible tener valores que no coincidan en una columna de clave y crear una relación. Si esto sucede, debe tener en cuenta que los valores en blanco o los valores no coincidentes podrían afectar a los resultados de las fórmulas.
Al vincular tablas en el modelo mediante relaciones, se amplía el ámbito o el contexto en el que se evalúan las fórmulas. Los cambios en el contexto resultantes de la adición de nuevas tablas, nuevas relaciones o de cambios en la relación activa pueden hacer que los resultados cambien de maneras que no se prevén. Para obtener más información, consulte Contexto en este artículo.
Proceso y actualización
El proceso y la actualización son dos operaciones independientes, pero relacionadas. Debe comprender exhaustivamente estos conceptos al diseñar un modelo que contenga fórmulas complejas, grandes cantidades de datos o datos obtenidos de orígenes de datos externos.
El proceso (actualización) actualiza los datos de un modelo con nuevos datos de un origen de datos externo.
La actualización es el proceso de actualizar los resultados de las fórmulas para reflejar los cambios en las fórmulas y reflejar los cambios en los datos subyacentes. El recálculo puede afectar al rendimiento de las siguientes maneras:
Los valores de una columna calculada se calculan y almacenan en el modelo. Para actualizar los valores de la columna calculada, debe procesar el modelo mediante uno de los tres comandos de procesamiento: Procesar completo, Procesar datos o Procesar recalc. El resultado de la fórmula siempre debe recalcularse para toda la columna, siempre que cambie la fórmula.
Los valores calculados por la medida se evalúan dinámicamente cada vez que un usuario agrega la medida a una tabla dinámica o abre un informe; a medida que el usuario modifica el contexto, los valores devueltos por la medida cambian. Los resultados de la medición siempre reflejan lo más reciente en la memoria caché.
El procesamiento y el recálculo no tienen ningún efecto en las fórmulas de seguridad de nivel de fila a menos que el resultado de un recálculo devuelva un valor diferente, lo que determina si los miembros del rol pueden o no consultar la fila.
Actualizaciones
DAX está siendo mejorado constantemente. Las funciones nuevas y actualizadas se publican con la siguiente actualización disponible, que suele ser mensual. Los servicios se actualizan primero, seguidos de aplicaciones instaladas como Power BI Desktop, Excel, SQL Server Management Studio (SSMS) y la extensión de proyecto de Analysis Services para Visual Studio (SSDT). SQL Server Analysis Services se actualiza con la siguiente actualización acumulativa. Las nuevas funciones se anuncian por primera vez y se describen en la DAX referencia de función que coincide con las actualizaciones de Power BI Desktop.
No todas las funciones se admiten en versiones anteriores de SQL Server Analysis Services y Excel.
Solución de problemas
Si recibe un error al definir una fórmula, la fórmula puede contener un error sintáctico, un error semántico o un error de cálculo.
Los errores sintácticos son los más fáciles de resolver. Normalmente, faltan paréntesis o comas.
El otro tipo de error se produce cuando la sintaxis es correcta, pero el valor o una columna a la que se hace referencia no tiene sentido en el contexto de la fórmula. Estos errores semánticos y de cálculo pueden deberse a cualquiera de los siguientes problemas:
- La fórmula hace referencia a una columna, tabla o función no existente.
- Parece que la fórmula es correcta, pero cuando el motor de datos captura los datos, encuentra un error de coincidencia de tipo y genera un error.
- La fórmula pasa un número o tipo incorrecto de argumentos a una función.
- La fórmula hace referencia a una columna diferente que tiene un error y, por tanto, sus valores no son válidos.
- La fórmula hace referencia a una columna que no se ha procesado, lo que significa que tiene metadatos, pero no hay datos reales que se usarán para los cálculos.
En los cuatro primeros casos, DAX marca toda la columna que contiene la fórmula no válida. En el último caso, DAX atenua la columna para indicar que la columna está en un estado no procesado.
Aplicaciones y herramientas
Power BI Escritorio
Power BI Desktop es una aplicación gratuita de modelado de datos e informes. El diseñador de modelos incluye un DAX editor para crear DAX fórmulas de cálculo.
Power Pivot en Excel
El diseñador de modelos de Power Pivot en Excel incluye un editor DAX para crear fórmulas de cálculo DAX.
Visual Studio
Visual Studio con la extensión de proyectos de Analysis Services (VSIX) se usa para crear proyectos de modelos de Analysis Services. El diseñador de modelos tabulares instalado con la extensión projects incluye un DAX editor.
SQL Server Management Studio
SQL Server Management Studio (SSMS) es una herramienta esencial para trabajar con Analysis Services. SSMS incluye un DAX editor de consultas para consultar modelos tabulares y multidimensionales.
DAX Estudio
DAX Studio es una herramienta de cliente de código abierto para crear y ejecutar DAX consultas en Analysis Services, Power BI Desktop y Power Pivot en modelos de Excel.
Tabular Editor
Tabular Editor es una herramienta de código abierto que proporciona una vista intuitiva jerárquica de cada objeto en los metadatos del modelo tabular. Tabular Editor incluye un editor DAX con resaltado de sintaxis, que proporciona una manera sencilla de editar medidas, columnas calculadas y expresiones de tabla calculada.
Recursos de aprendizaje
Al aprender DAX, es mejor usar la aplicación que va a usar para crear los modelos de datos. Analysis Services, Power BI Desktop y Power Pivot en Excel tienen artículos y tutoriales que incluyen lecciones sobre la creación de medidas, columnas calculadas y filtros de fila mediante DAX. Estos son algunos recursos adicionales:
Use DAX en la ruta de aprendizaje de Power BI Desktop.
La Guía definitiva de DAX por Alberto Ferrari y Marco Russo (Microsoft Press). Ya en su segunda edición, esta extensa guía proporciona desde conceptos básicos hasta técnicas innovadoras de alto rendimiento para modeladores de datos principiantes y profesionales de BI.
Comunidad
DAX tiene una comunidad vibrante siempre dispuesta a compartir su experiencia. La comunidad de Microsoft Power BI tiene un foro de discusión especial solo para DAX, DAX Comandos y sugerencias.