DAX – Introducción – Parte 1

Que es DAX?

Es un lenguaje funcional.
Lo encontramos dentro de Analysis Services, Power Pivot (Excel) y Power BI.
Sus siglas significa Expresiones de Análisis de Datos.
Surge con PowerPivot for Excel 2010.

Para que sirve DAX?

DAX sirve para enriquecer los modelos de datos pues es el lenguaje para definir

  • Columnas calculadas
  • Medidas
  • Tablas calculadas

Tambien es un lenguaje de consulta sobre los modelos de datos.

DAX es complejo?

DAX es un lenguaje muy poderoso, sencillo para el 75% de las necesidades habituales y se torna un poco complejo para ese otro 25%…

La principal dificultad que encuentro en aquellos que dan sus primeros pasos no es en DAX sino en el concepto «Medidas», para aquellos no que vienen del mundo de las herramientas de BI, es un concepto un poco duro de digerir al principio.

Para usuarios Excel, DAX es relativamente cercano pues nace «inspirado» en las formulas Excel, o mejor dicho, Microsoft busco que fuese familiar para los usuarios Excel… Ahora a los que vienen de Excel, quizás donde cuesta es que las funciones trabajan sobre «Tablas», y no en rangos o celdas.

Para los que vienen del lado IT, de bases de datos o programación OO, estructurada puede que un lenguaje funcional sea un poco «interesante», pero lo que mas cuesta es el concepto de «Medidas»…

Un tema a tener presente es que la dificultad de DAX es lineal a la complejidad de nuestro modelo de datos, es decir, cuando DAX deba cubrir falencias de como armamos nuestro modelo es muy posible nuestras sentencias DAX requieran cierta necesidad. Cuando mas cerca estemos de un modelo estrella, la mayoría de nuestros cálculos DAX saldrán muy fácil.

Lenguaje funcional

Al ser un lenguaje funcional todo lo que escribimos son funciones anidadas, y eventualmente la definición de variables que almacenan el resultado de funciones y pasan a ser parámetros de funciones.

Al ser un lenguaje funcional todo puede ser escrito en una sola línea, aunque siempre se sugiere se realice el esfuerzo de darle un poco de formato.

Evitar lo siguiente:

AVERAGEX( SUMMARIZE ( FILTER( 'Date', 'Date'[Year] IN { 2017, 2018 } ), 'Date'[Month], 'Date'[Year]), VAR vDiasHabiles = COUNTROWS ( FILTER ( 'Date', 'Date'[WeekDay] < 6 ) ) VAR vImporte = SUM ( Sales[SalesAmount] ) RETURN DIVIDE ( vImporte, vDiasHabiles))

es mucho mas legible lo siguiente

AVERAGEX (
    SUMMARIZE (
        FILTER ( 'Date', 'Date'[Year] IN { 20172018 } ),
        'Date'[Month],
        'Date'[Year]
    ),
    VAR vDiasHabiles =
        COUNTROWS ( FILTER ( 'Date', 'Date'[WeekDay] < 6 ) )
    VAR vImporte =
        SUM ( Sales[SalesAmount] )
    RETURN
        DIVIDE ( vImportevDiasHabiles )
)

Las funciones pueden retornar un valor escalar o una tabla.
Las funciones pueden aceptar como parámetros valores escalares, tablas, o expresiones.

Tipos de Datos

Los tipos de datos de DAX se agrupan en dos tipos

  • Numéricos: enteros (int), decimales (float), moneda (currency), fecha (datetime), booleano (true/false)
  • Otros: texto

DAX permite realizar operaciones combinando tipos de datos, realizando conversiones automáticas.

Se recomienda evitar dejar en manos de DAX la conversión, pues a veces puede la misma no sea la esperada.

Tipos de Operadores

Símbolo Uso Ejemplo
( )
{}
Agrupación
Listas
( 5+2) * 3
IN { “A”, “B” }
+

*
/
Adición
Sustracción
Multiplicación
División
4+1
5-2
2*3
3/4
=
<>
>
>=
<
<=
Igual
Distinto
Mayor
Mayor o igual Menor Menor o igual
[Pais]=“AR”
[Pais]<>”AR”
[Cantidad]>0
[Cantidad]>=5
[Importe]<0
[Importe]<= 20
& Concatenado “A” & “B”
&&
||
AND
OR
[Pais]=“AR” && [Cantidad]> 0
[Pais]=“AR” || [Pais] =“UY”

Sintaxis

La sintaxis de DAX es bastante sencilla lo único a tener en cuenta es como se referencias a las columnas, tablas y medidas.

'NombreDeTabla'[NombreDeColumna]
[NombreMedida]
  • Tablas: solo requieren comillas simples cuando su nombre posee caracteres especiales como espacios o «ñ».
  • Columnas: las columnas siempre van entre corchetes.
  • Medidas: van entre corchetes cuando se las referencia.

Se recomienda anteponer el nombre de la tabla cuando referenciamos una columna, pues si bien es opcional o solo requerido en ciertas condiciones, facilita diferenciarlas de las medidas.

DAX – Parte 2 – Columnas Calculadas

DAX – Parte 3 – Medidas

DAX – Parte 4 – Funciones

Deja un comentario