Está en la página 1de 34

Power BI

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 1


Power BI
Introducción a DAX
Instituto CPE

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 2


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.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 3


DAX (Data Analysis Expressions)
• Ejemplo de formula DAX:

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 4


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

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 5


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.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 6


DAX (Data Analysis Expressions)
• Cada formula puede
contener:
• Funciones
• Condicionales
• Referencias a valores
• Tablas
• Tiempo

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 7


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.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 8


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

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 9


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.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 10


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.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 11


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.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 12


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

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 13


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)

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 14


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.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 15


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.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 16


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
2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 17
DAX Tipos de Funciones
Funciones de
• Matemáticas
• Lógicas
• Información
• Texto
• Tiempo

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 18


DAX Tipos de Funciones
Similar a Excel
Mientras ingresamos la función en la barra de
formula, aparece una lista de funciones disponibles.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 19


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.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 20


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])

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 21


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])

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 22


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)

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 23


• CON FILTER:
• →AVERAGEX(Filter(Table; <filter1> );<expression>)

Función Comodin CALCULATE


• →CALCULATE(<expression>;<filter1>;<filter2>…)
Es lo mismo:
→ SUMX (Filter(Table; [column CodPais]=54); Table [column A] *
Table [column B] )
→CALCULATE(SUMX (Table; Table [column A] * Table [column B] );
[column CodPais]=54)

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 24


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)

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 25


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.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 26


• recordando:
→ IF(<logical_test>,<value_if_true>[,
<value_if_false>])
entonces
→IF( ISERROR(SUM( TableA[SalesAmount_USD])
/SUM(TableB[SalesAmount_USD]) ) ; BLANK() ;
SUM(TableA[SalesAmount_USD])
/SUM(TableB[SalesAmount_USD]) )

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 27


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
2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 28
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])

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 29


DAX Uso de Variables
• Power BI permite utilizar Variables para simplificar el
lenguaje y tipeo de formulas complejas

• Ejemplo:

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 30


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])
2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 31
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

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 32


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]))

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 33


• 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).

Realizá el Practico 4 y buscá diferentes formas de


responder a las preguntas con diferentes formulas
DAX.

2-908-20-59 institutocpe.edu.uy corporativo@institutocpe.edu.uy 34

También podría gustarte