[go: up one dir, main page]

0% encontró este documento útil (0 votos)
24 vistas28 páginas

Guía Completa de DAX: Sintaxis y Nomenclatura

DAX es un lenguaje creado por Microsoft para el análisis de datos en Power BI, Excel y Analysis Services. DAX permite crear medidas, columnas y tablas calculadas mediante el uso de funciones, operadores y referencias. Las fórmulas DAX siguen una sintaxis específica y los nombres de objetos como tablas y columnas deben cumplir con ciertos requisitos de nomenclatura.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas28 páginas

Guía Completa de DAX: Sintaxis y Nomenclatura

DAX es un lenguaje creado por Microsoft para el análisis de datos en Power BI, Excel y Analysis Services. DAX permite crear medidas, columnas y tablas calculadas mediante el uso de funciones, operadores y referencias. Las fórmulas DAX siguen una sintaxis específica y los nombres de objetos como tablas y columnas deben cumplir con ciertos requisitos de nomenclatura.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 28

Data Analysis Expressions

(DAX)

Saavedra, C. (2022). Data Analysis Expressions


(DAX).
Apunte docente. Universidad Andrés Bello.
Data Analysis Expressions (DAX)

CONTENIDO

1. Requisitos de la sintaxis .....................................................................................................3

2. Requisitos de nomenclatura ...............................................................................................5

2.1 Nomenclatura Tablas ..................................................................................................6

2.2 Nomenclatura Medidas ...............................................................................................6

2.3 Nomenclatura Columnas .............................................................................................6

2.4 Nomenclatura Palabras clave reservadas ...................................................................6

2.5 Nomenclatura Caracteres especiales .........................................................................7

2.6 Ejemplos de nombres de objeto ..................................................................................7

3. Operadores DAX ................................................................................................................8

3.1 Operadores aritméticos ...............................................................................................8

3.2 Operadores de comparación .......................................................................................9

3.3 Operador de concatenación de texto y lógicos .........................................................10

3.4 Operadores y orden de precedencia .........................................................................11 2

4. Tipos de datos ..................................................................................................................13

5. Funciones DAX .................................................................................................................15

6. Escribir fórmulas en DAX .................................................................................................15

7. Referencias en fórmulas DAX ..........................................................................................16

7.1 Sintaxis de las fórmulas ............................................................................................17

7.2 Funciones de iterador ................................................................................................20

7.3 Función iterador RANKX ...........................................................................................21

7.4 Filtro en las funciones ...............................................................................................23

7.5 Ejemplos ....................................................................................................................24

Referencias ..............................................................................................................................28
Data Analysis Expressions (DAX)

¿QUÉ ES DAX?

DAX (data analysis expressions) es un lenguaje específico para análisis de datos, creado por
Microsoft en 2010 para ser aplicado con un modelo de datos tabular, pudiendo usarse en Excel,
Analysis Services y Power BI. DAX recopila funciones, operadores y constantes, que se
pueden usar en una fórmula o expresión para calcular y devolver uno o varios valores. Dicho
más fácilmente, DAX ayuda a crear información nueva de datos, que ya está en un modelo.

El lenguaje DAX fue creado específicamente para el manejo de modelos de datos, mediante
el uso de fórmulas y expresiones. Así, se utiliza en varios productos de Microsoft, como
Microsoft Power BI, Microsoft Analysis Services y Microsoft Power Pivot para Excel. Todos
estos productos comparten el mismo motor interno, llamado Tabular. Las fórmulas DAX se
usan en medidas, columnas calculadas, tablas calculadas y seguridad de nivel de fila.
Mediante el uso de expresiones de análisis de datos (DAX), puede agregar tres tipos de
cálculos a su modelo de datos:

• Tablas calculadas.
3
• Columnas calculadas.
• Medidas.

1. REQUISITOS DE LA SINTAXIS

Una fórmula DAX siempre comienza con un signo igual (=). Después del signo igual, se puede
proporcionar cualquier expresión que se evalúe como un valor escalar, o una que se pueda
convertir en un valor escalar, que incluya la siguiente información:

• Una constante escalar o expresión que usa un operador escalar (+, -, *, / , >=, ..., &&, ...).

• Referencias a columnas o tablas: el lenguaje DAX siempre usa tablas y columnas como
entradas a funciones, nunca una matriz o un conjunto arbitrario de valores.
Data Analysis Expressions (DAX)

• Operadores, constantes y valores proporcionados como parte de una expresión.

• El resultado de una función y sus argumentos necesarios: algunas funciones DAX


devuelven una tabla en lugar de un valor escalar, por lo que se deben ajustar en una función
que evalúa la tabla y devuelve un valor escalar. A menos que la tabla sea una tabla de una
sola fila, se trata como un valor escalar.

La mayoría de las funciones DAX requieren uno o más argumentos, que pueden incluir
tablas, columnas, expresiones y valores. Sin embargo, algunas funciones, como PI, no
requieren ningún argumento, pero siempre requieren paréntesis para indicar el argumento
NULL. Por ejemplo, siempre se debe escribir PI() en lugar de PI. También se pueden anidar
funciones dentro de otras funciones.

• Expresiones: una expresión puede contener alguno de los elementos siguientes o todos
ellos: operadores, constantes o referencias a columnas.

Por ejemplo, todas las fórmulas siguientes son válidas.

4
Fórmula Resultado
=3 3

= "Sales" Sales

= "Sales"[Importe] Si utiliza esta fórmula dentro de la tabla Sales, obtendrá el valor de la


columna Importe en la tabla Sales de la fila actual.

= (0,03 *[Importe]) Tres por ciento del valor de la columna Importe de la tabla actual.

=0,03 *[Amount] Aunque esta fórmula se puede usar para calcular un porcentaje, el
resultado no se muestra como un porcentaje, a menos que se aplique
el formato en la tabla.

= PI() Valor de la constante pi.


Data Analysis Expressions (DAX)

2. REQUISITOS DE NOMENCLATURA

A menudo, un modelo de datos contiene varias tablas. Las tablas y sus columnas, de forma
conjunta, componen una base de datos almacenada en el motor de análisis en memoria. En
esa base de datos, todas las tablas deben tener nombres únicos. Los nombres de las columnas
también deben ser únicos en cada tabla. Los nombres de objeto no distinguen mayúsculas de
minúsculas; por ejemplo, los nombres SALES y Sales representarían la misma tabla.

Cada columna y medida que se agregue a un modelo de datos existente, debe pertenecer a
una tabla específica. La tabla que contiene la columna se especifica implícitamente, al crear
una columna calculada en una tabla, o explícitamente, al crear una medida y se especifica el
nombre de la tabla donde se debe almacenar la definición de la medida.

Cuando se usa una tabla o una columna como entrada para una función, generalmente se
debe calificar el nombre de la columna. El nombre completo de una columna es el nombre de
la tabla, seguido del nombre de la columna entre corchetes: por ejemplo, 'Ventas de EE.
UU.'[Productos]. Siempre se requiere un nombre completo cuando se hace referencia a una
columna en los contextos siguientes: 5

• Como argumento de la función, VALUES.


• Como argumento de la función, ALL o EXCEPT.
• En un argumento de filtro para las funciones, CALCULATE o CALCULATETABLE.
• Como argumento de la función, RELATEDTABLE.
• Como argumento para cualquier función de inteligencia de tiempo.

Un nombre de columna incompleto es, simplemente, el nombre de la columna, entre corchetes:


por ejemplo, [Importe de ventas]. Para citar un caso: si se hace referencia a un valor escalar
de la misma fila de la tabla actual, se puede usar el nombre de la columna no completo. Si el
nombre de una tabla contiene espacios, palabras clave reservadas, o caracteres no permitidos,
deberá incluir el nombre de la tabla entre comillas simples. También deberá escribir los
nombres de tabla entre comillas si el nombre contiene algún carácter fuera del rango de
caracteres alfanuméricos ANSI, independientemente de si la configuración regional es
compatible con el conjunto de caracteres o no.
Data Analysis Expressions (DAX)

2.1 NOMENCLATURA TABLAS

• Los nombres de tabla son necesarios siempre que la columna sea de una tabla distinta de
la actual. Los nombres de tabla deben ser únicos en la base de datos.
• Los nombres de tabla deben ir entre comillas simples si contienen espacios, otros
caracteres especiales o cualquier carácter alfanumérico que no sea el inglés.

2.2 NOMENCLATURA MEDIDAS

• Los nombres de medida siempre deben ir entre corchetes.


• Los nombres de medida pueden contener espacios.
• Cada nombre de medida debe ser único en el modelo. Por lo tanto, el nombre de la tabla
es opcional delante de un nombre de medida cuando se hace referencia a una medida
existente. Sin embargo, cuando se crea una medida, siempre se debe especificar una tabla
en la que se almacenará la definición de la medida.

2.3 NOMENCLATURA COLUMNAS


6
Los nombres de columna deben ser únicos en el contexto de una tabla. Sin embargo, varias
tablas pueden tener columnas con los mismos nombres (la desambiguación viene con el
nombre de la tabla). En general, se puede hacer referencia a las columnas sin hacer referencia
a la tabla base a la que pertenecen, excepto cuando pueda haber un conflicto de nombres para
resolver, o con ciertas funciones que requieren que los nombres de columna estén completos.

2.4 NOMENCLATURA PALABRAS CLAVE RESERVADAS

Si el nombre que se utiliza para una tabla es el mismo que el de una palabra clave reservada
de Analysis Services, se genera un error y se debe cambiar el nombre de la tabla. Sin embargo,
puede utilizar palabras clave en nombres de objetos, si el nombre del objeto está entre
corchetes (en las columnas) o con comillas (en las tablas).
Data Analysis Expressions (DAX)

2.5 NOMENCLATURA CARACTERES ESPECIALES

Los caracteres y tipos de caracteres siguientes no son válidos en los nombres de tablas,
columnas o medidas:

• Espacios iniciales o finales; a menos que los espacios se incluyan entre delimitadores de
nombre, corchetes o apóstrofes únicos.
• Caracteres de control.
• Los caracteres siguientes no son válidos en los nombres de objetos:

.,;':/\|?&%$!+=()[]{}<>|?&%$!+=()[]{}<>

2.6 EJEMPLOS DE NOMBRES DE OBJETO

En la tabla siguiente, se muestran ejemplos de algunos nombres de objeto:

Tipos de
Ejemplos Comentario
objeto
Nombre de Sales Si el nombre de la tabla no contiene espacios ni otros caracteres
tabla especiales, no es necesario que el nombre se incluya entre 7
comillas.
Nombre de "Canada Sales" Si el nombre contiene espacios, tabulaciones u otros caracteres
tabla especiales, incluya el nombre entre comillas simples.
Nombre Ventas[Importe] El nombre de la tabla precede al nombre de la columna y el
completo de nombre de la columna se incluye entre corchetes.
la columna

Nombre Ventas[Beneficio] El nombre de la tabla precede al nombre de la medida y el


completo de nombre de la columna se incluye entre corchetes. En
la medida determinados contextos, siempre es necesario un nombre
completo.
Nombre de [Importe] El nombre no completo es, simplemente, el nombre de la
columna no columna, entre corchetes. Entre los contextos en los que se
completo puede usar el nombre no completo, se incluyen las fórmulas de
una columna calculada en la misma tabla, o en una función de
agregación que está buscando en la misma tabla.
Columna "Canada El nombre de la tabla contiene espacios, por lo que debe ir entre
completa de Sales"[Cantidad] comillas simples.
la tabla con
espacios
Data Analysis Expressions (DAX)

La sintaxis necesaria para cada función, así como el tipo de operación que puede realizar,
varían en gran medida dependiendo de la función. Pero, por lo general, las reglas siguientes
se aplican a todas las fórmulas y expresiones:

• Las fórmulas y expresiones DAX no pueden modificar o insertar valores individuales en las
tablas.
• No se pueden crear filas calculadas con DAX, solo se pueden crear medidas y columnas
calculadas.
• Al definir columnas calculadas, se pueden anidar funciones en cualquier nivel.
• DAX tiene varias funciones que devuelven una tabla. Normalmente, se usan los valores que
devuelven estas funciones como entrada a otras funciones, las que requieren una tabla
como entrada.

3. OPERADORES DAX

El lenguaje DAX (expresiones de análisis de datos) usa operadores para crear expresiones
8
que comparan valores, realizan cálculos aritméticos o trabajan con cadenas.

Existen cuatro tipos distintos de operadores de cálculo: aritméticos, de comparación, de


concatenación de texto y lógicos.

3.1 OPERADORES ARITMÉTICOS

Use los siguientes operadores aritméticos para realizar operaciones matemáticas básicas
(como sumas, restas o multiplicaciones), para combinar números y para producir resultados
numéricos.
Data Analysis Expressions (DAX)

Operadores aritméticos Significado Ejemplo

+ (signo más) Suma 3+3

– (signo menos) Resta o inversión del signo 3–1–1

* (asterisco) Multiplicación 3*3

/ (barra diagonal) División 3/3

^ (símbolo de intercalación) Exponenciación 16^4

3.2 OPERADORES DE COMPARACIÓN

Puede comparar dos valores con los siguientes operadores. Cuando se comparan dos valores
con estos operadores, el resultado es un valor lógico, ya sea TRUE o FALSE. HASTA AQUÍ

Operadores de 9
Significado Ejemplo
comparación

= Igual a [Region] = "Metropolitana"


== Estrictamente igual a [Region] == " Metropolitana "
> Mayor que [Sales Date] > "Jan 2009"
< Menor que [Sales Date] < "Jan 2009"
>= Mayor o igual que [Amount] >= 20000
<= Menor o igual que [Amount] <= 100
<> No igual a [Pais] <> "CHILE"

Todos los operadores de comparación, excepto ==, tratan BLANK (resultado en cero) como
equivalente al número 0, una cadena vacía "", DATE(1899, 12, 30), o FALSE. Como resultado,
[Column] = 0 será true cuando el valor de [Column] sea 0 o BLANK. Por el contrario, [Column]
== 0 solo es true cuando el valor de [Column] es 0.
Data Analysis Expressions (DAX)

3.3 OPERADOR DE CONCATENACIÓN DE TEXTO Y LÓGICOS

El signo " ( & ) permite unir, o concatenar, dos o más cadenas de texto, a fin de generar un
único fragmento de texto.

Operador de texto Significado Ejemplo

& ("Y comercial") Conecta, o concatena, dos valores para [Region] & ", " & [Pais]
generar un valor de texto continuo.

Use los operadores lógicos (&&) y (||) para combinar expresiones para generar un solo
resultado.

Operador de
Significado Ejemplos
texto

&& (doble Y Crea una condición AND entre dos ([Region] = "France") &&
comercial) expresiones que tienen ambas un resultado ([BikeBuyer] = "yes"))
10
booleano. Si ambas expresiones devuelven
TRUE, la combinación de las expresiones
también devuelve TRUE; de lo contrario, la
combinación devuelve FALSE.

|| (símbolo de Crea una condición OR entre dos expresiones (([Region] = "France") ||


doble barra lógicas. Si alguna de las expresiones devuelve ([BikeBuyer] = "yes"))
vertical) TRUE, el resultado es TRUE; solo cuando
ambas expresiones son FALSE, el resultado
es FALSE.

IN Crea una condición OR lógica entre cada fila 'Product'[Color] IN { "Red",


que se compara con una tabla. Nota: en la "Blue", "Black" }
sintaxis del constructor de tabla, se emplean
llaves.
Data Analysis Expressions (DAX)

3.4 OPERADORES Y ORDEN DE PRECEDENCIA

En algunos casos, el orden en el que se realiza el cálculo puede afectar al valor devuelto, de
ahí que sea importante comprender cómo se determina el orden y cómo este se puede cambiar
para obtener los resultados deseados.

Una expresión evalúa los operadores y los valores en un orden específico. Todas las
expresiones comienzan siempre con un signo igual (=). Este signo igual indica que los
caracteres tras él constituyen una expresión.

Después del signo igual están los elementos que se van a calcular (los operandos), que se
separan con operadores de cálculo. Las expresiones siempre se leen de izquierda a derecha,
pero el orden en el que los elementos se agrupan se puede controlar, en cierto grado, mediante
el uso de paréntesis.

Si se combinan varios operadores en una misma fórmula, la prioridad de las operaciones se


ordena según la siguiente tabla. Si los operadores tienen el mismo valor de precedencia, se
ordenan de izquierda a derecha. Por ejemplo, si una expresión contiene un operador de
multiplicación y división, se evalúan en el orden en que aparecen en la expresión, de izquierda
a derecha. 11

Operador Descripción

^ Exponenciación

– Inversión del signo (como en –1)

*y/ Multiplicación y división

! NOT (operador unario)

+y– Suma y resta

& Conecta dos cadenas de texto (concatenación)

=,==,<,>,<=,>=,<> Comparación
Data Analysis Expressions (DAX)

Para cambiar el orden de evaluación, debe incluir entre paréntesis la parte de la fórmula que
deba calcularse en primer lugar. Por ejemplo, la siguiente fórmula da como resultado 11,
porque la multiplicación se calcula antes que la suma. La fórmula multiplica 2 por 3 y, tras ello,
suma 5 al resultado.

=5+2*3 = 11

Por el contrario, si se usan paréntesis para cambiar la sintaxis, el orden se cambia de modo
que 5 y 2 se suman y el resultado de esto se multiplica por 3, dando como resultado 21.

= (5+2)*3 = 21

En el siguiente ejemplo, los paréntesis que rodean la primera parte de la fórmula hacen que el
cálculo evalúe la expresión (3 + 0.25) en primer lugar y, luego, divida el resultado entre el
resultado de la expresión (3 - 0.25).

= (3 + 0.25)/(3 - 0.25)

En el siguiente ejemplo, el operador de exponenciación se aplica en primer lugar, según las


reglas de precedencia de operadores, y, tras ello, se aplica el operador de inversión del signo.
12
El resultado de esta expresión es -4.

=-2^2

Para garantizar que el operador de inversión del signo se aplica primero al valor numérico, se
pueden usar paréntesis para controlar los operadores, como se muestra en el siguiente
ejemplo. El resultado de esta expresión es 4.

= (-2)^2

En general, los dos operandos de los lados izquierdo y derecho, de cualquier operador, deben
ser del mismo tipo de datos. Si los tipos de datos son diferentes, DAX los convertirá a un tipo
de datos común para aplicar el operador en algunos casos:

1. Ambos operandos se convierten al tipo de datos común más grande posible.


2. El operador se aplica, si es posible.
Data Analysis Expressions (DAX)

Por ejemplo, supongamos que tiene dos números que quiere combinar. Un número es el
resultado de una fórmula, como =[Price] * .20, y dicho resultado puede contener muchos
decimales, mientras que el otro número es un entero que se ha proporcionado como valor de
cadena.

En este caso, DAX convertirá ambos números en números reales en formato numérico, usando
el formato numérico más grande que pueda almacenar ambos tipos de números. Tras ello,
DAX aplicará la multiplicación.

4. TIPOS DE DATOS

Las columnas del modelo de datos tienen un tipo de datos establecido, lo que garantiza que
todos los valores de las columnas se ajusten a ese tipo de datos. Los tipos de datos de columna
se definen en Power Query o, en el caso de las columnas calculadas, se infieren de la fórmula.
Los tipos de datos de medida, similares a los tipos de datos de columna calculados, se infieren
de la fórmula.
13
No es necesario convertir o especificar, de cualquier otro modo, el tipo de datos de una
columna o valor que se usa en una fórmula DAX. Cuando se usan datos en una fórmula DAX,
este identifica automáticamente los tipos de datos de las columnas a las que se hace referencia
y de los valores que se escriben, y realiza las conversiones implícitas, cuando sea necesario,
para completar la operación especificada.

Por ejemplo, si se intenta agregar un número a un valor de fecha, el motor interpretará la


operación en el contexto de la función y convertirá los números a un tipo de datos común y,
después, presentará el resultado en el formato previsto, una fecha. Sin embargo, existen
algunas limitaciones en los valores que se pueden convertir correctamente. Si un valor o una
columna tienen un tipo de datos incompatible con la operación actual, DAX devuelve un error.
Además, DAX no proporciona funciones que permitan cambiar o convertir, explícitamente, el
tipo de datos de los datos existentes que se han importado en un modelo de datos.

Los tipos de datos del modelo no son los mismos que los tipos de datos DAX, aunque existe
una relación directa entre ellos. La siguiente tabla enumera los tipos de datos del modelo y los
tipos de datos DAX. Observe el rango de valores admitido para cada tipo de datos.
Data Analysis Expressions (DAX)

Tipo de datos
Tipo de datos DAX Descripción
del modelo

Número entero Entero de 64 bits -2 63 a través de 2 63 -1

Número Real de 64 bits Negativo: -1,79 x 10 308 hasta -2,23 x 10-308 Cero
decimal positivo: 2,23 x 10 -308 hasta 1,79 x 10 308 Limitado a
17 dígitos decimales

Booleano Booleano Verdadero o falso

Texto Cuerda Cadena de caracteres Unicode

Fecha Fecha y hora Las fechas válidas son todas las fechas posteriores
al 1 de marzo de 1900.

Divisa Divisa -9.22 x 10 14 a 9.22 x 10 14 Limitado a cuatro dígitos


decimales de precisión fija

N/A BLANCO En algunos casos, es el equivalente a una base de


14
datos (SQL) NULL

El tipo de datos EN BLANCO (BLANK) merece una mención especial. DAX usa EN BLANCO,
tanto para la base de datos NULL como para las celdas en blanco en Excel. EN BLANCO no
significa cero. Quizás sea más sencillo pensar en ello como la "ausencia de un valor". Dos
funciones DAX están relacionadas con el tipo de datos BLANK: la función BLANK DAX
devuelve BLANK, mientras que la función ISBLANK, DAX prueba si una expresión se evalúa
como BLANK.
Data Analysis Expressions (DAX)

5. FUNCIONES DAX

La biblioteca de funciones de DAX consta de cientos de funciones, cada una diseñada para
lograr un objetivo específico.

Debido a que DAX se originó con el complemento Power Pivot para Microsoft Excel 2010, hay
más de 80 funciones disponibles que también se pueden encontrar en Excel. Fue una
estrategia de diseño deliberada de Microsoft, para garantizar que los usuarios de Excel puedan
volverse productivos rápidamente con DAX.

Sin embargo, existen muchas funciones que no encontrará en Excel, porque son específicas
del modelado de datos:

• Funciones de navegación de relación.


• Filtrar funciones de modificación de contexto.
• Funciones de iterador.
• Funciones de inteligencia de tiempo.
• Funciones de ruta.
15

6. ESCRIBIR FÓRMULAS EN DAX

Cada tipo de cálculo de modelo, tabla calculada, columna calculada o medida se define por su
nombre, seguido del símbolo igual (=), que luego es seguido por una fórmula DAX. Por
ejemplo, la definición de la tabla calculada Fecha de envío, que duplica los datos de la tabla
Fecha es:

Ship Date = 'Date'

Una fórmula DAX consta de expresiones que devuelven un resultado. El resultado es un objeto
de tabla o un valor escalar. Las fórmulas de tabla calculadas deben devolver un objeto de tabla;
las fórmulas de columna y medida calculadas deben devolver un valor escalar o único.
Data Analysis Expressions (DAX)

Las fórmulas se ensamblan usando:

• Funciones DAX.
• Operadores DAX.
• Referencias a objetos de modelo.
• Valores constantes, como el número 24 o el texto literal "FY" (para el año fiscal).
• Variables DAX.
• Espacio en blanco.

Similar a Microsoft Excel, DAX es un lenguaje funcional; las fórmulas se basan en las funciones
de DAX para lograr objetivos específicos. Normalmente, las funciones tienen argumentos que
permiten pasar variables. Las fórmulas pueden usar muchas llamadas a funciones y, a
menudo, anidan funciones dentro de otras funciones.

Es importante considerar al momento de trabajar los siguientes puntos con fórmulas DAX:

• En una fórmula, los nombres de las funciones deben ir seguidos de paréntesis.


• Las fórmulas solo pueden hacer referencia a tres tipos de objetos de modelo: tablas,
columnas o medidas.
• Al referenciar en una formula DAX a una columna o medida, estas deben ir entre corchetes 16

( [ x] ).
• Cuando hace referencia a una tabla en una fórmula, oficialmente, el nombre de la tabla se
incluye entre comillas simples.

7. REFERENCIAS EN FÓRMULAS DAX

Cuando hace referencia a una tabla en una fórmula, oficialmente, el nombre de la tabla se
incluye entre comillas simples. En la siguiente definición de tabla calculada, observe que la
tabla de fecha está entre comillas simples.

Ship Date = 'Date'


Data Analysis Expressions (DAX)

Sin embargo, las comillas simples se pueden omitir cuando se cumplen las dos condiciones
siguientes:

1. El nombre de la tabla no incluye espacios incrustados.

2. El nombre de la tabla no es una palabra reservada que utiliza DAX. Todos los operadores
y nombres de funciones de DAX son palabras reservadas. La fecha es un nombre de
función de DAX, lo que explica por qué, cuando hace referencia a una tabla denominada
Fecha, debe incluirse entre comillas simples.

En la siguiente definición de tabla calculada, es posible omitir los corchetes al hacer referencia
a la tabla del aeropuerto:

Arrival Airport = Airport

Cuando hace referencia a una columna en una fórmula, el nombre de la columna debe incluirse
entre corchetes. Opcionalmente, puede ir precedido de su nombre de tabla. Por ejemplo, la
siguiente definición de medida se refiere a la columna ventas.

Revenue = SUM([ventas])

Debido a que los nombres de columna son únicos dentro de una tabla, pero no necesariamente 17
únicos dentro del modelo, puede eliminar la ambigüedad de la referencia de columna
precediéndola con su nombre de tabla. Esta columna sin ambigüedad se conoce como
columna totalmente calificada. Cuando hace referencia a una medida en una fórmula, como
las referencias al nombre de una columna, el nombre de la medida debe incluirse entre
corchetes. Por ejemplo, la siguiente definición de medida se refiere a las medidas Ingresos y
Costos.

Margen = [Ingresos] - [Costos]

7.1 SINTAXIS DE LAS FÓRMULAS

La sintaxis incluye varios elementos que conforman una fórmula o, más simplemente, cómo
se escribe. Por ejemplo, examinemos una fórmula DAX simple, utilizada para crear datos
nuevos (valores) para cada fila de una columna calculada, denominada Margin, en una tabla
FactSales: (los colores del texto de la fórmula únicamente son para fines ilustrativos).
Data Analysis Expressions (DAX)

La sintaxis de esta fórmula incluye los elementos siguientes:

1. El operador del signo igual (=) indica el principio de la fórmula y cuando esta fórmula se
calcule, devolverá un resultado o un valor. Todas las fórmulas que calculan un valor
empezarán con un signo de igual.

2. La columna a la que se hace referencia [SalesAmount] contiene los valores de los que se
resta. Una referencia de columna de una fórmula siempre viene entre corchetes []. A
diferencia de las fórmulas de Excel que hacen referencia a una celda, una fórmula DAX
hace referencia siempre a una columna.

3. El operador matemático de resta (-).

4. La columna a la que se hace referencia [TotalCost] contiene los valores que deseamos 18
restar de los valores de la columna [SalesAmount].

Al intentar entender cómo leer el ejemplo anterior de la fórmula de DAX, suele ser útil analizar
cada uno de los elementos de un idioma en el que piense y hable cada día. Por ejemplo, puede
leer esta fórmula como: En la tabla Empresa, para cada fila de la columna calculada margen,
calcule (=) un valor restando (-) los valores de la columna [TotalCost] de los valores de la
columna [SalesAmount]. Esta diferencia nos entrega el margen de ganancia en cada
operación. Un segundo ejemplo de fórmula, una que se usa en una medida, es el siguiente:
Data Analysis Expressions (DAX)

Esta fórmula incluye los elementos de sintaxis siguientes:

El nombre de la medida suma del importe de ventas. Las fórmulas para las medidas pueden
incluir el nombre de la medida, seguido de un signo de dos puntos, seguido de la fórmula
de cálculo.
El operador del signo igual (=) indica el principio de la fórmula de cálculo. Cuando se
calcule, devolverá el resultado.
La función SUM suma todos los números de la columna [SalesAmount]. Obtendrá más
información sobre características más adelante.
Los paréntesis () alrededor de uno o más argumentos. Todas las funciones requieren al
menos un argumento. Un argumento pasa un valor a una función.
La tabla a la que se hace referencia FactSales.
La columna a la que se referencia [SalesAmount] en la tabla FactSales. Con este
argumento, la función SUM sabe qué columna agregar a SUM.

Puede leer esta fórmula como:

Para la medida denominada sum of SalesAmount, calcular (=) la suma de los valores de la
columna [ SalesAmount ] en la tabla FactSales .
19

A diferencia del primer ejemplo, en este caso se identifica el nombre de la columna


[SalesAmount] precedida de la tabla FactSales a la que pertenece la columna. Esto se conoce
como un nombre de columna completo, porque incluye el nombre de columna precedido del
nombre de tabla. Las columnas, a las que se hace referencia en la misma tabla, no requieren
que el nombre de tabla se incluya en la fórmula. Esto puede ocasionar fórmulas largas que
hagan referencia a varias columnas más cortas y más fáciles de leer. Sin embargo, es una
buena práctica incluir siempre el nombre de la tabla en las fórmulas de medidas, incluso
cuando se encuentra en la misma tabla.

Es muy importante que las fórmulas tengan la sintaxis correcta. En la mayoría de los casos, si
la sintaxis no es correcta, se devolverá un error de sintaxis.
Data Analysis Expressions (DAX)

7.2 FUNCIONES DE ITERADOR

Las expresiones de análisis de datos (DAX) incluyen un conjunto de funciones conocidas


como funciones de iterador. Estas enumeran todas las filas de una tabla dada y evalúan una
expresión dada para cada fila. Asimismo, le brindan flexibilidad y control sobre cómo los
cálculos de su modelo resumirán los datos.

A estas alturas, ya está familiarizado con las funciones de resumen de una sola columna,
incluidas SUM, COUNT, MIN, MAX y otras. Todas estas funciones tienen una función iteradora
equivalente que se identifica con el sufijo "X", como SUMX, COUNTX, MINX, MAXX y
otros. Además, existen funciones de iterador especializadas que realizan filtrado, clasificación,
cálculos semiaditivos a lo largo del tiempo y más.

Característica de todas las funciones de iterador, debe pasar una tabla y una expresión. La
tabla puede ser una referencia de tabla modelo o una expresión que devuelve un objeto de
tabla. La expresión debe evaluarse a un valor escalar.

Las funciones de resumen de una sola columna, como SUM, son funciones
abreviadas. Internamente, Microsoft Power BI convierte la función SUM en SUMX. Como
resultado, las siguientes dos definiciones de medida producirán el mismo resultado; Power BI 20

no diferencia entre estas definiciones de medida cuando las evalúa o en su rendimiento.

Revenue = SUM(Sales[Sales Amount])

Revenue = SUMX(Sales,Sales[Sales Amount])

Es importante comprender cómo funciona el contexto con las funciones de iterador. Debido a
que las funciones de iterador se enumeran en filas de la tabla, la expresión se evalúa para
cada fila en el contexto de fila, similar a las fórmulas de columna calculadas.

Por ejemplo, si tenemos la tabla ventas con la siguiente información:

IdReg Cant. Producto Valor unitario


1 3 Taza $ 1.000
2 4 Botella $ 2.500
3 1 Lámpara $ 8.000
4 6 Silla $ 15.000
Data Analysis Expressions (DAX)

Y deseamos obtener las ventas totales, la cual corresponde a la sumatoria de [Cant]*[Valor


Unitario], ¿qué formula utilizaría, SUM o SUMX?

Sum(), no permite realizar esta operación (solo acepta un argumento), por lo cual se debe
utilizar sumx() :

Total_ventas = sumx(Hoja1;[Cantidad]*[Valor Unitario])

7.3 FUNCIÓN ITERADOR RANKX

La función RANKX es una función de iterador especial, la que puede usar para calcular
rangos. Su sintaxis es la siguiente:

RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])

Al igual que con todas las funciones de iterador, debe pasar una tabla y una
expresión. Opcionalmente, puede pasar un valor de rango para encontrar la dirección del
pedido, o para ayudarlo a determinar cómo manejar los rangos cuando los valores están
21
empatados.

La dirección del resultado de la función RANX puede ser ascendente o descendente. Al


clasificar algo favorable, como los valores de ingresos, es probable que use un orden
descendente para que los ingresos más altos se clasifiquen en primer lugar. Al clasificar algo
desfavorable, como las quejas de los clientes/as, puede usar el orden ascendente, para que el
número más bajo de quejas se clasifique en primer lugar. Cuando no pasa un argumento de
orden, la función utilizará el orden descendente.

Ejemplo: la siguiente medida “Rango de cantidad de productos”, lista los productos en orden
descendente por cantidad disponible:

Rango de cantidad de productos =RANKX( ALL('Producto'[Producto]), [Quantity])


Data Analysis Expressions (DAX)

En este caso, la función RANKX itera sobre una tabla que es devuelta por la función ALL. La
función ALL se usa para devolver todas las filas, en una tabla modelo o valores, en una o más
columnas e ignora todos los filtros. Por lo tanto, en este caso, devuelve una tabla que consta
de todos los valores de la columna Producto en la tabla Producto. La función RANKX debe
usar la función ALL, porque el objeto visual de la tabla se agrupará por producto (que es un
filtro en la tabla Producto).

En la imagen de la tabla, observe que dos productos empatan en el décimo lugar y que el
rango del siguiente producto es 12. Esta imagen es un ejemplo del uso del argumento de
empates omitidos.

22

En el caso que desee no utilizar la opción de una clasificación omitida, se debe agregar a la
función el argumento Dense. En este caso, el resultado sería que después de los dos
productos que empatan en el décimo lugar, el siguiente ranking es el 11.

Rango de cantidad de productos = RANKX(ALL('Producto'[Producto]), [Quantity], , , DENSE)


Data Analysis Expressions (DAX)

7.4 FILTRO EN LAS FUNCIONES

Puede utilizar la función CALCULATE para modificar el contexto del filtro en sus fórmulas. La
sintaxis de la función CALCULATE es la siguiente:

CALCULATE(<expression>, [[<filter1>], <filter2>]…)

La función requiere pasar una expresión que devuelva un valor escalar y tantos filtros como
necesite. La expresión puede ser una medida (que es una expresión con nombre) o cualquier
expresión que se pueda evaluar en el contexto del filtro.

Los filtros pueden ser expresiones booleanas o expresiones de tabla. También es posible
pasar funciones de modificación de filtros que proporcionan un control adicional cuando se
modifica el contexto de la formular.

Cuando tiene varios filtros, se evalúan mediante el operador lógico AND, lo que significa que
todas las condiciones deben ser VERDADERAS al mismo tiempo.

Un filtro de expresión booleana es una expresión que se evalúa como VERDADERO o


FALSO. Los filtros booleanos deben cumplir las siguientes reglas:
23
• Solo pueden hacer referencia a una sola columna.
• No pueden hacer referencia a medidas.
• No pueden usar funciones que escanean o devuelven una tabla que incluye funciones de
agregación como SUM.

Por ejemplo, la siguiente definición de medida, que filtra la medida de Ingresos, utilizando un
filtro de expresión booleana para productos rojos.

Ingresos = CALCULATE ([Revenue], 'Producto'[Color] = "Rojo")

En el siguiente ejemplo, la siguiente medida filtra la medida de Ingresos por varios


colores. Observe el uso del operador IN, seguido de una lista de valores de color.

Ingresos Rojo o Verde = CALCULATE([Revenue], 'Producto'[Color] IN {"Rojo", "Verde"})


Data Analysis Expressions (DAX)

La siguiente medida filtra la medida de Ingresos por productos caros. Los productos caros son
aquellos con un precio de lista superior a 1000 USD.

Ingresos por Productos = CALCULATE([Revenue], 'Producto'[List Price] > 1000)

7.5 EJEMPLOS

Unidades vendidas = SUM(Ventas[Autos])

Realiza la suma de todos los registros de la columna Autos, que son parte de la tabla Ventas.

Ventas línea = Sales[OrderQuantity] * Sales[UnitPrice]

Crear una columna calculada que calcule el producto de las dos columnas (OrderQuantity y
UnitPrice) fila a fila

Total Sales = SUM([Ventas línea])


24

Crea una medida que sume de los valores de la columna calculada del ejemplo anterior.

La misma operación de los dos ejemplos anteriores se puede realizar por medio de la siguiente
fórmula:

Total Sales 1 = SUMX(Sales;Sales[OrderQuantity] * Sales[UnitPrice])

A partir de la función SUMX, para crear directamente la medida sin necesidad de crear una
columna. Las dos medidas devuelven el mismo resultado. Con la primera solución
almacenaríamos en el modelo, permanentemente, los resultados de multiplicar ambas
columnas fila por fila, mientras que en la segunda solución no. La segunda solución es la más
eficiente, es decir, elegiremos SUMX().

Quantity_Red_Color=CALCULATE(SUM(Sales[OrderQuantity]),Product[Color]="Rojo")
Data Analysis Expressions (DAX)

Este ejemplo calcula la cantidad de productos de color rojo vendidos. Es importante considerar
que a la función SUM() no se le puede pasar una expresión como parámetro, solo admite
nombres de columnas. Esto implica que no se pueden filtrar las filas de la tabla sobre la que
queremos realizar el cálculo., Para lograrlo, necesitamos combinarla con la función
CALCULATE().

La operación anterior, en la cual se seleccionaron algunos registros que cumplían un atributo


en forma específica (color = rojo), también se puede realizar de las siguientes formas:

Combinando las funciones SUMX() y FILTER()

La función SUMX admite como primer parámetro una expresión que devuelva una tabla y la
función Filter lo hace. Esto nos permite filtrar la tabla Sales, de manera que solo devuelva las
filas donde el color del producto es rojo y luego sumamos los valores de la columna
OrderQuantity. La columna Color está en la tabla Product y, por ello, necesitamos usar la
función RELATED() para conocer el color del producto relativo a cada fila. La fórmula resultante
sería:

Quantity_Red_Color_1 = SUMX(FILTER(Sales, RELATED('Product'[Color])="Rojo"),


25
Sales[OrderQuantity])

b) Combinando las funciones SUMX() y función IF().

En este caso, el primer parámetro será la tabla Sales, sin filtrar, y el segundo una expresión.
Recorreremos cada fila de la tabla Sales y comprobamos el valor de la expresión. Si la
expresión es verdadera, sumaremos los valores de la columna OrderQuantity. La expresión a
utilizar será “Si el color del producto relacionado es rojo la expresión es verdadera, en otro
caso es falsa”. La fórmula quedará:

Quantity_Red_Color_2 = SUMX(Sales, IF(RELATED('Product'[Color])="Rojo",


Sales[OrderQuantity]))
Data Analysis Expressions (DAX)

c) Combinando la función SUMX y la función CALCULATE()

Esta sería muy similar a la primera variante, solo que usando la función SUMX en lugar de
SUM.

Quantity_Red_Color_3 = CALCULATE(SUMX(Sales, Sales[OrderQuantity]),


'Product'[Color] = "Rojo")

Para este cálculo, las fórmulas más convenientes serían: Quantity_Red_Color,


Quantity_Red_Color_1 y Quantity_Red_Color_3. La razón es que, primero. se filtra la tabla
Sales y luego se calcula la suma de los valores de la columna OrderQuantity. La más ineficiente
es Quantity_Red_Color_2, porque la tabla Sales no se filtra. Además, la expresión contiene
una declaración de comparación compleja en su fórmula, la que ha de ejecutarse fila por fila,
pudiendo hacer lento el rendimiento de la fórmula. Puede utilizarse cualquiera de las dos
funciones

Basándose en los siguientes datos:


26

Id_reg Categoría Producto UM Fecha Cantidad Desc Valor Kg

1 Fruta Manzana Kg 12-04-2020 2 0% $1.200

2 Abarrotes Tallarines Kg 13-04-2020 3 2% $550


3 Fruta Plátanos Kg 13-04-2020 1,5 0% $800
4 Abarrotes Azúcar Kg 05-06-2020 2 0% $750
5 Fruta Manzana Kg 07-06-2020 1,3 0% $1.200
6 Fruta Plátanos Kg 09-06-2020 0,5 0% $800

¿Qué formula debe utilizar para determinar el total de kilos vendidos de solo manzanas?

Ventas_Manzana = sumx(FILTER(Hoja1;[Producto]="Manzana");[Cantidad]*[Valor Kg]*(1-


[Desc]))
Data Analysis Expressions (DAX)

¿Cómo calcular el promedio de ventas?

Promedio_Ventas = AVERAGEX(Hoja1;[Cantidad]*[Valor Kg]*(1-[Desc]))

¿Cómo calcular el porcentaje de venta?

El porcentaje corresponde a la división entre el "valor de la venta" y "total de las ventas", por
lo tanto, se necesita, previamente, realizar una medida para el numerador y otra para
denominador:

Primero, se realiza una medida del ingreso por venta, cantidad*Valor*(1-%desc)

Total de las ventas = sumx(Hoja1;[Cantidad]*Hoja1[Valor Kg]*(1-[Desc]))

Segundo, se genera la división entre la venta y el total acumulado:

% de Valor Venta = DIVIDE([Total_ventas];CALCULATE([Total_ventas];ALL(Hoja1)))

¿Cómo determinar la cantidad de kilos de fruta que se han vendido?

CALCULATE(SUM(Hoja1[Cantidad]);Hoja1[Categoría]="Fruta")
27
Data Analysis Expressions (DAX)

REFERENCIAS

• Microsoft, 2021, docs.microsoft.com, recuperado de: https://docs.microsoft.com/es-es/dax/

• Dax.guide , The DAX language, recuperado de: https://dax.guide/

• Microsoft, 2021. Tutorial rápido: aprenda los fundamentos de DAX en 30 minutos,


recuperado de: https://support.microsoft.com/es-es/office/tutorial-r%C3%A1pido-aprenda-
los-fundamentos-de-dax-en-30-minutos-51744643-c2a5-436a-bdf6-c895762bec1a

• Dataxbi.com. Descubre el poder de tus datos, recuperado de: https://www.dataxbi.com/

28

También podría gustarte