Subido por henry_rv19

Funciones y DAX

Anuncio
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
del modelo
DAX
Descripción
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
Descargar