Rango de localizaciones según el número de unidades vendidas

En este escenario queremos ordenar un conjunto de localizaciones (es decir, queremos asignarles un rango) según el número de unidades vendidas en cada una de ellas. Partimos de un listado ("Movements") de ventas en el que se incluye información sobre la fecha de la venta, la zona geográfica en la que se produjo y el número de unidades vendidas:

Listado de ventas

Una segunda tabla ("Geography") incluye información sobre las zonas geográficas en cuestión:

Localizaciones geográficas

Estas tablas están relacionadas a través del campo Geography Id:

Modelo de datos

Como sabemos, la función RANKX permite asignar rangos a las filas de una tabla según los resultados que se obtengan al evaluar una expresión. El problema surge precisamente en la evaluación de esta expresión. Veamos por qué: Comencemos añadiendo una nueva columna a la tabla de Geography con el siguiente código que supuestamente asigna rangos a cada fila de la tabla según el número total de unidades vendidas:

Rank = RANKX(
    Geography;
    SUM(Movements[Units])
    )

Función RANKX

El resultado es de 1 para todas las filas -lo que, obviamente, no es lo que esperábamos-. El problema surge del hecho de que la función SUM utilizada no es capaz de adaptarse al contexto de fila, y, en cada una de las ejecuciones (una por fila)- devuelve la suma de toda la columna Movements[Units]. Para permitir la transición entre ambos tipos de contexto deberemos utilizar la función CALCULATE:

Rank = RANKX(
    Geography;
    CALCULATE(SUM(Movements[Units]))
    )

Función RANK tras utilizar la función CALCULATE para permitir la transición de contexto

Para confirmar que el resultado es el correcto, definamos una medida que sume el número de unidades vendidas:

Sum of Units = SUM(Movements[Units])

...y llevemos la lista de ciudades, la medida creada y el rango asignado a una visualización tipo tabla, ordenándola de mayor a menor según el valor de la medida:

Lista de localizaciones ordenada según el número de unidades vendidas

 

DAX functions involved
Submitted by admin on Sat, 07/06/2019 - 10:44