Está en la página 1de 36

DAY

La función DAY devuelve el día de una fecha como número entero de 1 a 31.

SINTAXIS

DAY(
<fecha>
)

PARÁMETROS

 fecha: Valor correspondiente a una fecha en formato datetime, o texto


representando una fecha.

VALOR DEVUELTO
La función DAY devuelve un número entero en el rango 1-31.

MONTH
La función MONTH devuelve el mes de una fecha como número entero de 1
(correspondiente a enero) a 12 (correspondiente a diciembre).

SINTAXIS

MONTH(<fecha>)

PARÁMETROS

 fecha: Valor correspondiente a una fecha en formato datetime, o texto


representando una fecha.

VALOR DEVUELTO
La función MONTH devuelve un número entero en el rango 1-12.

QUARTER
La función QUARTER devuelve el trimestre de una fecha como número entero en el rango
1-4.

SINTAXIS
QUARTER(
<fecha>
)

PARÁMETROS

 fecha: Valor correspondiente a una fecha en formato datetime, o texto


representando una fecha.

VALOR DEVUELTO
La función QUARTER devuelve un número entero en el rango 1-4.

YEAR
La función YEAR devuelve el año de una fecha como número entero en el rango 100-
9999.

SINTAXIS

YEAR(<fecha>)

PARÁMETROS

 fecha: Valor correspondiente a una fecha en formato datetime, o texto


representando una fecha.

VALOR DEVUELTO
La función YEAR devuelve un número entero en el rango 100-9999.

FORMAT
La función FORMAT convierte un valor en texto de acuerdo a un formato específico.

SINTAXIS

FORMAT(
<valor>,
<formato>
)

PARÁMETROS
 valor: Valor o expresión que, devolviendo un valor sencillo, se desea convertir en
texto.
 formato: Cadena de texto con la plantilla del formato a aplicar.

VALOR DEVUELTO
La función FORMAT devuelve una cadena de texto.

Los formatos disponibles para valores numéricos son:

 General Number: Muestra un valor sin separador de miles.


 Currency: Muestra un valor con formato de moneda según la configuración local.
Incluye separador de miles y dos cifras decimales.
 Fixed: Muestra un valor con, como mínimo, una cifra a la izquierda de la coma
decimal y dos cifras a su derecha.
 Standard: Muestra un valor con separador de miles, al menos una cifra a
la izquierda de la coma decimal y dos cifras a su derecha.
 Percent: Muestra un valor multiplicado por 100, con dos cifras a la derecha de la
coma decimal y el signo % a la derecha del resultado.
 Scientific: Muestra un valor en formato científico (con la forma NE+n, donde N es
un número con dos decimales que multiplica a 10 elevado a n).
 Yes/No: Muestra "No" si el valor es 0 y "Yes" en cualquier otro caso.
 True/False: Muestra "False" si el valor es 0 y "True" en cualquier otro caso.
 On/Off: Muestra "Off" si el valor es 0 y "On" en cualquier otro caso.
Se puede encontrar información sobre los formatos personalizados para valores numéricos
en este enlace, e información sobre formatos predefinidos para fecha y hora en este otro
enlace.

Los formatos disponibles para fechas y horas son:

 General Date: Muestra una fecha u hora. El formato exacto dependerá del valor de
referencia cultural local.
 Long Date, Medium Date o Short Date: Muestra un fecha según el formato largo,
medio o corto del valor de referencia cultural local.
 Long Time: Muestra una hora según el formato largo del valor de referencia
cultural local. Normalmente incluye la hora, el minuto y el segundo.
 Medium Time: Muestra una hora en formato de 12 horas.
 Short Time: Muestra una hora en formato de 24 horas.

CALENDAR
La función CALENDAR devuelve una tabla con una única columna llamada "Date"
conteniendo un rango secuencial de fechas entre dos fechas dadas como argumentos (e
incluidas en el rango).

SINTAXIS

CALENDAR(<fecha_inicial>; <fecha_final>)

PARÁMETROS

 fecha_inicial: Fecha inicial del rango a devolver.


 fecha_final: Fecha final del rango a devolver.

VALOR DEVUELTO
La función CALENDAR devuelve una tabla con una única columna llamada "Date"
conteniendo un rango de fechas.

EJEMPLOS
En este ejemplo se crea una tabla personalizada conteniendo como única columna el
rango de fechas entre el 1 de enero de 2016 y el 7 de enero del mismo año:

En este ejemplo se parte de una tabla ("Ventas") conteniendo fechas de ventas:

Y se crea una tabla personalizada con fechas de inicio y final extraídas de la tabla de
ventas mediante las funciones MINX y MAXX:
DATESMTD
La función DATESMTD devuelve una tabla con una única columna que contiene las fechas
desde el principio de mes del contexto actual hasta la última fecha del contexto actual.

SINTAXIS

DATESMTD(
<fechas>
)

PARÁMETROS

 fechas: Columna conteniendo fechas.

VALOR DEVUELTO
La función DATESMTD devuelve una tabla.

EJEMPLOS
Se considera en este ejemplo la siguiente tabla de ventas:

Se define la medida "Ventas":

Ventas = SUM(Ventas[Importe])
..y, a continuación, se define la medida "Ventas MTD" que calcula las ventas acumuladas
desde principio de mes:

Ventas MTD = CALCULATE(


Ventas[Ventas];
DATESMTD(Calendario[Fecha])
)
Si llevamos estas medidas a una matriz, obtenemos:
DATESQTD
La función DATESQTD devuelve una tabla con una única columna que contiene las fechas
desde el principio del trimestre del contexto actual hasta la última fecha del contexto
actual.

SINTAXIS

DATESQTD(
<fechas>
)

PARÁMETROS

 fechas: Columna conteniendo fechas.

VALOR DEVUELTO
La función DATESQTD devuelve una tabla.

INFORMACIÓN ADICIONAL
El argumento <fechas> puede ser una referencia a una columna conteniendo fechas, una
expresión que devuelva una tabla con una única columna conteniendo fechas o una
expresión booleana que defina una tabla con una única columna conteniendo fechas.

El trimestre actual siempre comienza el día 1 del primer mes del trimestre (no es
personalizable).

Esta función considera el último día del contexto actual y devuelve una tabla conteniendo
todas las fechas desde el primer día del trimestre al que pertenece dicho día hasta este
último día. Esto significa que si en el contexto actual se ve involucrado más de un
trimestre, solo se considera el último.

En función del contexto en el que se use, es posible que el resultado no sea el esperado
(por ejemplo, en una matriz de meses y años en la que queramos mostrar las ventas
acumuladas desde principio de año, es posible que simplemente veamos las ventas por
mes). En un caso así, asegúrate de haber marcado la consulta conteniendo el calendario
como "tabla de fechas" (seleccionando la consulta en la columna CAMPOS y ejecutando
el comando Modelado > Calendarios > Marcar como tabla de fechas):

EJEMPLOS
Se considera en este ejemplo la siguiente tabla de ventas:
Se define la medida "Ventas":

Ventas = SUM(Ventas[Importe])
..y, a continuación, se define la medida "Ventas QTD" que calcula las ventas acumuladas
desde principio de trimestre:

Ventas QTD = CALCULATE(


Ventas[Ventas];
DATESQTD(Calendario[Fecha])
)
Si llevamos estas medidas a una matriz, obtenemos:
Puede observarse cómo la medida se reinicializa a cero al principio de cada trimestre.

DATESYTD
La función DATESYTD devuelve una tabla que contiene las fechas desde el principio de
año del contexto actual hasta la última fecha del contexto actual.

SINTAXIS

DATESYTD(
<fechas>
[,<fecha_fin_de_año>]
)

PARÁMETROS

 fechas: Columna conteniendo fechas.


 fecha_fin_de_año: Argumento opcional de tipo string. Fecha que define el último
día del año a considerar (si no se especifica se sobreentiende que se trata del 31
de diciembre).

VALOR DEVUELTO
La función DATESYTD devuelve una tabla.
INFORMACIÓN ADICIONAL
El argumento <fechas> puede ser una referencia a una columna conteniendo fechas, una
expresión que devuelva una tabla con una única columna conteniendo fechas o una
expresión booleana que defina una tabla con una única columna conteniendo fechas.

El argumento <fecha_fin_de_año> es una cadena de texto con el mismo formato que el


usado para las fechas en el equipo del cliente donde el libro de trabajo fue creado. Solo se
considera el día y el mes. Este argumento nos permite tratar el 30 de junio como último día
del año, por ejemplo, lo que es común en calendarios fiscales.

Esta función considera el último día del contexto actual y devuelve una tabla conteniendo
todas las fechas desde el primer día del año al que pertenece dicho día hasta este último
día. Esto significa que si en el contexto actual se ve involucrado más de un año, solo se
considera el último.

En función del contexto en el que se use, es posible que el resultado no sea el esperado
(por ejemplo, en una matriz de meses y años en la que queramos mostrar las ventas
acumuladas desde principio de año, es posible que simplemente veamos las ventas por
mes). En un caso así, asegúrate de haber marcado la consulta conteniendo el calendario
como "tabla de fechas" (seleccionando la consulta en la columna CAMPOS y ejecutando
el comando Modelado > Calendarios > Marcar como tabla de fechas):

EJEMPLOS
En este ejemplo se ha definido una medida que suma la columna conteniendo los importes
de ventas:

Total Sales = SUM(FactSales[SalesAmount])


..y se ha definido la siguiente medida:

Total Sales YTD =


CALCULATE(
[Total Sales];
DATESYTD(DimDate[Datekey])
)
..que calcula la suma de la mencionada columna pero aplicando el filtro dado por la función
DATESYTD (es decir, calcuma la suma de los importes de ventas desde el primer día del
año del contexto actual hasta el último día del contexto actual):
Considérese a continuación la siguiente tabla conteniendo cifras de ventas y la fecha en la
que ocurrieron:

Como puede comprobarse, incluye información de ventas de 2015 y de 2016.

Se define la medida "Ventas":

Ventas = SUM(Ventas[Importe])
..y, a continuación, se define la medida "Ventas YTD" que calcula las ventas acumuladas
desde principio de año:
Ventas YTD = CALCULATE(
Ventas[Ventas];
DATESYTD(Calendario[Fecha])
)
Si llevamos estas medidas a una matriz, obtenemos:

Puede verse cómo la medida "Ventas YTD" acumula las ventas realizadas desde el 1 de
enero de cada año.

PREVIOUSDAY
La función PREVIOUSDAY devuelve una tabla conteniendo una columna con la fecha
correspondiente al día anterior al contexto actual.

SINTAXIS

PREVIOUSDAY(
<fechas>
)

PARÁMETROS
 fechas: Columna conteniendo fechas.

VALOR DEVUELTO
La función PREVIOUSDAY devuelve una tabla.

Si, dada una tabla con ventas, definimos la medida:

Ventas = SUM(FactSales[SalesAmount])
...definiendo el total de ventas, y la medida

Ventas un día antes = CALCULATE(


[Ventas];
PREVIOUSDAY(DimDate[Datekey])
)
Si llevamos ambas medidas a una tabla en la que mostramos como cabecera de filas los
dias del calendario, el resultado es el siguiente:
En este caso, el período considerado en el cálculo de la medida [Ventas un día antes] es el
día anterior al del contexto actual.

PREVIOUSMONTH
La función PREVIOUSMONTH devuelve una tabla conteniendo una columna con las
fechas correspondientes al mes anterior al contexto actual.

SINTAXIS

PREVIOUSMONTH(
<fechas>
)

PARÁMETROS

 fechas: Columna conteniendo fechas.

VALOR DEVUELTO
La función PREVIOUSMONTH devuelve una tabla.

EJEMPLOS
Si, dada una tabla con ventas, definimos la medida:

Ventas = SUM(FactSales[SalesAmount])
...definiendo el total de ventas, y la medida

Ventas mes anterior = CALCULATE(


[Ventas];
PREVIOUSMONTH(DimDate[Datekey])
)
...para calcular las ventas del mes anterior, y llevamos ambas medida a una matriz en la
que situamos días, meses y años en la cabecera de filas, obtenemos el siguiente
resultado:
Puede apreciarse cómo el cálculo de la variable [Ventas mes anterior] para los días
visibles de febrero y marzo coinciden con el total del mes anterior.

PREVIOUSQUARTER
La función PREVIOUSQUARTER devuelve una tabla conteniendo una columna con las
fechas correspondientes al trimestre anterior al contexto actual.

SINTAXIS
PREVIOUSQUARTER(<fechas>)

PARÁMETROS

 fechas: Columna conteniendo fechas.

VALOR DEVUELTO
La función PREVIOUSQUARTER devuelve una tabla.

EJEMPLOS
Si, dada una tabla con ventas, definimos la medida:

Ventas = SUM(FactSales[SalesAmount])
...definiendo el total de ventas, y la medida

Ventas trimestre anterior = CALCULATE(


[Ventas];
PREVIOUSQUARTER(DimDate[Datekey])
)
...para calcular las ventas del trimestre anterior, y llevamos ambas medidas a una matriz
en la que situamos meses, trimestres y años en las cabeceras de las filas, el resultado es
el siguiente:
Puede apreciarse cómo, para cada mes y cada trimestre, el resultado del cálculo de las
ventas del trimestre anterior coincide, efectivamente, con el total de ventas del trimestre
que precede al contexto actual. Puede también comprobarse cómo el cálculo de las ventas
para el trimestre anterior para el año 2008 (894.947.792,23) es el total de ventas del último
trimestre de 2007 (ya se ha comentado que el conjunto de fechas devuelto por la función
no pertenece al contexto). Por este motivo la medida no devuelve ningún valor para el año
2007 (pues no hay datos para el último trimestre de 2006).

PREVIOUSYEAR
La función PREVIOUSYEAR devuelve una tabla conteniendo una columna con las fechas
correspondientes al año anterior al contexto actual.

SINTAXIS

PREVIOUSYEAR(
<fechas>
[,<último_día_del_año>]
)

PARÁMETROS

 fechas: Columna conteniendo fechas.


 último_día_del_año: Argumento opcional. Cadena de texto que define la fecha de
fin de año (el valor por defecto es el 31 de diciembre).

VALOR DEVUELTO
La función PREVIOUSYEAR devuelve una tabla.

EJEMPLOS
Si, dada una tabla con ventas, definimos la medida:

Ventas = SUM(FactSales[SalesAmount])
...definiendo el total de ventas, y la medida

Ventas año anterior = CALCULATE(


[Ventas];
PREVIOUSYEAR(DimDate[Datekey])
)
...para calcular las ventas del año anterior, y llevamos a una matriz estas medidas con
meses y años en la cabecera de las filas, el resultado es el siguiente:
Puede apreciarse cómo, para cada mes y para cada año, la medida conteniendo las
ventas del año anterior coinciden con las ventas totales del año que termina el mes de
diciembre previo al mes del contexto actual.

SAMEPERIODLASTYEAR
La función SAMEPERIODLASTYEAR devuelve una tabla conteniendo una columna de
fechas que coinciden con las implicadas en el contexto actual desplazadas hacia atrás un
año.
SINTAXIS

SAMEPERIODLASTYEAR(
<fechas>
)

PARÁMETROS

 fechas: Columna conteniendo fechas.

VALOR DEVUELTO
La función SAMEPERIODLASTYEAR devuelve una tabla.

EJEMPLOS
Si, en una tabla conteniendo información de ventas, definimos la medida

Ventas = SUM(FactSales[SalesAmount])
...para totalizar las ventas en el período implicado en el contexto, podemos mostrar las
ventas por año y mes en una visualización tipo matriz:
A continuación podemos crear una medida para calcular las ventas del mismo período que
el implicado en el contexto un año antes:

Ventas año anterior = CALCULATE([Ventas];


SAMEPERIODLASTYEAR(DimDate[Datekey]))
Si llevamos esta medida a la matriz anterior, obtenemos lo siguiente:
Puede apreciarse cómo, efectivamente, esta última medida devuelve la suma de las
ventas para el año anterior.

PARALLELPERIOD
La función PARALLELPERIOD devuelve una tabla conteniendo una columna de fechas
que coinciden con las implicadas en el contexto actual desplazadas hacia adelante o hacia
atrás un número de intervalos determinado pero ampliadas al intervalo que se haya
especificado.

SINTAXIS

PARALLELPERIOD(
<fechas>,
<número_de_intervalos>,
<intervalo>
)

PARÁMETROS

 fechas: Columna conteniendo fechas.


 número_de_intervalos: Número de intervalos a desplazar hacia adelante o hacia
atrás en el tiempo el período implicado en el contexto actual.
 intervalo: Tipo de intervalo.

VALOR DEVUELTO
La función PARALLELPERIOD devuelve una tabla.

EJEMPLOS
Si, dada una tabla con ventas, definimos la medida:

Ventas = SUM(FactSales[SalesAmount])
...definiendo el total de ventas, y la medida

Ventas un mes anterior = CALCULATE(


[Ventas];
PARALLELPERIOD(DimDate[Datekey]; -1 ; MONTH)
)
Podemos llevar a una matriz el listado de meses mostrando ambas medidas:
Puede verse cómo la función PARALLELPERIOD devuelve el periodo de tiempo
correspondiente al mes anterior, tal y como cabría esperar.

SUMMARIZE
La función SUMMARIZE devuelve una tabla agregada según un conjunto de campos.

SINTAXIS

SUMMARIZE(
<tabla>,
<agrupado_por_columna>
[, <agrupado_por_columa>]…
[, ROLLUP(<agrupado_por_columna>
[, <agrupado_por_columa>])]
[, <nombre>; <expresión>]…
)

PARÁMETROS

 tabla: Referencia a una tabla o expresión DAX que devuelve una tabla.
 agrupado_por_columna: Argumento opcional. Nombre totalmente cualificado de
una columna existente en la tabla a usar o en alguna tabla relacionada para crear
los grupos basados en los valores que se encuentren en ella. Pueden añadirse
varios campos.
 nombre: Nombre dado al total calculado en <expresión>.
 expresión: Expresión DAX que devuelve un escalar que será utilizada para el
cálculo de los totales.

VALOR DEVUELTO
La función SUMMARIZE devuelve una tabla teniendo como columnas las especificadas en
el parámetro <agrupado_por_columna> (valores que van a especificar los criterios de
agregación) y las añadidas como <nombre> que contendrán el resultado de evaluar su
<expresión> para las combinaciones de los campos <agrupado_por_columna>. En el caso
de añadir campos en el bloque ROLLUP, la tabla incluirá también totales parciales para las
columnas en cuestión.

EJEMPLOS
En este ejemplo partimos de una tabla conteniendo las ventas (Sales), una tabla con el
calendario (Calendar) y otra con el listado de categorías a las que pertenecen los
productos vendidos (Category). El objetivo es crear una tabla calculada que muestre, para
cada año y para cada categoría, el total de ventas y el total de tasas pagadas
(campos SalesAmount y TaxAmt de la tabla Sales, respectivamente).

Con este objetivo especificamos como argumentos de la función SUMMARIZE la tabla a


resumir (Sales) y los campos cuyos valores definirán los criterios de agregación
('Calendar'[Year] y Category[Category]). Por último especificamos, por parejas, el nombre
de la nueva columna y la expresión a resumir (en este caso la suma de los
campos SalesAmount y TaxAmt)

Sales and taxes per category = SUMMARIZE(


Sales;
'Calendar'[Year];
Category[Category];
"Sales"; SUM(Sales[SalesAmount]);
"Tax"; SUM(Sales[TaxAmt])
)
El resultado es el siguiente:
SUMMARIZECOLUMNS
La función SUMMARIZECOLUMNS devuelve una tabla agregada según un conjunto de
campos, pudiendo aplicar filtros a los valores de entrada.

SINTAXIS

SUMMARIZECOLUMNS(
<agrupado_por_columna>
[, <agrupado_por_columna>]...,
[<tabla_de_filtrado>]...,
[, <nombre>,
<expresión>]…
)

PARÁMETROS

 agrupado_por_columna: Nombre totalmente cualificado de una columna


existente en la tabla a usar o en alguna tabla relacionada para crear los grupos
basados en los valores que se encuentren en ella. Pueden añadirse varios
campos. A cada columna <agrupado_por_columna> se le aplicará un cross-
joined (si se trata de diferentes tablas) o un auto-existed (si se trata de la misma
tabla) con las demás columnas especificadas.
 tabla_de_filtrado: Expresión que devuelve una tabla que se añadirá al contexto de
filtro de todas las columnas especificadas en los argumentos
<agrupado_por_columna>. Los valores presentes en la tabla de filtrado son usados
para aplicar un filtro antes de que se realice el cross-join o el auto-exit.
 nombre: Nombre dado al total calculado en <expresión>.
 expresión: Expresión DAX que devuelve un escalar que será utilizada para el
cálculo de los totales.
VALOR DEVUELTO
La función SUMMARIZECOLUMNS devuelve una tabla teniendo como columnas las
especificadas en el parámetro <agrupado_por_columna> (valores que van a especificar los
criterios de agregación) y las añadidas como <nombre> que contendrán el resultado de
evaluar su <expresión> para las combinaciones de los campos <agrupado_por_columna>.

EJEMPLOS
Si tenemos una tabla con información de clientes, Customer, podemos crear el mismo
informe para mostrar las ventas solo para los hombres, por ejemplo (información contenida
en el campo Gender de Customer):

Sales to males per country =


SUMMARIZECOLUMNS(
Geography[Country];
FILTER(Customer; Customer[Gender] = "M");
"Total sales"; SUM(Sales[SalesAmount])
)

RANKX
La función RANKX devuelve la posición (rango) de cada valor resultante de aplicar una
expresión a las filas de una tabla.

SINTAXIS

RANKX(
<tabla>,
<expresión>
[, <valor>
[, <orden>
[, <igualdades>]]]
)

PARÁMETROS

 tabla:Tabla conteniendo las filas para las que se evaluará la expresión.


 expresión: Expresión a evaluar para cada fila de la tabla.
 valor: Argumento opcional. Escalar o expresión que devuelve un escalar que se
desea buscar en la lista de valores a analizar.
 orden: Argumento opcional. Valor que especifica cómo aplicar un rango a un valor
(ordenando la lista de abajo arriba o de arriba abajo)
 igualdades: Argumento opcional. Argumento que determina cómo aplicar rangos
cuando hay igualdades en la lista.

VALOR DEVUELTO
La función RANKX devuelve un número entero.

EJEMPLOS
Supongamos que tenemos un listado de ventas en el que se incluye el producto vendido y
el número de unidades vendidas:

Comencemos definiendo una medida que calcule las ventas totales para cada producto:

Ventas totales = SUM(Ventas[Cantidad])


...y llevemos a una visualización tipo "Tabla" el campo <Producto> y la medida recién
creada:

Si deseásemos saber qué productos son los más vendidos -independientemente del
contexto- y en qué posición se ordenan tras este análisis, podríamos recurrir a la función
RANKX:
Rango = RANKX(ALL(Ventas[Producto]); Ventas[Ventas totales])
Si añadimos esta medida a la tabla anterior obtenemos:

Como puede verse, la función RANKX ha aplicado los rangos correctamente, dando el
valor 1 al producto más vendido (el producto B, con 7 unidades) y el valor 4 al producto
menos vendido (el producto D, con 2 unidades).

Obsérvese la necesidad de incluir en la definición de la medida <Rango> la función ALL.


De otra forma, cuando la máquina DAX comenzase con el primero de los productos (el
producto A), el contexto quedaría limitado a este producto. Es decir, la medida <Rango> se
calcularía en este contexto limitado a las filas correspondientes al producto A. Y el orden
que ocupan las ventas del producto A en una lista en la que solo se encuentra este
producto es el 1 (es el producto más vendido pues es el único). Y lo mismo ocurriría con
los demás productos: el rango se calcularía siempre considerando una tabla en la que solo
se encuentrase dicho producto, por lo que su rango sería siempre 1.

Supongamos ahora que deseamos que los rangos se apliquen en orden inverso, es decir,
que se dé el valor 1 al producto menos vendido y el 4 al más vendido. Para esto bastaría
con incluir el parámetro <orden>:

Rango = RANKX(ALL(Ventas[Producto]); Ventas[Ventas totales];;1)


Puede apreciarse cómo, en este caso, el tercer argumento no existe en la definición de la
medida. Si actualizamos la tabla anterior obtenemos lo siguiente:

Si, volviendo a ordenar los rangos de mayor a menos, queremos saber qué posición ocupa
el producto que ha tenido ventas de 6 unidades, la medida tendría que ser modificada de
la siguiente forma:

Rango = RANKX(ALL(Ventas[Producto]); Ventas[Ventas totales];6)


Podemos llevar la medida a una visualización tipo "Tarjeta" para ver el resultado:
...pues, efectivamente, fue el producto C que, con ventas de 6 unidades, ocupa la segunda
posición.

Imaginemos ahora que queremos calcular la posición del producto del que se vendieron 5
unidades (ya sabemos que no hay ningún producto con esta cifra de ventas):

Rango = RANKX(ALL(Ventas[Producto]); Ventas[Ventas totales];5)


Ahora, la visualización anterior muestra lo siguiente:

Básicamente, lo que está diciéndonos la medida es "si existiese un producto para el que se
hubiesen registrado ventas por valor de 5 unidades, ocuparía la posición 3 en el ranking".
Como se ha comentado, en el caso de estar calculando rankings para elementos
duplicados, la máquina DAX los combina en un único elemento y le aplica el ranking más
elevado que tendrían por separado.

Para ver esto, consideremos el listado de clientes (en el que tenemos tanto el nombre de
pila como el apellido y el nombre completo) y las ventas asociadas a cada uno.
Suponiendo que el nombre completo se encuentre en el campo Customer[Name] y que las
ventas estén calculadas en la medida [Sales], podemos evaluar el ranking de cada clientes
con la siguiente medida:

Rank = RANKX(ALL(Customer[Name]); [Sales])


Si llevamos el campo con el nombre completo, las ventas y este ranking a una tabla, el
resultado es el siguiente:
Observamos cómo dos clientes tienen como nombre de pila Alisha y reciben rankings 94 y
26.

Si sustituimos el nombre completo por el nombre y modificamos la medida que calcula el


ranking:

Rank = RANKX(ALL(Customer[FirstName]); [Sales])


...el resultado es el siguiente:
Efectivamente, la máquina DAX ha combinado ambos nombres y ha asignado al resultado
el valor del mayor ranking: 26.

TOPN
La función TOPN devuelve las N filas con valores más elevados de la tabla indicada.

SINTAXIS

TOPN(
<número_filas>,
<tabla>,
<ordenación_por>
[, <orden>
[, <ordenación_por>
[, <orden>]]...]
)

PARÁMETROS

 número_filas: Número de filas a devolver como resultado.


 tabla:Tabla conteniendo las filas para las que se evaluará la expresión.
 ordenación_por: Expresión a evaluar para cada fila de la tabla y cuyo resultado se
usará para ordenar la tabla.
 orden: Argumento opcional. Valor que especifica cómo aplicar un rango a un valor
(ordenando la lista de abajo arriba o de arriba abajo)

VALOR DEVUELTO
La función TOPN devuelve una tabla con las N filas con mayores valores.

EJEMPLOS
Si tenemos un listado de ventas que incluye el nombre del producto vendido y la cantidad
vendida:

Podemos definir una medida que nos sume, por ejemplo, las ventas de los 3 productos
más vendidos. Comencemos añadiendo una medida que suma las ventas totales (en el
contexto que corresponda):

Ventas totales = SUM(Ventas[Ventas])


Ahora podemos usar la función CALCULATE para filtrar la medida anterior de forma que
solo se consideren los 3 productos más vendidos:

Ventas TOP 3 productos =


CALCULATE(
Ventas[Ventas totales];
TOPN(
3;
VALUES(Ventas[Producto]);
Ventas[Ventas totales]
)
)
Como puede apreciarse estamos recalculando la medida Ventas[Ventas totales] con un
filtro: una tabla que devuelve los 3 valores superiores del listado de todos los productos
para la medida de Ventas[Ventas totales].
Nótese cómo la función VALUES resulta necesaria para convertir una columna en una
tabla (requisito en TOPN).

Si llevamos esta medida a una visualización tipo tarjeta obtenemos:

...valor resultado de sumar los valores 9,4 y 3 correspondientes a los productos C, B y A,


respectivamente.

También podría gustarte