Está en la página 1de 28

CLASE 4

Importante
Las clases quedaran grabadas y subidas en la plataforma, por

lo tanto, en conjunto al material PDF y audiovisual

contaran con todo lo necesario para poder estudiar ante una

clase ya dictada.
DAX
Data Analysis Expressions

@BiwiserAcademy
¿Que es DAX?

DAX, o expresiones de análisis de


datos, es un lenguaje de
expresiones de fórmulas que se
usa en Power BI con fines de
cumplir con cálculos de
requerimientos de negocio.

Las fórmulas DAX se usan en

• Medidas.
• Columnas calculadas.
• Tablas calculadas.

@BiwiserAcademy
Lenguaje funcional

• La ejecución fluye como llamadas a funciones

• De dentro hacia afuera

• Todo en una línea

• No es sensible a mayúsculas y minúsculas

@BiwiserAcademy
Diferencias con lenguaje Excel

• En DAX no existe el concepto de celda de Excel

• DAX trabaja sobre tablas, las funciones esperan tablas o columnas

• DAX aporta un valioso conjunto de funciones que permiten ir más allá de


Excel:

o Funciones de inteligencia de tiempo


o Iteradores

@BiwiserAcademy
Tipos de calculos en DAX

Medidas Columnas Calculadas Tablas Calculadas

✓ Se utilizan para realizar ✓ Corresponde a una nueva ✓ Nos permite añadir


cálculos a través de columna o campo que se nuevas tablas al modelo
funciones. agrega a la tabla. de datos utilizando
expresiones DAX.
✓ Contrae, Resume y ✓ Columnas pueden ser
agrupa los datos a través utilizadas para definir Rendimiento
de funciones. relaciones.
• Consume memoria RAM
Rendimiento ✓ Ejecuta una función línea ya que se almacena en
a línea, iterando registro ella.
• Consume Procesador en por registro de la tabla.
vez de RAM. • Se recalcula en la
Rendimiento actualización de datos.
• Solo se calcula cuando se
utiliza el objeto visual. • Consume memoria RAM ya
que se almacena en la
memoria.

• Se recalcula con la
actualización del reporte.

@BiwiserAcademy
FUNCIONES DAX
Data Analysis Expressions

@BiwiserAcademy
DAX – Estructura de una función

A. Nombre de la medida Suma Ventas.


B. Operador signo igual ( = ) que indica el inicio de
C
la formula, al ser ejecutada retornara un
D
resultado.
C. Función DAX "SUM" cumple el rol de sumar todos
Suma Ventas = SUM(Comercial[Ventas])
los registros de la columna [Ventas] ubicada en
la tabla Comercial.
D. Los parentesis () que rodean una expression.
A B E F
pueden contender uno o vários argumentos.
E. La tabla a utilizar Comercial.
F. La columna de referencia [Ventas] ubicada
dentro de la tabla Comercial.

@BiwiserAcademy
DAX - Operadores

Los operadores aritméticos son utilizados para realizar operaciones matemáticas tales como sumas, restas o
multiplicaciones.
Operadores aritméticos Significado Ejemplo
+ (signo más) Suma 9+9
– (signo menos) Resta o inversión del signo 10-5
* (asterisco) Multiplicación 6*6
/ (barra diagonal) División 3/3
^ (símbolo de intercalación) Exponenciación 5^5

Los operadores de comparación permiten comparar dos valores, los cuales tendrán como resultado un valor
lógico, ya sea TRUE o FALSE.
Operadores de comparación Significado Ejemplo
= Igual a [Pais] = "Chile"
== Estrictamente igual a [Pais] == "Chile"
> Mayor que [Fecha Factura] > "Sept 2022"
< Menor que [Fecha Factura] < "Sept 2022"
>= Mayor o igual que [Venta] >= 2.000.000
<= Menor o igual que [Venta] <= 3.000.000
<> No igual a [Pais] <> "Chile"

@BiwiserAcademy
DAX - Funciones de Agregación

SUM : Suma de todos los números de una columna.


Suma Ventas = SUM(Comercial[Ventas])
Resultado = $45.250.000
AVERAGE : Devuelve el promedio (media aritmética) de todos los números de una columna.
Promedio Ventas = AVERAGE(Comercial[Ventas])
Resultado = $24.000

COUNT : Cuenta el número de filas de la columna especificada que contienen valores que no están en blanco.
Conteo Facturas Emitidas = COUNT(Comercial[N.º Factura])
Resultado = 1.200

COUNTROWS : Cuenta el número de filas de la tabla especificada o de una tabla definida por una expresión.
Cantidad de Registros tabla Comercial = COUNTROWS(Comercial)

Resultado = 1.200

@BiwiserAcademy
DAX - Funciones de Agregación

DISTINCTCOUNT : Cuenta el número de valores distintos de una columna.

Conteo Distintivo Vendedores = DISTINCTCOUNT(Comercial[Vendedor])


Resultado = 6

MAX : Devuelve el valor numérico mayor de una columna, o entre dos expresiones escalares.

Venta Máxima = MAX(Comercial[Ventas])


Resultado = $39.000

MIN : Devuelve el valor numérico menor de una columna, o entre dos expresiones escalares.

Venta Mínima = MIN(Comercial[Ventas])


Resultado = $18.000

@BiwiserAcademy
DAX - Funciones de Fecha / Hora
NOW : Devuelve la fecha y la hora actuales en formato datetime.
Fecha Now = NOW()

Resultado = 21-10-2022 16:21:50

TODAY : Devuelve la fecha actual.


Fecha Hoy= TODAY()

Resultado = 21-10-2022 0:00:00

SECOND : Devuelve los segundos de un valor temporal como un número entre 0 y 59.
Segundo = SECOND(Comercial[Fecha])

Resultado = 50

MINUTE : Devuelve el minuto como un número entre 0 y 59, a partir de un valor de fecha y hora.
Minuto = MINUTE(Comercial[Fecha])

Resultado = 21

HOUR : Devuelve la hora como un número entre 0 (00:00) y 23 (23:00).


Hora = HOUR(Comercial[Fecha])
Resultado = 16

@BiwiserAcademy
DAX - Funciones de Fecha / Hora

DAY : Devuelve el día del mes, un número entre 1 y 31.


Dia = DAY(Comercial[Fecha])
Resultado = 21

MONTH : Devuelve el mes como un número entre 1 (enero) y 12 (diciembre).


Mes = MONTH(Comercial[Fecha])
Resultado = 10

YEAR : Devuelve el año de una fecha como un número entero de cuatro dígitos entre 1900 y 9999.
Año = YEAR(Comercial[Fecha])
Resultado = 2022

DATE : Devuelve la fecha especificada en formato de fecha y hora.


Estructura Función = DATE(Año,Mes,Dia)
Fecha = DATE(2022,10,21)
Resultado = 2022-10-21

@BiwiserAcademy
DAX - Funciones de Fecha / Hora

WEEKDAY : Devuelve un número del 1 al 7 que identifica el día de la semana de una fecha.
Dia de semana = WEEKDAY(DATE(2022,10,21)) – Dia Viernes
Resultado = 6
WEEKNUM : Devuelve el número de semana de la fecha y el año especificados según el valor return_type (el tipo de valor devuelto).
Dia de semana = WEEKNUM(DATE(2022,10,21))
Resultado = 43
QUARTER : Devuelve el trimestre como un número del 1 al 4.
Trimestre = QUARTER(DATE(2022,10,21))
Resultado = 4
YEARFRAC : Calcula la fracción del año representada por el número de días enteros entre dos fechas.
Fracción Año = YEARFRAC(DATE(2022,01,01),DATE(2022,06,30))
Resultado = 0,50

DATEDIFF : Devuelve el número de límites de intervalos entre dos fechas.


Estructura Función = DATEDIFF(Fecha Inicio,Fecha Fin,Intervalo (Day/Hour/Minute/Month/Quarter/Second/Week/Year))
Fecha = DATEDIFF(Comercial[Fecha Inicio], Comercial[Fecha Fin],DAY)
Resultado = 25

@BiwiserAcademy
DAX - Funciones de Texto

LOWER : Convierte todas las letras de una cadena de texto a minúsculas.


Modificación Texto = LOWER (“HOLA”)
Resultado = hola
UPPER : Convierte una cadena de texto a letras mayúsculas.
Modificación Texto = UPPER (“hola”)
Resultado = HOLA

RIGHT : Devuelve el último carácter o caracteres de una cadena de texto, en función del número de caracteres que especifique.

Función = RIGHT(“Hola Mundo”,5)


Resultado = Mundo
LEFT : Devuelve el número de caracteres especificados desde el principio de una cadena de texto.

Función = LEFT(“Hola Mundo”,4)


Resultado = Hola

@BiwiserAcademy
DAX - Funciones de Texto

CONCATENATE : Combina dos cadenas de texto en una sola.


Concatenado = CONCATENATE(“Hola”,“ Mundo”)
Resultado = Hola Mundo

TRIM : Quita todos los espacios del texto, excepto los espacios individuales entre palabras.
Concatenado = TRIM(“Hola ”)
Resultado = Hola

@BiwiserAcademy
DAX - Funciones Lógicas

IF : Comprueba una condición y devuelve un valor cuando es "TRUE"; en caso contrario, devuelve un segundo valor
Sintaxis = IF(<Prueba Lógica>,<Verdadero>,<Falso>)
Función IF = IF( (10*11) > 100, "Es mayor que 100","Es menor que 100")
Resultado = Es mayor que 100

AND : Comprueba si los dos argumentos son TRUE y devuelve TRUE si todos lo son.
Función AND – Sintaxis 1 = IF( AND( (10*11) > 100, (10*11) < 109 ), "Es mayor que 100","Es menor que 100")
Cuando se necesitan más de dos condiciones puede cambiar AND por &&.
Función AND – Sintaxis 2 = IF( (10*11) > 100 && (10*11) < 109, "Dentro del intervalo","Fuera del intervalo")
Resultado = Fuera del intervalo

OR : Comprueba si uno de los argumentos es TRUE para devolver TRUE.


Función OR – Sintaxis 1 = IF( OR( (10*11) > 100, (10*11) < 109 ), "Cumple","No Cumple")
Cuando se necesitan más de dos condiciones puede cambiar OR por ||.
Función OR – Sintaxis 2 = IF( (10*11) > 100 || (10*11) < 109, "Cumple","No Cumple")
Resultado = Cumple

@BiwiserAcademy
DAX – Función Lógicas - SWITCH

SWITCH Evalúa una expresión en una lista de valores y devuelve una de varias expresiones de resultado
posibles.

SINTAXIS: SWITCH(<expresión>,
<Valor1>,<Resultado1>,
<Valor2>,<Resultado2>,<Else>)

EJEMPLO: Nombre Mes (SWITCH) = SWITCH((Ventas[Mes]),


1,"Enero",
2,"Febrero",
3,"Marzo",
4,"Abril",
5,"Mayo",
6,"Junio")

@BiwiserAcademy
DAX – Función CALCULATE

CALCULATE es una de las funciones más importantes en el lenguaje DAX, ya que nos permite
evaluar expresiones en base a filtros aplicados, filtros los cuales pueden ser de un tipo de formato
de carácter Numérico, Fecha, Texto o Booleano.

SINTAXIS: CALCULATE(<expresión>,<filtro1>,<filtro2>…)

EJEMPLO: CALCULATE(SUM(Comercial[Ventas]),
Comercial[Pais]=“Chile”,
Comercial[Ciudad]=“Santiago”…)

Evalúa una expresión en un contexto de filtro modificado.

@BiwiserAcademy
DAX – Contextos de cálculo - Filtro

El contexto de filtro aplica cuando Power BI permite filtrar una función previamente creada en función de un filtro.
Ejemplo: Medida “Suma de Importe”, se recalculará en función del o los filtros en selección

@BiwiserAcademy
DAX – Contextos de cálculo - Filas

El contexto de fila existe en el momento en el que se escribe una expresión en una columna calculada,
esta expresión se evalúa para cada fila de la tabla creando un contexto de fila para cada fila.

Este contexto también existe cuando utilizamos funciones DAX que cumplen un rol de “Iteradores”,
estas funciones en si finalizan en sus nombres con una “X” al final, por lo tanto, es más intuitivo poder
identificarlas, un par de ellas son:

• SUMX ()
• AVERAGEX ()

Por lo tanto, sus cálculos trabajan sobre una expresión de tabla, creando un contexto de fila.

@BiwiserAcademy
FUNCIONES
SUM
MIN
MAX
AVERAGE “Recordar… Encontraran muchas
MEDIAN funciones de Excel en DAX, como
DAY también funciones las cuales son
YEAR
exclusivas de DAX”.
MONTH
TODAY
MINUTE
SECOND
NOW

@BiwiserAcademy
CREACIÓN TABLAS CALENDARIO
DAX

@BiwiserAcademy
tabla calendario

En todo modelo de datos, es fundamental poder contar con una tabla calendario la cual nos permita
poder definir los distintitos atributos de un campo date y por consiguiente poder construir informes
bastantes más dinámicos ante el hecho de poder filtrar N cantidad de tablas con un solo campo fecha.

Para ello DAX nos entrega los comandos necesarios para su creación.

¿Cuál es el primer paso?

@BiwiserAcademy
DAX – Creación de tabla calendario – Opción 1

En conjunto a la función CALENDAR podemos generar series de tiempo a través de intervalos de fecha
previamente definidos.

SINTAXIS: CALENDAR(<Fecha Inicio>,<Fecha Fin>)

EJEMPLO: CALENDAR(DATE(2022,01,01),DATE(2022,12,31))

@BiwiserAcademy
DAX – Creación de tabla calendario – Opción 2
En combinación de la función ADDCOLUMNS y CALENDAR podemos generar series de tiempo a través de
intervalos de fecha previamente definidos, la diferencia se presenta en que podemos generar nuevas
columnas a partir de la columna fecha generada por la función CALENDAR.

SINTAXIS: ADDCOLUMNS(<Tabla>,
<Nombre Columna1>,<Contenido Columna1>…)

EJEMPLO: ADDCOLUMNS(
CALENDAR(DATE(2021,1,1),DATE(2022,12,31)),
"AÑO", YEAR([DATE]),
"TRIMESTRE", QUARTER([DATE]),
"MES", MONTH([DATE]),
"NOM_MES",FORMAT([DATE],"mmm"),
"DIA",WEEKDAY([DATE],2),
"SEMANA", WEEKNUM([DATE],2) )

@BiwiserAcademy
Orden personalizado – valores de columnas

En variadas ocasiones nos enfrentaremos a requerimientos de negocio en los que tendremos


que construir visualizaciones que contendrán una dimensión que necesitaremos provenga con
un orden preestablecido.

1 2

@BiwiserAcademy
Orden personalizado – valores de columnas – ¿Cómo lo conseguimos?

1. Nos dirigimos a datos.


2. Nos posicionamos sobre la columna
que necesitamos darle orden.
3. Nos dirigimos a “Ordenar por
columna”.
4. Seleccionamos la columna con la
cual deberá ser ordenada (Esta debe
ser numérica).

@BiwiserAcademy

También podría gustarte