En este escenario partimos de una tabla de ventas (Sales) que contiene, entre otros campos, la clave que identifica cada cliente (CustomerKey) y el monto involucrado en cada compra (SalesAmount). El objetivo es generar una tabla (que puede ser añadida al modelo de datos o tratada como argumento en otras funciones) que incluya los 10 clientes que más compras acumulan. En este ejemplo concreto se creará una tabla calculada con esta información.
El proceso a seguir es:
- Obtención de una tabla que resuma las compras por cliente
- Ordenación y filtrado de dicha tabla para extraer apenas los 10 mayores
Para la obtención de la tabla recurrimos a la función SUMMARIZE:
VAR SalesByCustomer =
SUMMARIZE(
Sales;
Sales[CustomerKey];
"Total spent"; SUM(Sales[SalesAmount])
)
Estamos resumiendo la tabla Sales, agrupándola por el campo CustomerKey y totalizando, para cada CustomerKey, la suma de las ventas.
A continuación no queda más que extraer los 10 valores de CustomerKey que más ventas acumulan, para lo que recurrimos a la función TOPN:
VAR SummaryTableFiltered =
TOPN(
10;
SalesByCustomer;
[Total spent]
)
Extraemos 10 registros de la tabla creada en el paso anterior, SalesByCustomer, tomando como criterio el campo Total spent. Obsérvese que éste campo ha sido también creado en el paso anterior.
Por último, no queda más que dar un nombre a la tabla que estamos creando (Top 10 customers) y devolver el resultado. El código final es el siguiente:
Top 10 customers =
VAR SalesByCustomer =
SUMMARIZE(
Sales;
Sales[CustomerKey];
"Total spent"; SUM(Sales[SalesAmount])
)
VAR SummaryTableFiltered =
TOPN(
10;
SalesByCustomer;
[Total spent]
)
RETURN SummaryTableFiltered