Está en la página 1de 40

Cristian Saavedra A.

Contenido
I. ¿Qué es DAX? ........................................................................................................................................ 4
II. Requisitos de la sintaxis ........................................................................................................................ 4
III. Requisitos de Nomenclatura .................................................................................................................... 5
III.1 Nomenclatura Tablas ......................................................................................................................... 6
III.2 Nomenclatura Medidas ...................................................................................................................... 6
III.3 Nomenclatura Columnas .................................................................................................................... 7
III.4 Nomenclatura Palabras clave reservadas .......................................................................................... 7
III.5 Nomenclatura Caracteres especiales ................................................................................................. 7
III.6 Ejemplos de nombres de objeto ........................................................................................................ 8
IV Operadores DAX ....................................................................................................................................... 9
IV.1 Operadores aritméticos ..................................................................................................................... 9
IV.2 Operadores de comparación ............................................................................................................. 9
IV.3 Operador de concatenación de texto y Lógicos...............................................................................10
IV.4 Operadores y orden de precedencia ...............................................................................................10
V. Tipos de datos .........................................................................................................................................12
VI. Funciones DAX.................................................................................................................................14
VII. Escribir Formulas en DAX ................................................................................................................15
VII.1 Referencias en Formulas DAX .........................................................................................................16
VII.2 Sintaxis de la Formulas....................................................................................................................17
VII.3 Funciones de Iterador .....................................................................................................................18
VII.4 Función Iterador RANKX .................................................................................................................20
VII.5 Filtro en las Funciones ....................................................................................................................21
VII.5 Ejemplos ..........................................................................................................................................23
Anexos .........................................................................................................................................................26
A.1 Funciones de Agregación ..................................................................................................................26
A.2 Funciones de Información.................................................................................................................27
A.3 Funciones Lógicas .............................................................................................................................29
A.4 Funciones de Fecha y Hora ...............................................................................................................30
A.5 Funciones de gestión de relaciones ..................................................................................................31
A.6 Funciones de Filtro ............................................................................................................................32
A.6 Funciones de manipulación de tablas ...............................................................................................33
A.7 Funciones de Texto ..........................................................................................................................35
A.8 Funciones de agregación estadística. ...............................................................................................36
A.9 Operadores DAX................................................................................................................................39
I. ¿Qué es DAX?
DAX (Data Analysis Expressions) es un lenguaje específico para análisis de datos creado
por Microsoft en el año 2010 para ser usado con un modelo de datos tabular y que se
puede usar 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 de datos nueva
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. DAX 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
 Columnas calculadas
 Medidas

II. 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 incluyen 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.
 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 y 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.

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.

III. 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 agregan a un modelo de datos existente deben


pertenecer a una tabla específica. La tabla que contiene la columna se especifica
implícitamente, cuando se crea una columna calculada en una tabla, o explícitamente,
cuando se crea 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:

 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]. Por ejemplo, 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. Por ejemplo, si abre un libro
que contiene nombres de tablas escritos en caracteres cirílicos, como "Таблица", el
nombre de la tabla debe ir entre comillas, aunque no contenga espacios.

III.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.

III.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.
III.3 Nomenclatura Columnas

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.

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

III.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:

.,;':/\|?&%$!+=()[]{}<>|?&%$!+=()[]{}<>
III.6 Ejemplos de nombres de objeto

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

Tipos de Ejemplos Comentario


objeto
Nombre Sales Si el nombre de la tabla no contiene espacios ni otros
de tabla caracteres especiales, no es necesario que el nombre se incluya
entre comillas.
Nombre "Canada Sales" Si el nombre contiene espacios, tabulaciones u otros caracteres
de 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 nombre de la columna se incluye entre corchetes.
de la
columna
Nombre Ventas[Beneficio] El nombre de la tabla precede al nombre de la medida y el
completo nombre de la columna se incluye entre corchetes. En
de la determinados contextos, siempre es necesario un nombre
medida completo.
Nombre [Importe] El nombre no completo es simplemente el nombre de la
de columna, entre corchetes. Entre los contextos en los que se
columna puede usar el nombre no completo se incluyen las fórmulas de
no una columna calculada en la misma tabla o en una función de
completo agregación que está buscando en la misma tabla.
Columna "Canada El nombre de la tabla contiene espacios, por lo que debe ir
completa Sales"[Cantidad] entre comillas simples.
de la tabla
con
espacios

La sintaxis necesaria para cada función y 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, que
requieren una tabla como entrada.
IV Operadores DAX

El lenguaje DAX (Expresiones de análisis de datos) usa operadores para crear


expresiones 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.

IV.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.

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

IV.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.

Operadores de 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.
IV.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 Significado Ejemplo


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

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

Operador Significado Ejemplos


de texto
&& (doble Crea una condición AND entre dos expresiones que tienen ([Region] =
Y ambas un resultado booleano. Si ambas expresiones "France") &&
comercial) devuelven TRUE, la combinación de las expresiones también ([BikeBuyer] =
devuelve TRUE; de lo contrario, la combinación devuelve "yes"))
FALSE.
||(símbolo Crea una condición OR entre dos expresiones lógicas. Si (([Region] =
de doble alguna de las expresiones devuelve TRUE, el resultado es "France") ||
barra TRUE; solo cuando ambas expresiones son FALSE, el ([BikeBuyer] =
vertical) resultado es FALSE. "yes"))
IN Crea una condición OR lógica entre cada fila que se compara 'Product'[Color]
con una tabla. Nota: En la sintaxis del constructor de tabla se IN { "Red", "Blue",
emplean llaves. "Black" }

IV.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 ordenan 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.

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

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

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.

V. 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.

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 que es 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.

Tipo de datos Tipo de Descripción


del modelo datos DAX
Número entero Entero de -2 63 a través de 2 63 -1
64 bits
Número decimal Real de 64 Negativo: -1,79 x 10 308 hasta -2,23 x 10-308 Cero Positivo: 2,23
bits 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 Las fechas válidas son todas las fechas posteriores al 1 de
hora 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 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.
VI. 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
VII. Escribir Formulas 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.

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 con fórmulas DAX los siguiente


puntos:

 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 ( [ x] )
 Cuando hace referencia a una tabla en una fórmula, oficialmente, el nombre de la
tabla se incluye entre comillas simples
VII.1 Referencias en Formulas 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'

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


VII.2 Sintaxis de la Formulas

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)

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 restar de
los valores de la columna [SalesAmount].

Al intentar entender cómo leer 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:

Esta fórmula incluye los elementos de sintaxis siguientes:


A. 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.
B. El operador del signo igual (=) indica el principio de la fórmula de cálculo. Cuando se
calcule, devolverá el resultado.
C. La función SUM suma todos los números de la columna [SalesAmount]. Obtendrá más
información sobre características más adelante.
D. 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.
E. La tabla a la que se hace referencia FactSales.
F. 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 suma del importe de ventas, calcular (=) la suma de los valores de la
columna [ SalesAmount ] en la tabla FactSales .

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.

VII.3 Funciones de Iterador

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


como funciones de iterador . Las funciones de iterador enumeran todas las filas de una
tabla dada y evalúan una expresión dada para cada fila. 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. Cada una de estas funciones tiene 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 semi-aditivos 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 no diferencia entre estas definiciones de medida cuando las evalúa
o 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

Y deseamos obtener realizar aplicar una formula DAX que nos entregue el total de la
ventas, dd

Colocar ejemplo
VII.4 Función Iterador RANKX

La función RANKX es una función de iterador especial 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
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, 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])

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.
En el caso de 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)

Su siguiente tarea es ingresar la siguiente lógica para modificar la definición de la

VII.5 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:

 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"})

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)


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

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
formula:

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

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 y para lograrlo necesitamos combinarla con la función
CALCULATE().
La operación anterior, en la cual se seleccionó algunos registros que cumplía un atributo en
forma específica (color = rojo), también se puede realizar de las siguientes formas:

a) 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"),


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

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 porque 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 y la expresión contiene una declaración
de comparación compleja en su fórmula que ha de ejecutarse fila por fila y que puede hacer
lento el rendimiento de la fórmula. Puede utilizarse cualquiera de las dos funciones
Anexos

A.1 Funciones de Agregación

Las funciones de agregación devuelven un valor escalar aplicando una función de agregación a
una columna o a una expresión evaluada mediante la iteración de una expresión de tabla.

FUNCIÓN DESCRIPCIÓN
AVERAGE Devuelve el promedio (media aritmética) de todos los números de una
columna.
AVERAGEA Devuelve el promedio (media aritmética) de los valores de una
columna. Maneja texto y valores no numéricos.
AVERAGEX Calcula el promedio (media aritmética) de un conjunto de expresiones
evaluadas sobre una tabla.
COUNT Cuenta el número de filas de la tabla donde la columna especificada tiene
un valor que no está en blanco.
COUNTA Cuenta el número de valores en una columna.
COUNTAX Cuenta el número de valores que resultan de evaluar una expresión para
cada fila de una tabla.
COUNTBLANK Cuenta el número de espacios en blanco en una columna.
COUNTROWS Cuenta el número de filas de una tabla.
COUNTX Cuenta el número de valores que resultan de evaluar una expresión para
cada fila de una tabla.
DISTINCTCOUNT Cuenta el número de valores distintos en una columna.
DISTINCTCOUNTNO Cuenta el número de valores distintos en una columna.
BLANK
MAX Devuelve el valor más grande en una columna o el valor más grande
entre dos expresiones escalares. Ignora los valores lógicos. Las cadenas se
comparan por orden alfabético.
MAXA Devuelve el valor más grande de una columna. No ignora los valores
lógicos y el texto.
MAXX Devuelve el valor más grande que resulta de evaluar una expresión para
cada fila de una tabla. Las cadenas se comparan por orden alfabético.
MIN Devuelve el valor más pequeño de una columna o el valor más pequeño
entre dos expresiones escalares. Ignora los valores lógicos. Las cadenas se
comparan por orden alfabético.
MINA Devuelve el valor más pequeño de una columna. No ignora los valores
lógicos y el texto.
MINX Devuelve el valor más pequeño que resulta de evaluar una expresión para
cada fila de una tabla. Las cadenas se comparan por orden alfabético.
PRODUCT Devuelve el producto de la referencia de columna dada.
PRODUCTX Devuelve el producto de los valores de una expresión en una tabla.
SUM Suma todos los números de una columna.
SUMX Devuelve la suma de una expresión evaluada para cada fila de una tabla.

A.2 Funciones de Información

Las funciones de información proporcionan información sobre el tipo de datos o el contexto de


filtro del argumento proporcionado.

FUNCIÓN DESCRIPCIÓN
CONTAINS Devuelve VERDADERO si existe al menos una fila en la que todas
las columnas tienen valores especificados.
CONTAINSROW Devuelve VERDADERO si existe al menos una fila en la que todas
las columnas tienen valores especificados.
CONTAINSSTRING Devuelve VERDADERO si una cadena de texto contiene otra
cadena de texto. CONTAINSSTRING no distingue entre mayúsculas
y minúsculas, pero sí acentos.
CONTAINSSTRINGEXACT Devuelve VERDADERO si una cadena de texto contiene otra
cadena de texto. CONTAINSSTRINGEXACT distingue entre
mayúsculas y minúsculas y acentos.
CUSTOMDATA Devuelve el valor de la propiedad de la cadena de conexión
CustomData si está definida; de lo contrario, EN BLANCO ().
HASONEFILTER Devuelve verdadero cuando la tabla o columna especificada tiene
uno y solo un valor resultante de los filtros directos.
HASONEVALUE Devuelve verdadero cuando solo hay un valor en la columna
especificada.
ISAFTER Devuelve verdadero si la lista de parámetros de Value1 se compara
estrictamente después de la lista de parámetros de Value2.
ISBLANK Comprueba si un valor está en blanco y devuelve VERDADERO o
FALSO.
ISCROSSFILTERED Devuelve verdadero cuando se realiza un filtrado cruzado de la
tabla o columna especificada.
ISEMPTY Devuelve verdadero si la tabla o expresión de tabla especificada
está vacía.
ISERROR Comprueba si un valor es un error y devuelve VERDADERO o
FALSO.
ISEVEN Devuelve VERDADERO si el número es par o FALSO si el número es
impar.
ISFILTERED Devuelve verdadero cuando hay filtros directos en la columna
especificada.
ISINSCOPE Devuelve verdadero cuando la columna especificada es el nivel en
una jerarquía de niveles.
ISLOGICAL Comprueba si un valor es un valor lógico (VERDADERO o FALSO) y
devuelve VERDADERO o FALSO.
ISNONTEXT Comprueba si un valor no es texto (las celdas en blanco no son
texto) y devuelve VERDADERO o FALSO.
ISNUMBER Comprueba si un valor es un número y devuelve VERDADERO o
FALSO.
ISODD Devuelve VERDADERO si el número es impar o FALSO si el número
es par.
ISONORAFTER La función IsOnOrAfter es una función booleana que emula el
comportamiento de la cláusula Start At y devuelve verdadero para
una fila que cumple todas las condiciones mencionadas como
parámetros en esta función.
ISSELECTEDMEASURE Devuelve verdadero si una de las medidas especificadas se está
evaluando actualmente.
ISSUBTOTAL Devuelve VERDADERO si la fila actual contiene un subtotal para
una columna especificada y FALSO en caso contrario.
ISTEXT Comprueba si un valor es texto y devuelve VERDADERO o FALSO.
SELECTEDMEASURE Devuelve la medida que se está evaluando actualmente.
SELECTEDMEASUREFORM Devuelve la cadena de formato para la medida que se está
ATSTRING evaluando actualmente.
SELECTEDMEASURENAME Devuelve el nombre de la medida que se está evaluando
actualmente.
USERCULTURE Devuelve el código de cultura del usuario, según su sistema
operativo o la configuración del navegador.
USERNAME Devuelve el nombre de dominio y el nombre de usuario de la
conexión actual con el formato de nombre de dominio \ nombre
de usuario.
USEROBJECTID Devuelve el ID de objeto del usuario actual de Azure AD para
Azure Analysis Server y el SID del usuario actual para Analysis
Server local.
USERPRINCIPALNAME Devuelve el nombre principal del usuario.

A.3 Funciones Lógicas

Las funciones lógicas actúan sobre una expresión para devolver información sobre los valores o
conjuntos de la expresión.

FUNCIÓN DESCRIPCIÓN
AND Comprueba si todos los argumentos son VERDADEROS y devuelve VERDADERO
si todos los argumentos son VERDADEROS.
COALESCE Devuelve el primer argumento que no se evalúa como un valor en blanco. Si
todos los argumentos se evalúan en valores en blanco, se devuelve EN BLANCO.
FALSE Devuelve el valor lógico FALSO.
IF Comprueba si se cumple una condición y devuelve un valor si es VERDADERO y
otro valor si es FALSO.
IF.EAGER Comprueba si se cumple una condición y devuelve un valor si es VERDADERO y
otro valor si es FALSO. Utiliza un plan de ejecución ávido.
IFERROR Devuelve value_if_error si la primera expresión es un error y el valor de la propia
expresión en caso contrario.
NOT Cambia FALSO a VERDADERO o VERDADERO a FALSO.
OR Devuelve VERDADERO si alguno de los argumentos es VERDADERO y devuelve
FALSO si todos los argumentos son FALSOS.
SWITCH Devuelve resultados diferentes según el valor de una expresión.
TRUE Devuelve el valor lógico VERDADERO.
A.4 Funciones de Fecha y Hora

Las funciones de fecha y hora ayudan a crear cálculos basados en fechas y horas. Muchas de las
funciones de DAX son similares a las funciones de fecha y hora de Excel.

FUNCIÓN DESCRIPCIÓN
CALENDAR Devuelve una tabla con una columna de todas las fechas entre StartDate y
EndDate.
CALENDARAUTO Devuelve una tabla con una columna de fechas calculadas a partir del
modelo automáticamente.
DATE Devuelve la fecha especificada en formato de fecha y hora.
DATEDIFF Devuelve el número de unidades (unidad especificada en Intervalo) entre las
dos fechas ingresadas.
DATEVALUE Convierte una fecha en forma de texto en una fecha en formato de fecha y
hora.
DAY Devuelve un número del 1 al 31 que representa el día del mes.
EDATE Devuelve la fecha que es el número indicado de meses antes o después de
la fecha de inicio.
EOMONTH Devuelve la fecha en formato de fecha y hora del último día del mes antes o
después de un número especificado de meses.
HOUR Devuelve la hora como un número de 0 (12:00 a. M.) A 23 (11:00 p. M.).
MINUTE Devuelve un número del 0 al 59 que representa el minuto.
MONTH Devuelve un número del 1 (enero) al 12 (diciembre) que representa el mes.
NOW Devuelve la fecha y hora actuales en formato de fecha y hora.
QUARTER Devuelve un número del 1 (enero-marzo) al 4 (octubre-diciembre) que
representa el trimestre.
SECOND Devuelve un número del 0 al 59 que representa el segundo.
TIME Convierte horas, minutos y segundos dados como números a una hora en
formato de fecha y hora.
TIMEVALUE Convierte una hora en formato de texto a una hora en formato de fecha y
hora.
TODAY Devuelve la fecha actual en formato de fecha y hora.
UTCNOW Devuelve la fecha y hora actuales en formato de fecha y hora expresada en
hora universal coordinada (UTC).
UTCTODAY Devuelve la fecha actual en formato de fecha y hora expresada en hora
universal coordinada (UTC).
WEEKDAY Devuelve un número que identifica el día de la semana de una fecha. El
número está en un rango de 1 a 7 o de 0 a 6 según la elección del
parámetro ReturnType.
WEEKNUM Devuelve el número de semana del año.
YEAR Devuelve el año de una fecha como un número entero de cuatro dígitos.
YEARFRAC Devuelve la fracción de año que representa el número de días completos
entre fecha_inicio y fecha_finalización.

A.5 Funciones de gestión de relaciones

Estas funciones gestionan y manipulan las relaciones entre tablas.


FUNCIÓN DESCRIPCIÓN
CROSSFILTER Especifica la dirección de filtrado cruzado que se utilizará en la evaluación de
una expresión DAX. La relación se define nombrando, como argumentos, las dos
columnas que sirven como puntos finales.
RELATED Devuelve un valor relacionado de otra tabla.
RELATEDTABLE Devuelve las tablas relacionadas filtradas para que solo incluya las filas
relacionadas.
USERELATIONSHIP Especifica una relación existente que se utilizará en la evaluación de una
expresión DAX. La relación se define nombrando, como argumentos, las dos
columnas que sirven como puntos finales.
A.6 Funciones de Filtro

Las funciones de filtro manipulan los contextos de la tabla y del filtro.


FUNCIÓN DESCRIPCIÓN
ALL Devuelve todas las filas de una tabla o todos los valores de una columna,
ignorando los filtros que se hayan aplicado.
ALLCROSSFILTERED Borre todos los filtros que se aplican a la tabla especificada.
ALLEXCEPT Devuelve todas las filas de una tabla excepto aquellas que se ven afectadas
por los filtros de columna especificados.
ALLNOBLANKROW Devuelve todas las filas excepto la fila en blanco de una tabla, o todos los
valores de una columna, ignorando los filtros que se hayan aplicado.
ALLSELECTED Devuelve todas las filas de una tabla, o todos los valores de una columna,
ignorando los filtros que se hayan aplicado dentro de la consulta, pero
manteniendo los filtros que vienen del exterior.
CALCULATE Evalúa una expresión en un contexto modificado por filtros.
CALCULATETABLE Evalúa una expresión de tabla en un contexto modificado por filtros.
FILTER Devuelve una tabla que se ha filtrado.
KEEPFILTERS Cambia la semántica de filtrado de las funciones CALCULATE y
CALCULATETABLE.
LOOKUPVALUE Recupera un valor de una tabla.
REMOVEFILTERS Borre los filtros de las tablas o columnas especificadas.
SELECTEDVALUE Devuelve el valor cuando solo hay un valor en la columna especificada; de lo
contrario, devuelve el resultado alternativo.
A.6 Funciones de manipulación de tablas

Estas funciones manipulan y devuelven tablas.


FUNCIÓN DESCRIPCIÓN

ADDCOLUMNS Devuelve una tabla con nuevas columnas especificadas por las
expresiones DAX.
ADDMISSINGITEMS Vuelva a agregar las filas con valores de medida vacíos.
CROSSJOIN Devuelve una tabla que es una combinación cruzada de las tablas
especificadas.
CURRENTGROUP Acceso a la (sub) tabla que representa el grupo actual en la función
GroupBy. Solo se puede usar dentro de la función GroupBy.
DATATABLE Devuelve una tabla con datos definidos en línea.
DETAILROWS Devuelve los datos de la tabla correspondientes a la expresión
DetailRows definida en el indicador especificado. Si no se define una
expresión de DetailRows, se devuelve toda la tabla a la que
pertenece el indicador.
DISTINCT Devuelve una tabla de una columna que contiene los valores
distintos (únicos) en una columna, para un argumento de
columna. O varias columnas con una combinación de valores distinta
(única), para un argumento de expresión de tabla.
EXCEPT Devuelve las filas de la tabla del lado izquierdo que no aparecen en
la tabla del lado derecho.
FILTERS Devuelve una tabla de los valores de filtro aplicados directamente a
la columna especificada.
GENERATE La segunda expresión de la tabla se evaluará para cada fila de la
primera tabla. Devuelve la unión cruzada de la primera tabla con
estos resultados.
GENERATEALL La segunda expresión de la tabla se evaluará para cada fila de la
primera tabla. Devuelve la combinación cruzada de la primera tabla
con estos resultados, incluidas las filas para las que la segunda
expresión de la tabla está vacía.
GENERATESERIES Devuelve una tabla con una columna, poblada con valores
secuenciales de principio a fin.
GROUPBY Crea un resumen de la tabla de entrada agrupada por las columnas
especificadas.
IGNORE Etiqueta una expresión de medida especificada en la llamada a la
función SUMMARIZECOLUMNS para que se ignore al determinar las
filas que no están en blanco.
INTERSECT Devuelve las filas de la tabla del lado izquierdo que aparecen en la
tabla del lado derecho.
NATURALINNERJOIN Une la tabla de la izquierda con la tabla de la derecha usando la
semántica de Inner Join.
NATURALLEFTOUTERJOIN Une la tabla izquierda con la tabla derecha usando la semántica de
unión externa izquierda.
NONVISUAL Marque el filtro como No visual.
ROLLUP Identifica un subconjunto de columnas especificadas en la llamada a
la función SUMMARIZE que debe usarse para calcular subtotales.
ROLLUPADDISSUBTOTAL Identifica un subconjunto de columnas especificadas en la llamada a
la función SUMMARIZECOLUMNS que debe usarse para calcular
grupos de subtotales.
ROLLUPGROUP Identifica un subconjunto de columnas especificadas en la llamada a
la función SUMMARIZE que debe usarse para calcular grupos de
subtotales.
ROLLUPISSUBTOTAL Empareja los grupos acumulados con la columna agregada por
ROLLUPADDISSUBTOTAL.
ROW Devuelve una tabla de una sola fila con nuevas columnas
especificadas por las expresiones DAX.
SELECTCOLUMNS Devuelve una tabla con columnas seleccionadas de la tabla y nuevas
columnas especificadas por las expresiones DAX.
SUBSTITUTEWITHINDEX Devuelve una tabla que representa la semiunión de dos tablas
proporcionadas y para las que el conjunto común de columnas se
reemplaza por una columna de índice basada en 0. El índice se basa
en las filas de la segunda tabla ordenadas por expresiones de orden
especificadas.
SUMMARIZE Crea un resumen de la tabla de entrada agrupada por las columnas
especificadas.
SUMMARIZECOLUMNS Cree una tabla de resumen para los totales solicitados sobre un
conjunto de grupos.
TOPN Devuelve un número determinado de filas superiores según una
expresión especificada.
TOPNSKIP Recupera varias filas de una tabla de forma eficaz, omitiendo varias
filas. En comparación con TOPN, la función TOPNSKIP es menos
flexible, pero mucho más rápida.
TREATAS Trata las columnas de la tabla de entrada como columnas de otras
tablas. Para cada columna, filtra los valores que no están presentes
en su columna de salida respectiva.
UNION Devuelve la unión de las tablas cuyas columnas coinciden.
VALUES Cuando se proporciona un nombre de columna, devuelve una tabla
de una sola columna de valores únicos. Cuando se proporciona un
nombre de tabla, devuelve una tabla con las mismas columnas y
todas las filas de la tabla (incluidos los duplicados) con la fila en
blanco adicional si está presente.

A.7 Funciones de Texto

Las funciones de texto manipulan cadenas.


FUNCIÓN DESCRIPCIÓN

COMBINEVALUES Combina el conjunto de operandos dado utilizando un delimitador


especificado.
CONCATENATE Une dos cadenas de texto en una cadena de texto.
CONCATENATEX Evalúa la expresión para cada fila de la tabla, luego devuelve la concatenación
de esos valores en un resultado de una sola cadena, separada por el
delimitador especificado.
EXACT Comprueba si dos cadenas de texto son exactamente iguales y devuelve
VERDADERO o FALSO. EXACT distingue entre mayúsculas y minúsculas.
FIND Devuelve la posición inicial de una cadena de texto dentro de otra cadena de
texto. FIND distingue entre mayúsculas y minúsculas y acentos.
FIXED Redondea un número al número especificado de decimales y devuelve el
resultado como texto con comas opcionales.
FORMAT Convierte un valor en texto en el formato numérico especificado.
LEFT Devuelve el número especificado de caracteres desde el principio de una
cadena de texto.
LEN Devuelve el número de caracteres de una cadena de texto.
LOWER Convierte todas las letras de una cadena de texto a minúsculas.
MID Devuelve una cadena de caracteres desde el medio de una cadena de texto,
dada una posición inicial y una longitud.
REPLACE Reemplaza parte de una cadena de texto con una cadena de texto diferente.
REPT Repite el texto una cantidad determinada de veces. Use REPT para llenar una
celda con varias instancias de una cadena de texto.
RIGHT Devuelve el número especificado de caracteres desde el final de una cadena de
texto.
SEARCH Devuelve la posición inicial de una cadena de texto dentro de otra cadena de
texto. SEARCH no distingue entre mayúsculas y minúsculas, pero sí acentos.
SUBSTITUTE Reemplaza el texto existente con texto nuevo en una cadena de texto.
TRIM Elimina todos los espacios de una cadena de texto, excepto los espacios
simples entre palabras.
UNICHAR Devuelve el carácter Unicode al que hace referencia el valor numérico dado.
UNICODE Devuelve el número (punto de código) correspondiente al primer carácter del
texto.
UPPER Convierte una cadena de texto a todas las letras mayúsculas.
VALUE Convierte una cadena de texto que representa un número en un número.

A.8 Funciones de agregación estadística.

FUNCIÓN DESCRIPCIÓN

BETA.DIST Devuelve la distribución beta. La distribución beta se usa comúnmente para


estudiar la variación en el porcentaje de algo entre muestras, como la fracción
del día que las personas pasan viendo televisión.
BETA.INV Devuelve la inversa de la función de densidad de probabilidad acumulada beta
(BETA.DIST). Si probabilidad = BETA.DIST (x, ... TRUE), BETA.INV (probabilidad,
...) = x. La distribución beta se puede utilizar en la planificación del proyecto
para modelar los tiempos de finalización probables dado un tiempo de
finalización esperado y variabilidad.
CHISQ.DIST Devuelve la distribución chi-cuadrado. La distribución chi-cuadrado se usa
comúnmente para estudiar la variación en el porcentaje de algo entre
muestras, como la fracción del día que las personas pasan viendo televisión.
CHISQ.DIST.RT Devuelve la probabilidad de cola derecha de la distribución chi-cuadrado. La
distribución de chi-cuadrado está asociada con una prueba de chi-
cuadrado. Utilice la prueba de chi-cuadrado para comparar los valores
observados y esperados. Por ejemplo, un experimento genético podría
plantear la hipótesis de que la próxima generación de plantas exhibirá un
determinado conjunto de colores. Al comparar los resultados observados con
los esperados, puede decidir si su hipótesis original es válida.
CHISQ.INV Devuelve el inverso de la probabilidad de cola izquierda de la distribución chi-
cuadrado. La distribución chi-cuadrado se usa comúnmente para estudiar la
variación en el porcentaje de algo entre muestras, como la fracción del día que
las personas pasan viendo televisión.
CHISQ.INV.RT Devuelve el inverso de la probabilidad de cola derecha de la distribución chi-
cuadrado. Si probabilidad = DISTR.CHICUAD.RT (x, ...), INV.CHICUAD.RT
(probabilidad, ...) = x. Utilice esta función para comparar los resultados
observados con los esperados para decidir si su hipótesis original es válida.
COMBINAR Devuelve el número de combinaciones para un número determinado de
elementos. Utilice COMBIN para determinar el número total posible de grupos
para un número determinado de elementos.
COMBINA Devuelve el número de combinaciones (con repeticiones) para un número
determinado de elementos.
CONFIANZA.NORM Devuelve el intervalo de confianza para una media poblacional, utilizando una
distribución normal.
CONFIANZA.T Devuelve el intervalo de confianza para una media poblacional, utilizando una
distribución t de Student.
EXPON.DIST Devuelve la distribución exponencial. Utilice EXPON.DIST para modelar el
tiempo entre eventos, como el tiempo que tarda un cajero automático en
entregar efectivo. Por ejemplo, puede utilizar EXPON.DIST para determinar la
probabilidad de que el proceso tarde como máximo 1 minuto.
GEOMEAN Devuelve la media geométrica de la referencia de columna dada.
GEOMEANX Devuelve la media geométrica de los valores de una expresión en una tabla.
MEDIANA Devuelve el percentil 50 de los valores de una columna.
MEDIANX Devuelve el percentil 50 de los valores de una expresión en una tabla.
NORM.DIST Devuelve la distribución normal para la media y la desviación estándar
especificadas.
INV.NORM Devuelve la inversa de la distribución acumulativa normal para la media y la
desviación estándar especificadas.
DISTR.NORM. Devuelve la distribución normal estándar (tiene una media de cero y una
desviación estándar de uno).
INV NORM. Devuelve la inversa de la distribución acumulativa normal estándar. La
distribución tiene una media de cero y una desviación estándar de uno.
PERCENTILE.EXC Devuelve el percentil k-ésimo (exclusivo) de valores en una columna.
PERCENTILE.INC Devuelve el percentil k-ésimo (incluido) de valores en una columna.
PERCENTILEX.EXC Devuelve el percentil k-ésimo (exclusivo) de los valores de una expresión en
una tabla.
PERCENTILEX.INC Devuelve el percentil k-ésimo (inclusive) de los valores de una expresión en
una tabla.
PERMUT Devuelve el número de permutaciones para un número determinado de
objetos que se pueden seleccionar entre objetos numéricos. Una permutación
es cualquier conjunto o subconjunto de objetos o eventos donde el orden
interno es significativo. Las permutaciones son diferentes de las
combinaciones, para las cuales el orden interno no es significativo. Utilice esta
función para cálculos de probabilidad al estilo de la lotería.
POISSON.DIST Devuelve la distribución de Poisson. Una aplicación común de la distribución
de Poisson es predecir la cantidad de eventos durante un tiempo específico,
como la cantidad de autos que llegan a una plaza de peaje en 1 minuto.
RANK.EQ Devuelve el rango de un número en una columna de números. Si más de un
valor tiene el mismo rango, se devuelve el rango superior de ese conjunto de
valores.
RANKX Devuelve el rango de una expresión evaluada en el contexto actual en la lista
de valores de la expresión evaluada para cada fila de la tabla especificada.
MUESTRA Devuelve un subconjunto de muestra de una expresión de tabla determinada.
STDEV.P Calcula la desviación estándar en función de toda la población proporcionada
como argumentos. Ignora los valores lógicos y el texto.
STDEV.S Estima la desviación estándar basada en una muestra. Ignora los valores
lógicos y el texto de la muestra.
STDEVX.P Estima la desviación estándar basada en toda la población que resulta de
evaluar una expresión para cada fila de una tabla.
STDEVX.S Estima la desviación estándar en función de una muestra que resulta de
evaluar una expresión para cada fila de una tabla.
DISTR.T. Devuelve la distribución t de cola izquierda de Student.
DISTR.T.2T Devuelve la distribución t de Student de dos colas.
T.DIST.RT Devuelve la distribución t de Student de cola derecha.
T.INV Devuelve el inverso de cola izquierda de la distribución t de Student.
T.INV.2T Devuelve el inverso de dos colas de la distribución t de Student.
VAR.P Calcula la varianza en función de toda la población. Ignora los valores lógicos y
el texto de la población.
VAR.S Calcula la varianza según una muestra. Ignora los valores lógicos y el texto de
la muestra.
VARX.P Calcula la varianza en función de toda la población que resulta de evaluar una
expresión para cada fila de una tabla.
VARX.S Calcula la varianza según una muestra que resulta de evaluar una expresión
para cada fila de una tabla.
A.9 Operadores DAX

Tipo de operador Símbolo y uso


Operador de paréntesis () orden de prioridad y agrupación de argumentos
Operadores aritméticos + (suma)
- (resta)
* (multiplicación)
/ (división)
^ (exponenciación)
Operadores de comparación = (igual a)
> (mayor que)
< (menor que)
>= (mayor o igual que)
<= (menor o igual que)
<> (no es igual a)
Operador de concatenación de texto & (concatenación)
Operadores de lógica && (y)
|| (o)
Bibliografía:

https://docs.microsoft.com/es-es/dax/

https://dax.guide/

https://docs.microsoft.com/en-us/learn/

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

https://www.dataxbi.com/

También podría gustarte