Ventas de los clientes con mayor facturación

Este escenario es continuación de Identificación de los clientes con mayor facturación. El objetivo ahora es obtener -también como función de consulta- las ventas realizadas a los n clientes con mayor facturación.

En aquel escenario terminábamos con la siguiente consulta:

(numberOfCustomers as number) =>
let
    GroupedRows = Table.Group(
        Sales,
        "Customer Id",
        {
            {"Total Sales", each List.Sum([Amount]), type number}
        }
    ),
    SortedRows = Table.Sort(
        GroupedRows,
        {
            {"Total Sales", Order.Descending}
        }
    ),
    TopNRows = Table.FirstN(SortedRows, numberOfCustomers)
in
    TopNRows

El resultado-una vez invocada la función- era una tabla con dos columnas: El identificador del cliente y las ventas de dicho cliente. Por ejemplo, si invocábamos la función pasando el número 3 como argumento, la tabla obtenida era la siguiente:

Identificación de los clientes con mayor facturación

Si duplicamos la consulta y damos a la nueva un nombre apropiado (SalesTopCustomers, por ejemplo), tendríamos que añadir un paso que sume la columna Total Sales, para lo que basta con usar la función Table.Column para seleccionar la columna, y List.Sum nuevamente, para sumarla. Es decir:

(numberOfCustomers as number) =>
let
    GroupedRows = Table.Group(
        Sales,
        "Customer Id",
        {
            {"Total Sales", each List.Sum([Amount]), type number}
        }
    ),
    SortedRows = Table.Sort(
        GroupedRows,
        {
            {"Total Sales", Order.Descending}
        }
    ),
    TopNRows = Table.FirstN(SortedRows, numberOfCustomers),
    SalesTopNRows = Table.Column(TopNRows, "Total Sales"),
    TotalSales = List.Sum(SalesTopNRows)
in
    TotalSales
Ventas de los clientes con mayor facturación

Si invocamos la función pasando 3 como argumento, el resultado es el siguiente:

Ventas de los clientes con mayor facturación
Enviado por admin el Jue, 02/02/2023 - 14:11