Está en la página 1de 23

POWER BI:

LENGUAJE DAX Y APLICACIONES


Semana 3

POWER BI: Lenguaje DAX y aplicaciones 1


Principales elementos de DAX

En este módulo aprenderá a definir la lógica de negocios mediante la incorporación de


cálculos de expresiones de análisis de datos (DAX). Aprenderá con DAX a crear tablas
calculadas, columnas calculadas y medidas, que son diferentes tipos de cálculos de modelos.
Además, aprenderá a escribir fórmulas de DAX y a darles formato; estas fórmulas constan de
expresiones que usan funciones, operadores, referencias a objetos de modelo, constantes y
variables.

Todos los ejemplos adjuntos en esta lectura son construidos utilizando la base de datos
Adventure Works (Microsoft, 2016), la cual fue utilizada en el video tutorial y viene adjunta
en los recursos del módulo.

Introducción

Data Analysis Expressions (DAX) es una librería de Power BI que permite realizar
principalmente tres tipos de cálculos al modelo de datos:
1. Tabla calculada: Tabla que se añade al modelo de datos que provienen a partir de una
fórmula de DAX.
2. Columna calculada: Columna creada a partir de una fórmula en DAX y que se añade
a una tabla del modelo de datos.
3. Medidas: Las medidas son similares a las columnas calculadas con la excepción de
que se evalúan en el momento que los datos son consultados y su resultado no se
almacena en el modelo de datos.

POWER BI: Lenguaje DAX y aplicaciones 2


En esta lectura se explica con mayor detalle cómo llevar cada una de estas acciones con DAX.
El documento está separado en dos capítulos. En el primer capítulo se introduce los
elementos principales de DAX, como fórmulas, tipos de datos, funciones, operadores y
variables. En el segundo capítulo se introduce su uso para calcular tablas, columnas y
medidas.

Principales elementos de DAX

En este capítulo se describen los principales elementos de DAX, como los tipos de datos,
funciones, operadores, formulas y variables.

Tipos de datos

En el modelo de datos cada columna tiene asignado un tipo de dato, el cual tiene por función
que todos los valores de la columna se ajusten a ese tipo de dato. Los tipos de datos de DAX
son diferentes a los del modelo de datos, su relación es mostrada en la Tabla 1. Un tipo de
dato especial en DAX es el BLANK, el cual se usa para los valores NULL como las celdas en
blanco de una base de datos. Dos funciones de DAX que se relacionan con el tipo de dato
BLANK: la función BLANK que devuelve BLANK y la función ISBLANK que prueba su una
expresión es BLACK y devuelve un Boolean.
Tipos de datos Tipos de datos de Descripción
del modelo DAX
Número entero Entero de 64 bits 263 a 263-1
Número decimal Real de 64 bits Negativo: -1,79 x 10308 a -2,23 x 10-308 Cero
Positivo: 2,23 x 10-308 a 1,79 x 10308 Limitado
a 17 dígitos decimales
POWER BI: Lenguaje DAX y aplicaciones 3
Boolean Boolean TRUE o FALSE
Texto String Cadena de caracteres Unicode
Fecha Fecha y hora Las fechas válidas son todas las fechas
posteriores al 1 de marzo de 1900
Moneda Moneda -9,22 x 1014 a 9,22 x 1014 Limitado a cuatro
dígitos decimales de precisión fija
No procede BLANCK Ausencia de valor

Tabla 1: Relación entre los tipos de datos del modelo de datos y DAX

Fórmulas
Cada tipo de cálculo se define por su nombre, seguido del símbolo igual (=), que va seguido
de una fórmula de DAX. La sintaxis general es la siguiente:
<Calculation name> = <DAX formula>
Por ejemplo, la definición de la tabla calculada Ship Date que duplica los datos de la tabla
Date es:

Ship Date = 'Dim Date'

Las fórmulas de DAX son un conjunto de expresiones que devuelven un resultado, así las
fórmulas de tabla calculada deben devolver un objeto tabla, en cambio, las fórmulas de
medida y columna deben devolver un valor escalar o único. Las fórmulas se ensamblan
mediante: funciones, operadores, referencias a objetos de modelo (tabla, columna o
medida), valores constantes, variables y espacios en blanco.

POWER BI: Lenguaje DAX y aplicaciones 4


Funciones

DAX posee cientos de funciones de las cuales más de 80 se encuentran disponibles en Excel.
Las funciones de DAX se pueden agrupar en 5 principales grupos: resumen, matemáticas,
texto, fechas y lógicas. A continuación, se describen algunas de estas.

Funciones de resumen

DAX cuenta con múltiples funciones que permiten resumir los datos, como SUM, AVERAGE,
MIN, MAX, COUNT y DISTINCTCOUNT, las cuales son descritas en la Tabla 2.

Función Descripción
SUM Suma todos los valores en una columna
AVERAGE Retorna el promedio
MIN Retorna el valor más pequeño
MAX Retorna el valor más largo
COUNT Cuenta el total de ocurrencias

DISTINCTCOUNT Cuenta el total de ocurrencias únicas

Tabla 2: Muestra de funciones de resumen

POWER BI: Lenguaje DAX y aplicaciones 5


Funciones matemáticas

Algunas de las funciones matemáticas de DAX más usadas son ABS, ROUND, DIVIDE, POWER,
EXP y LOG, las cuales son descritas en la Tabla 3.

Función Descripción
ABS Devuelve el valor absoluto de un número.
ROUND Redondea N dígitos de un número.
DIVIDE Realiza la división y devuelve un resultado alternativo o BLANCK si
ocurre división por 0.
POWER Devuelve un número elevado a una potencia.
EXP Devuelve el exponencial de un número.
LOG Devuelve el logaritmo de un número de la base ingresada.

Tabla 3: Muestra de funciones matemáticas

POWER BI: Lenguaje DAX y aplicaciones 6


Funciones de texto

Las funciones de texto son aquellas que manipulan cadenas de caracteres (String), siendo las
funciones más comunes COMBINEVALUES, CONCATENATE, LEN, FIND, SEARCH y REPLACE,
las cuales se encuentra descritas en la Tabla 4.

Función Descripción
COMBINEVALUES Combina dos o más cadenas de texto en una sola.
CONCATENATE Combina dos cadenas de texto en una sola.
LEN Devuelve el número de caracteres de un String.
FIND Devuelve la primera posición de una cadena de texto en otra.
SEARCH Devuelve el número del carácter en el que se encuentra por
primera vez un carácter o una cadena de texto específicos, de
izquierda a derecha.
REPLACE Reemplaza la parte de una cadena de texto, según el número de
caracteres que se especifique, por otra cadena de texto.

Tabla 4: Muestra de funciones de texto

POWER BI: Lenguaje DAX y aplicaciones 7


Funciones de fecha

En la Tabla 5 se describen algunas funciones de fechas que son comúnmente utilizadas.

Función Descripción
CALENDAR Devuelve una tabla con una sola columna
denominada "Date" que contiene un
conjunto contiguo de fechas entre el rango
definido.
CALENDARAUTO Devuelve una tabla con una sola columna
denominada "Date" que contiene un
conjunto contiguo de fechas entre un rango
que se obtiene automáticamente a partir
del modelo.
DATE Devuelve la fecha especificada en formato
de fecha y hora.
DATEDFIFF Devuelve el recuento del intervalo entre
dos fechas.
YEAR Devuelve el año entre 1900-9999.
MONTH Devuelve el mes entre 1-12.
DAY Devuelve el día del mes entre 1-31.
NOW Devuelve la fecha y la hora actuales.

Tabla 5: Muestra de funciones de fecha

POWER BI: Lenguaje DAX y aplicaciones 8


Funciones lógicas

Las funciones lógicas se utilizan para evaluar expresiones. Algunas funciones lógicas comunes
son TRUE, FALSE, AND, OR, NOT, IF y IFERROR. En la Tabla 6 se describe cada una de estas
funciones.
Función Descripción
TRUE Devuelve el valor lógico TRUE.
FALSE Devuelve el valor lógico FALSE.
AND Devuelve TRUE si los dos argumentos son
TRUE.
OR Devuelve TRUE si uno de los dos
argumentos es TRUE.
NOT Cambia FALSE por TRUE o TRUE por FALSE.
IF Devuelve un valor si la expresión a evaluar
es TRUE, en caso contrario, devuelve otro
valor.
IFERROR Evalúa una expresión y devuelve un valor
especificado si la expresión devuelve un
error.

Tabla 6: Muestra de funciones lógicas

POWER BI: Lenguaje DAX y aplicaciones 9


Operadores de DAX

Las fórmulas de DAX pueden usar operadores de DAX para crear expresiones que puedan
realizar cálculos aritméticos, comparaciones o probar condiciones. En primer lugar, están los
operadores aritméticos que son mostrados en Tabla 7. Una función relevante que vale la
pena destacar es la función DIVIDE la cual reemplaza al operador de división (/), la cual puede
devolver un valor predeterminado o BLANK cuando ocurre una división por cero. En segundo
lugar, están los operadores de comparación se utilizan para comparar dos valores, siendo el
resultado de dicha comparación TRUE si es verdadero o FALSE si es falsa. En la Tabla 8 se
enumeran los operadores de comparación.

Es importante destacar que todos los operadores de comparación, excepto == consideran


BLANK como igual al número cero, una cadena vacía (““), la fecha 30 de diciembre o FALSE.
Esto significa que la expresión [Sales Amount] = 0 será TRUE cuando el valor de [Sales
Amount] sea cero o BLANK. En cambio, [Sales Amount] == 0] es TRUE solo cuando el valor de
[Sales Amount] es cero.
En la Tabla 9 los operadores lógicos que permiten combinar expresiones para producir un
único resultado.

Operador Descripción

+ Suma

- Resta

* Multiplicación

/ División

^ Exponenciación

Tabla 7: Operadores aritméticos

POWER BI: Lenguaje DAX y aplicaciones 10


Operador Descripción

= Igual a

== Estrictamente igual a

> Mayor que

< Menor que

>= Mayor o igual que

<= Menor o igual que

<> No igual a

Tabla 8: Operadores de comparación

Operador Descripción
&& (doble ampersand) Crea una condición AND entre dos
expresiones
|| (doble pipe) Crea una condición OR entre dos
expresiones
IN Crea una condición OR entre cada fila a ser
compara con la tabla

Tabla 9: Operadores lógicos

POWER BI: Lenguaje DAX y aplicaciones 11


Variables

En DAX se pueden declarar variables dentro de una fórmula por múltiples motivos. En primer
lugar, mejora la legibilidad y el mantenimiento de las fórmulas, debido a que se evita la
repetición de código. En segundo lugar, mejora el rendimiento ya que las variables se evalúan
una vez. Por último, permite realizar pruebas sencillas de una fórmula compleja en el
momento del su diseño. Por ejemplo, para calcular la rentabilidad año a año se puede usar
la siguiente medida sin usar variables.

Profit YoY % =
DIVIDE(
[Profit]
- CALCULATE(
[Profit],
SAMEPERIODLASTYEAR('Fact Internet Sales'[OrderDate])
),
CALCULATE(
[Profit],
SAMEPERIODLASTYEAR('Fact Internet Sales'[OrderDate])
)
)

POWER BI: Lenguaje DAX y aplicaciones 12


La definición de la medida Profit YoY% se puede reescribir con el uso de una variable que
guarde la utilidad del año anterior.
Profit Year % =
VAR ProfitPriorYear =
CALCULATE(
[Profit],
SAMEPERIODLASTYEAR('Fact Internet Sales'[OrderDate])
)
RETURN
DIVIDE(
[Profit]-ProfitPriorYear,
ProfitPriorYear
)

Añadir cálculos al modelo de datos con DAX

En este capítulo se explica cómo añadir a través de ejemplos como añadir nuevos cálculos al
modelo de datos, como crear tablas calculadas, columnas y medidas.

Tablas calculadas

Con DAX se pueden escribir fórmulas para agregar una tabla calculada al modelo de datos.
La fórmula puede duplicar o transformar los datos del modelo existente, o crear una serie de
datos para crear una tabla. Los datos de las tablas calculadas siempre se importan en el
modelo, por lo que aumenta el tamaño de almacenamiento del modelo y puede prolongar la
duración de la actualización de los datos. Las tablas calculadas pueden ser útiles en diversos
escenarios, como para crear tablas de fechas, dimensiones realizadoras de roles o análisis de
hipótesis.

POWER BI: Lenguaje DAX y aplicaciones 13


Tablas de fechas

Las tablas de fechas son necesarias para aplicar filtros de hora especiales conocidos como
inteligencia de tiempo. Una familia de funciones de DAX, conocida como funciones de
inteligencia de tiempo, solo funciona correctamente cuando se configura una tabla de fechas.
Cuando los datos originales no incluyen una tabla de fechas esta se puede crear como una
tabla calculada a través de las funciones CALEANDAR o CALEANDARAUTO de DAX.
Para crear una nueva tabla se debe ir a Herramientas de tablas en el modelo de datos y dar
clic Nueva tabla, tras esto se habilita un cuadro de texto dentro del cual se pueden escribir
fórmulas en DAX para generar una nueva tabla. Por ejemplo, en la Figura 1 se muestra como
generar una tabla calculada con la función CALENDARAUTO, la cual devuelve una tabla con
una sola columna denominada "Date" que contiene un conjunto contiguo de fechas entre la
fecha mínima y máxima de los datos.

Figura 1: Crear tabla calculada con la función CALENDARAUTO

POWER BI: Lenguaje DAX y aplicaciones 14


Dimensiones realizadoras de roles

Cuando dos tablas de modelos tienen varias relaciones, podría deberse a que el modelo tiene
una dimensión realizadora de roles. Por ejemplo, se tiene la tabla Fact Internet Sales que
incluye dos columnas de fecha, OrderDateKey y ShipDateKey, ambas columnas están
relacionadas con la columna DateKey de la tabla Dim Date. Esto es ilustrado en la Figura 2.
En este caso, la tabla Dim Date se describe como una dimensión realizadora de roles, ya que
podría desempeñar el rol de fecha de pedido o fecha de envío.

Figura 2: Relación activa e inactiva entre la tabla Fact Internet Sales y Dim Date. La relación activa relaciona el campo
OrderDateKey de la primera tabla con el campo DateKey de la segunda. La relación inactiva (relación discontinua)
relaciona el campo ShipDateKey de la primera tabla con el campo DateKey de la segunda.

Los modelos de datos solo permiten una relación activa entre las tablas, lo que es indicado a
través de una línea sólida. De forma predeterminada, Power BI utiliza la relación activa para

POWER BI: Lenguaje DAX y aplicaciones 15


propagar los filtros, en este caso, la relación entre DateKey y OrderDateKey. En este caso, un
mejor diseño del modelo podría ser tener dos tablas de fecha, cada una con una relación
activa con la tabla Fact Internet Sales. En la Figura 3 se muestra cómo crear esta tabla y en la
Figura 4 el modelo de datos resultante.

Figura 3: Duplicar tabla Dim Date bajo el nombre Ship Date

POWER BI: Lenguaje DAX y aplicaciones 16


Figura 4: La tabla Fact Internet Sales está relacionada a través de sus campos OrderDateKey y ShipDateKey con el campo

DateKey de la tabla Dim Date y Ship Date respectivamente.

Análisis de hipótesis

Power BI Desktop admite una característica llamada parámetros de hipótesis o parámetro


what-if. Un parámetro what-if permite segmentar los datos y agregarlos a una tabla calculada
al modelo. Por ejemplo, podría crear un informe que permita al personal de ventas ver sus
compensaciones si satisfacen determinados objetivos o porcentajes de venta, o ver la
influencia que tiene el incremento en las ventas sobre unos mayores descuentos.
En particular, estas tablas calculadas no están relacionadas con otras tablas de modelos
porque no se usan para propagar los filtros.

POWER BI: Lenguaje DAX y aplicaciones 17


Para crear una tabla what-if se debe estar en la vista Informe, en el menú Modelado y dar
click a Parámetro nuevo, tras esto se abrirá una ventana en la que se puede definir el patrón
de la columna que tendrá la tabla. En la Figura 5 se muestra cómo crear el parámetro de
hipótesis Discount como una columna que toma valores en el intervalo [0, 0.5] con saltos de
0.01. En la Figura 6 se muestra la tabla creada en el modelo de datos a partir del parámetro
de hipótesis Discount.

Figura 5: Menú de creación de un parámetro de hipótesis

POWER BI: Lenguaje DAX y aplicaciones 18


Figura 6: Tabla calculada a partir de un parámetro de hipótesis

POWER BI: Lenguaje DAX y aplicaciones 19


Columnas calculadas

En Power BI se puede escribir fórmulas en DAX para agregar una columna calculada a
cualquier tabla del modelo de datos. La fórmula se evalúa para cada fila de la tabla y devuelve
un valor único. Por ejemplo, en la tabla Fact Internet Sales usando los campos OrderDate y
ShipDate se puede obtener la cantidad de horas en que el pedido tarda en llegar al cliente.
DeliveryTime = DATEDIFF('Fact Internet Sales'[OrderDate], 'Fact Internet Sales'[ShipDate],
HOUR)

Para crear la columna en Power BI desde Herramientas de tablas se debe dar click a Nueva
Columna, tras esto se abre el menú Herramientas de columnas en el cual aparece un cuadro
de texto blanco en donde se pueden escribir las fórmulas. En la Figura 7 se muestra cómo
crear la columna DeliveryTime.

Figura 7: Crear columna DeliveryTime en la tabla Fact Internet Sales a partir de los campos OrderDate y ShipDate

POWER BI: Lenguaje DAX y aplicaciones 20


En el panel Campos, las columnas calculadas se mejoran con un icono especial. En la Figura
8 se muestra una sola columna calculada en la tabla Fact Internet Sales.

Figura 8: Columnas calculadas en el panel de campos. En la tabla Fact Internet Sales el campo calculado DeliveryTime se
muestra con un símbolo especial

Medidas
Puede escribir una fórmula de DAX para agregar una medida a cualquier tabla del modelo. La
fórmula está relacionada con la obtención del resumen sobre los datos del modelo. De forma
similar a una columna calculada, la fórmula debe devolver un valor único. A diferencia de las
columnas calculadas, que se evalúan en el momento de la actualización de datos, las medidas
se evalúan en el momento de la consulta y sus resultados nunca se almacenan en el modelo.
A continuación, se muestra como calcular tres medidas a partir de la tabla Fact Internet Sales:
el ingreso total (Revenue), el costo total (Cost) y la utilidad total (Profit).

Revenue = Sum('Fact Internet Sales'[SalesAmount])


Cost = Sum('Fact Internet Sales'[TotalProductCost])
Profit = [Revenue] – [Cost]

POWER BI: Lenguaje DAX y aplicaciones 21


Para crear una medida en Power BI se debe en Herramientas de tablas dar click a Nueva
medida, tras esto se abre el menú Herramientas de medición en el cual aparece un cuadro
de texto blanco en donde se pueden escribir las fórmulas. En la Figura 9 se muestra cómo
crear la medida Revenue.

Figura 9: Crear medida Revenue como la suma del campo SalesAmount de la tabla Fact Internet Sales

En el panel Campos, las medidas se muestran con el icono de la calculadora. En la Figura 10


se muestra la medida Revenue calculada en el punto anterior en el panel de campos.

Figura 10: Medidas en el panel Campos. Las medidas explícitas son mostradas con el símbolo de calculadora y las medidas
implícitas con el símbolo de sigma (∑)

En ocasiones, las medidas se pueden describir como medidas explícitas a los que se suele
hacer referencia simplemente como medidas. Sin embargo, también existe el concepto de
medidas implícitas. Las medidas implícitas son columnas que se pueden resumir mediante
objetos visuales de formas sencillas, como recuento, suma, mínimo, máximo, etc. Estas
medidas están identificadas en el panel Campos por el símbolo sigma (∑).

POWER BI: Lenguaje DAX y aplicaciones 22


Referencias

Microsoft (2016). Adventure Works. https://github.com/Microsoft/sql-server-


samples/releases/download/adventureworks/
Microsoft (2020). Referencia de expresiones de análisis de datos (DAX).
https://docs.microsoft.com/es-es/dax/

POWER BI: Lenguaje DAX y aplicaciones 23

También podría gustarte