Expresiones de anlisis de datos (DAX) es un lenguaje de expresiones de frmulas que se usa en Analysis Services, Power BI y Power Pivot en Excel. Las frmulas DAX abarcan funciones, operadores y valores para realizar clculos avanzados y consultas en los datos de las tablas y columnas relacionadas de los modelos de datos tabulares.
Este artculo sirve de introduccin bsica a los conceptos ms importantes de DAX. En l se describe DAX y es aplicable a todos los productos que lo usan. Puede que algunas funciones no sean vlidas en determinados productos o casos de uso. Consulte la documentacin del producto en la que se especifique su implementacin de DAX especfica.
Las medidas son frmulas de clculo dinmico en las que los resultados cambian en funcin del contexto. Las medidas se usan en informes en los que se pueden combinar y filtrar datos del modelo mediante varios atributos, como un informe de Power BI o una tabla dinmica o un grfico dinmico de Excel. Las medidas se crean con la barra de frmulas DAX del diseador de modelos.
Una frmula en una medida puede usar las funciones de agregacin estndar creadas automticamente con la caracterstica de Autosuma (como COUNT o SUM), aunque tambin podemos definir nuestra propia frmula con la barra de frmulas DAX. Las medidas con nombre se pueden pasar como argumento a otras medidas.
Al definir una frmula para una medida en la barra de frmulas, una caracterstica de informacin sobre herramientas muestra una vista previa de cules seran los resultados para total en el contexto actual, pero de lo contrario no se generan los resultados inmediatamente en ninguna parte. La razn por la que no se pueden ver los resultados (filtrados) del clculo inmediatamente es que el resultado de una medida no se puede determinar sin el contexto. Evaluar una medida requiere una aplicacin cliente de informes que pueda proporcionar el contexto necesario para recuperar los datos pertinentes de cada celda y, a continuacin, evaluar la expresin para cada celda. Ese cliente podra ser una tabla dinmica o un grfico dinmico de Excel, un informe de Power BI o una expresin de tabla en una consulta DAX en SQL Server Management Studio (SSMS).
Independientemente del cliente, se ejecuta una consulta distinta por cada celda de los resultados. Es decir, cada combinacin de encabezados de fila y de columna de una tabla dinmica, o cada seleccin de segmentacin de datos y filtros de un informe de Power BI, genera un subconjunto de datos diferente sobre el que se calcula la medida. Por ejemplo, con esta frmula de medida muy sencilla:
Cuando un usuario coloca la medida TotalSales en un informe y, despus, coloca la columna Product Category de una tabla Product en Filters, la suma de Sales Amount se calcula y se muestra en cada categora de producto.
A diferencia de las columnas calculadas, la sintaxis de una medida incluye el nombre de la medida antes de la frmula. En el ejemplo que acabamos de proporcionar, el nombre Total Sales aparece delante de la frmula. Despus de crear una medida, el nombre y su definicin aparecen en la lista de campos de la aplicacin cliente de informes y, en funcin de las perspectivas y roles, estarn disponibles para todos los usuarios del modelo.
Una columna calculada es una columna que se agrega a una tabla existente (en el diseador de modelos) y, despus, se crea una frmula DAX que define los valores de esa columna. Cuando una columna calculada contiene una frmula DAX vlida, se calculan valores para cada fila en cuanto la frmula se escribe y, tras ello, los valores se almacenan en el modelo de datos en memoria. Por ejemplo, en una tabla Date, cuando se escribe la frmula en la barra de frmulas:
Se calcula un valor para cada fila de la tabla, tomando para ello los valores de la columna Calendar Year (de la propia tabla Date), agregando un espacio y la letra mayscula Q y, finalmente, agregando los valores de la columna Calendar Quarter (de la propia tabla Date). El resultado de cada fila en la columna calculada se calcula inmediatamente y se muestra, por ejemplo, como 2017 Q1. Los valores de columna solo se recalculan si la tabla o cualquier tabla relacionada se procesa (actualiza), o si el modelo se descarga de la memoria y se vuelve a cargar, como al cerrar y volver a abrir un archivo de Power BI Desktop.
Una tabla calculada es un objeto calculado, basado en una expresin de frmula, que se deriva de todas las tablas (o parte de ellas) del mismo modelo. En lugar de consultar y cargar valores en las columnas de la nueva tabla desde un origen de datos, una frmula DAX define los valores de la tabla.
Las tablas calculadas pueden ser tiles en una dimensin realizadora de roles. Un ejemplo es la tabla Date, como OrderDate, ShipDate o DueDate, segn la relacin de clave externa. Al crear una tabla calculada para ShipDate explcitamente, se obtiene una tabla independiente disponible para las consultas y plenamente funcional, como cualquier otra tabla. Las tablas calculadas tambin son tiles al configurar un conjunto de filas filtrado o un subconjunto o superconjunto de columnas a partir de otras tablas existentes, ya que permiten mantener intacta la tabla original mientras se crean variaciones de dicha tabla para dar cabida a escenarios concretos.
Las tablas calculadas admiten relaciones con otras tablas. Las columnas de la tabla calculada tienen tipos de datos y formato, y pueden pertenecer a una categora de datos. Las tablas calculadas se pueden denominar, mostrar u ocultar, como cualquier otra tabla. Las tablas calculadas vuelven a calcularse si alguna de las tablas desde la que extraen datos se actualiza.
Con la seguridad de nivel de fila, una frmula DAX se debe evaluar como una condicin booleana "true" o "false", que define qu filas pueden devolver los resultados de una consulta realizada por miembros de un rol determinado. Por ejemplo, en el caso de los miembros del rol Sales, dada una tabla Customers con la siguiente frmula DAX:
Los miembros de ese rol Sales solo podrn ver los datos de los clientes de Estados Unidos, y solo se devuelven agregados (como SUM) relativos a los clientes de Estados Unidos. La seguridad de nivel de fila no est disponible en Power Pivot en Excel.
Al definir la seguridad de nivel de fila con una frmula DAX, se crea un conjunto de filas permitido. Esto no deniega el acceso a otras filas, simplemente estas no se devuelven como parte del conjunto de filas permitido. Otros roles pueden permitir el acceso a las filas excluidas por la frmula DAX. 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 especfico, el usuario podr ver los datos de esa fila.
Las frmulas de seguridad de nivel de fila se aplican tanto a las filas especificadas como a las filas relacionadas. Si una tabla tiene varias relaciones, los filtros aplican seguridad a la relacin que est activa. Las frmulas de seguridad de nivel de fila se entrecruzan con otras frmulas definidas para las tablas relacionadas.
Se pueden crear y ejecutar consultas DAX tambin en SQL Server Management Studio (SSMS) y en herramientas de cdigo abierto como DAX Studio (daxstudio.org). A diferencia de las frmulas de clculo DAX, que solo se pueden crear en modelos de datos tabulares, se pueden ejecutar consultas DAX tambin en modelos multidimensionales de Analysis Services. Las consultas DAX suelen ser ms fciles de escribir y ms eficaces que las consultas de Expresiones de datos multidimensionales (MDX).
Las frmulas DAX son fundamentales para crear clculos en columnas y medidas calculadas, as como para proteger los datos con seguridad de nivel de fila. Para crear frmulas de columnas y medidas calculadas, use la barra de frmulas situada en la parte superior de la ventana del diseador de modelos o del editor DAX. A fin de crear frmulas para la seguridad de nivel de fila, use el cuadro de dilogo Administrador de roles o Administrar roles. La informacin de esta seccin est pensada para empezar a conocer los conceptos bsicos de las frmulas DAX.
Empiece a escribir las primeras letras de la funcin o el nombre que quiera, y Autocompletar mostrar una lista de las funciones, tablas y columnas disponibles. Presione la tecla TAB para agregar un elemento de la lista Autocompletar a la frmula.
Tambin puede hacer clic en el botn Fx para ver una lista de las funciones disponibles. Para seleccionar una funcin de la lista desplegable, use las teclas de direccin para resaltar el elemento y haga clic en Aceptar para agregar la funcin a la frmula.
En una columna calculada, en cuanto se escribe la frmula y esta se valida, la columna se rellena con valores. En una medida, cuando se presiona Entrar, se guarda la definicin de la medida en la tabla. Si una frmula no es vlida, se mostrar un error.
Esta medida se usa para crear una relacin de comparacin entre un perodo incompleto y el perodo anterior. La frmula debe tener en cuenta la proporcin del perodo que ha transcurrido y compararla con la misma proporcin del perodo anterior. En este caso, [Days Current Quarter to Date]/[Days in Current Quarter] nos da la proporcin transcurrida en el perodo actual.
Puede usar la funcin Autocompletar frmula en medio de una frmula existente con funciones anidadas. El texto situado inmediatamente antes del punto de insercin se usa para mostrar los valores de la lista desplegable, mientras que todo el texto situado despus del punto de insercin se mantiene inalterado.
La funcin Autocompletar no agrega el parntesis de cierre de las funciones, ni hace coincidir automticamente los parntesis. Debe asegurarse de que cada funcin sea correcta sintcticamente ya que, de lo contrario, no podr guardar o usar la frmula.
Las funciones se pueden anidar, es decir, puede usar los resultados de una funcin como argumento de otra funcin. Puede anidar hasta 64 niveles de funciones en columnas calculadas. Sin embargo, el anidamiento puede dificultar la creacin de frmulas o la solucin de sus problemas. Muchas funciones estn diseadas para usarse exclusivamente como funciones anidadas. Estas funciones devuelven una tabla, que no se puede guardar directamente como un resultado, pero que se debe proporcionar como entrada de una funcin de tabla. Por ejemplo, las funciones SUMX, AVERAGEX y MINX requieren una tabla como primer argumento.
d3342ee215