Este escrito forma parte de la serie: Escenarios de Modelado con DAX
Algunos de los recursos que he consultado sobre Modelado tabular y DAX los podemos encontrar en Modelos tabulares y DAX – Recursos
Introducción
DAX es un lenguaje de expresiones creado para trabajar con Modelos tabulares y significa Data Analysis Expressions
Los Modelos tabulares los podemos encontrar en:
- Power Pivot
- SQL Server Analysis Services Tabular
- Power BI
Dax es un lenguaje funcional, la ejecución fluye como llamadas a funciones que se van ejecutando de dentro hacia fuera y se considera todo el código, una única expresión, que se puede escribir todo en una línea o se puede organizar. Ver DAX Formatter de SQLBI
Tipos de datos y conversiones
Existen 8 tipos de datos DAX: I8 (entero 8 byte), R8 (número real 8 byte), Boolean, String, Date, CY (Currency), BLANK, Table.
No son muchos si los comparamos con otros lenguajes. Es muy importante destacar el tipo de datos Table, ya que muchas funciones esperan y/o devuelven Tabla.
Lenguaje fuertemente tipado. Cada función tiene requerimientos de tipos de datos de entrada y salida. DAX intenta convertir siempre, según el operador y la función. Fecha como cadena se convierte a Fecha.
Los operadores mandan a la hora de convertir, los operadores aritméticos, provocan la conversión a números, ejemplo: “12”+12 = 24, mientras que los operadores de cadena, intentan la conversión a cadena, ejemplo: 1 & 2 =“12”
Sintaxis
DAX no tiene una sintaxis compleja, se puede resumir en unos aspectos muy sencillos
- Las fórmulas comienzan con = y siguen con expresión DAX válida
- Las expresiones contienen funciones, operadores, constantes y referencias a columnas
- Las referencias a columnas, son completas sólo si están compuestas por nombre de tabla + nombre de columna
- Los nombres de las columnas siempre se escriben entre corchetes
Buenas prácticas en Sintaxis
Algunas recomendaciones, pueden ser:
- Nombre de tabla sin espacios, lo que nos evita el tener que utilizar comillas
- Nombre de tablas sin repeticiones al estilo fct ni dim, ya que en Modelos Tabulares no es tan necesario y provoca un peor funcionamiento de IntelliSense, que por cierto, ha sido mejorado en últimas versiones
- Nombre de columna y medida con espacios, si es necesario
- Escribir la columna con NombreTabla [Nombre Columna]
- Escribir la medida [Nombre Medida], sin ninguna referencia al nombre de tabla en la que se «almacena» la medida. Ya hablaremos luego de este tema.
Nombres de tablas y columnas con significado coherente, facilita la comprensión del usuario y las preguntas rápidas (Q&A) en el Servidor de Power BI
DAX vs Excel
Muchos de los usuarios de modelos tabulares, que hoy trabajan con Power BI, empezaron con Excel, o continúan trabajando con Power Pivot en Excel.
Es interesante, porque los dos lenguajes de expresiones tienen cosas en común y otras que les diferencian.
Ambos son lenguajes funcionales, con expresiones que por lo general son llamadas a funciones, donde no hay saltos ni ciclos.
DAX es diferente a Excel, ya que no hay concepto de celdas sino de tablas y columnas.
- DAX trabaja sobre tablas, todas las fórmulas necesitan referencias de columnas. El nombre de la tabla se agrega en la referencia
- En Excel no se hace, las fórmulas con nombre de columnas trabajan dentro de una única tabla
- En DAX, las fórmulas se pueden referir a columnas de cualquier tabla del modelo. Los nombres de columnas son únicos para tablas pero se pueden repetir para los modelos
- No se puede copiar y pegar una fórmula de uno en otro.
- Hay un conjunto de funcionalidades que no existen en Excel
- BI de tiempos
- Uso de iteradores en DAX
En Excel no existen iteradores, en dependencia de la complejidad de la fórmula hay que valerse de columnas calculadas intermedias
En DAX, los iteradores permiten recorrer la tabla y evaluar expresiones fila a fila, así como agregar el resultado de cada fila.
Hasta aquí una brevísima introducción del lenguaje de expresiones DAX para Modelos Tabulares
Espero que resulte de utilidad #HappyDAXing !!! 🙂
En la próxima entrada vamos a ver Modelo de datos para serie Escenarios de Modelado con DAX