3. DAX (Data Analysis Expressions)
• Utiliza algunos conceptos de
programación
• DAX es simple, pero no es fácil.
• No traten de aprenderlo en la
forma habitual…
• Mezcla de lenguaje Excel, SQL y
MDX.
5. DAX (Data Analysis Expressions)
• Sintaxis:
• 'Table
Name'[ColumnName]
• Best Practice:
• No usar espacios en
nombres de tablas
• Siempre incluir la
tabla en las fórmulas
6. DAX (Data Analysis Expressions)
• Importante:
• En Excel, puedo poner diferentes tipos de valores en cada
celda.
• En DAX, trabajo con tablas y columnas, por lo que todos los
datos de cada columna deben ser del mismo tipo.
7. DAX (Data Analysis Expressions)
• Cada formula puede
contener:
• Funciones
• Condicionales
• Referencias a valores
• Tablas
• Tiempo
8. DAX (Data Analysis Expressions)
• Tipos de DAX
• Numéricos
• Fecha /Fecha y Hora
• Texto
• True/False
• Binario
• Importante: hay funciones que solo trabajan con
Numéricos, y otros que trabajan con cualquier
tipo de datos.
9. DAX (Date Time)
En DAX, los cálculos de fechas funcionan de la
siguiente manera:
• Parte entera: Número de días después del 30 de
diciembre de 1899.
• Parte decimal: Segundos: 1/(24*60*60)
• Expresiones DateTime:
• Date + 1 = el día después
• Date – 1 = el día anterior
• Date – 1,5 = un día y medio antes
10. DAX (Calculos primarios)
2 tipos de cálculos usando DAX:
Columnas calculadas
Medidas calculadas
Cuidado: el uso de columnas y medidas
calculadas consume gran cantidad de RAM.
11. DAX Columnas calculadas
Son útiles cuando
necesitamos crear
una columna o
filtrar de acuerdo
a un valor, o si
queremos hacer
un cálculo para
cada fila en una
tabla.
12. DAX Columnas calculadas
Una vez seleccionado,
aparece “Column =“
donde le podemos
poner nombre a la
columna y escribir la
fórmula o haciendo clic
Si hacemos referencia a
una columna en la
fórmula, no
necesitamos hacer
referencia a la fila.
Power BI lo hace
automáticamente.
13. DAX Columnas calculadas
En resumen:
• Son columnas creadas usando DAX
• Siempre toma en cuenta la fila actual
• Product[Price] significa:
• El valor del precio que figura en la columna
(explicito)
• En la tabla “Product” (explicito, opcional)
• Para la fila actual (implícito)
• Diferente para cada fila
14. DAX Medidas calculadas
Son útiles cuando
estamos calculando
porcentajes o ratios, o
necesitamos formulas
complejas.
Ejemplo: Gross Margin
% (no funciona en los
reportes si creo una
columna)
15. DAX Medidas calculadas
Una vez seleccionado, aparece
“Measure =“.
De la misma forma que las
columnas, necesitamos:
• Un nombre
• Al menos una función o
expresión
Aparece como un campo en la
tabla, identificado con el ícono.
16. DAX Medidas calculadas
No funciona fila por fila.
Usa tablas y formulas.
No utiliza el término “current row”
Por eso debemos escribir funciones, y no solo referencias
a columnas.
Ejemplo:
Gross margin es una columna calculada, puede ser una
medida.
Gross margin % tiene que ser una medida calculada.
17. DAX Columna vs Medidas calculadas
Usar columna calculada:
• Necesitamos calcular un valor en cada fila, o aplicar un
filtro en la formula.
Usar medidas calculadas:
• Calcular porcentajes
• Calcular ratios
• Calculos complejos
Espacio y uso de CPU
• Columnas consume memoria RAM
• Medidas consume CPU
18. DAX Tipos de Funciones
Funciones de
• Matemáticas
• Lógicas
• Información
• Texto
• Tiempo
19. DAX Tipos de Funciones
Similar a Excel
Mientras ingresamos la función en la barra de
formula, aparece una lista de funciones disponibles.
20. DAX Matemáticos
Útiles para agregar valores:
• SUM → SUM ( table[column] )
• AVERAGE → AVERAGE ( table[column] )
• MIN → MIN ( table[column] )
• MAX →MAX ( table[column] )
• DIVIDE → DIVIDE ( <Numerator>, <Denominator> [, <AlternateResult>] )
Trabaja solamente con columnas numéricas.
El SUM, Solamente suma una columna, a diferencia del SUMX que es
función X
• SUM ( Orders [Price])
• Funciones X:
• Múltiples columnas
• Iterativo en la tabla, y evalúa la expresión por cada fila.
21. DAX Matemáticos
• Funciones:
• ABS, EXP
• FACT, LN
• LOG, LOG10
• MOD, PI
• POWER, QUOTIENT
• SIGN, SQRT
• Son iguales a Excel. Por ejemplo:
• → ABS ( <Number> )
• →ABS([DealerPrice]-[ListPrice])
22. DAX Contar
• COUNT Solo para columnas numéricas, fecha o string
→ COUNT(Table [column])
• COUNTA cuenta cualquier tipo de dato excepto blancos
→COUNTA(Table [column])
• COUNTBLANK Cuenta blancos de cualquier tipo de dato de la columna
¡ el 0 es un dato!
→COUNTBLANK(Table [column])
• COUNTROWS Filas en una tabla
→COUNTROWS(Table [column])
• DISTINCTCOUNT cuenta valores distinto, ¡Blank es un dato!
→ DISTINCTCOUNT(Table [column])
• DISTINCTCOUNTNOBLANK cuenta todos los valores distintos de la
columna sin incluir blanks
→ DISTINCTCOUNTNOBLANK (Table [column])
23. DAX Funciones X
• Es una variante de las funciones
• SUMX
• AVERAGEX
• COUNTX
• MINX
• MAXX
• Iteración en la tabla y evalúa la expresión por cada fila
• Siempre recibe 2 parámetros
• 1 Tabla
• 1 Formula para evaluar por cada fila
• Ej valido para todas las formulas X→ COUNTX(<table>;<expression>)
→ SUMX (Table; Table [column A] * Table [column B] )
→ MAXX( Table; (Table [column F]) - Table [column Z]) *10)
25. DAX Lógicas
• AND
• OR
• NOT
• IF
• IFERROR
IF/IFERROR son muy utilizados
AND/OR/NOT puede ser expresados por operadores:
AND(A,B) = A && B
→IF( <condición>; Resultado si se cumple la condición; Resultado si NO se
cumple la condición)
26. DAX Funciones de Información
• ISBLANK
• ISNUMBER
• ISTEXT
• ISNONTEXT
• ISERROR
Funciones que devuelven TRUE/ FALSE. La sintaxis es la
misma para cualquiera de ellas.
→ ISERROR(<value>)
Pondremos un ejemplo utilizándola dentro de una
formula compuesta.
28. DAX Funciones de Texto
• Concatenate
• Find, Left, Right, Mid
• Len, Lower, Upper
• Rept, Substitute
• Trim,
• Value, Exact, Fixed
• Format
https://msdn.microsoft.com/query-bi/dax/pre-defined-numeric-
formats-for-the-format-function
• https://msdn.microsoft.com/query-bi/dax/pre-defined-date-and-
time-formats-for-the-format-function
(Se verán los ejemplos en clase)
Similares a Excel
29. DAX Funciones de Fechas
• DAY, WEEKNUM, MONTH, YEAR
• DATEVALUE, EDATE, EOMONTH
• HOUR, MINUTE, SECOND
• NOW, TODAY, DATE, TIME
• WEEKDAY, YEARFRAC
Todas admiten una columna.
Son muy útiles, pero se pueden simplificar usando
una tabla de fechas.
Ej; → DAY(Table[Column]) → YEAR(Calendar[Date])
30. DAX Uso de Variables
• Power BI permite utilizar Variables para simplificar el
lenguaje y tipeo de formulas complejas
• Ejemplo:
31. DAX Relaciones de tablas
• Si quiero usar datos de otras tablas, y lo ingreso directamente en la
formula, me da error. Entonces uso:
• RELATED
• Utilizado para buscar valores en otra tabla que esté relacionada.
• Se usa para relaciones many to one. (*,1)
• Ejemplo: Quiero calcular ventas totales utilizando una lista de precios en
otra tabla.
• SUMX (Sales, Sales [Quantity] * Related (Product [Unit Price]))
• RELATEDTABLE
• Idem RELATED, pero se utiliza para relaciones one to many.(1,*)
• Ejemplo: Tengo una lista de productos, y quiero calcular las unidades
vendidas (usando sumX), o la cantidad de veces que fue vendido el
producto (Usando Countrows).
• SUMX (Relatedtable(Sales), Sales [Quantity] * Sales [Unit Price])
32. DAX Tablas y Filtros
• Power BI permite crear tablas calculadas
• Esa tabla calculada surge de una formula, al que también
puedo indicarle filtros
• La nueva tabla funciona como cualquier otra tabla
• Ej: de los datos de ventas, puedo crear una tabla
“Productos”.
• En clase crearemos la tabla CALENDARAUTO
→ CALENDARAUTO() D
Dicha tabla nos traerá una columna con las fechascontinuas
desde el 01/01/ menor año de nuestro set de datos, hasta,
31/12/mayor año de nuestro set de datos
33. DAX Time Inteligence
• TOTALYTD
• TOTALMTD
• TOTALQTD
→ TOTALMTD(<expression>,<dates>[,<filter>])
→ TOTALMTD(TotalSales;Calendarauto[Date];
Country[CodPais]=2)
Las 3 anteriores acumulan para periodos diferentes, por lo tanto la sintaxis es la misma para todas.
Se calculan una ves y sirven para todos los años/trimestre/meses
• SAMEPERIODLASTYEAR se utiliza dentro de nuestro ‘Comodín’
Ej
→CALCULATE(SUM(ColumnA[Sales]);
SAMEPERIODLASTYEAR(Calendarauto[Date]))
34. • Power BI en todas sus actualizaciones incluye
nuevas formulas DAX es un lenguaje que esta en
constante crecimiento.
Podemos llegar a los mismos resultados haciendo
caminos distintos (Recordar Ejemplo CALCULATE y
SUMX).