Obtención del valor medio de las ventas de más de 3000 € por prioridad de compra

En este caso partimos de una única tabla, Sales, conteniendo información de ventas. Entre otros, encontramos en ella el campo Order Priority conteniendo la prioridad de la compra (Low, Medium, High o Critical) y el campo Amount con información del importe de cada venta. Queremos obtener una tabla que muestre las ventas medias por prioridad pero considerando solo las ventas superiores a 3.000 €. Y queremos que la tabla resultante se muestre ordenada de mayor a menor según dicho valor.

Empezamos filtrando la tabla de ventas de forma que solo incluya ventas cuyos importes sean superiores a los 3.000 € indicados, para lo que hacemos uso de la función Table.SelectRows:

let
    FilterByValue = Table.SelectRows(Sales, each [Amount] >= 3000)    
in
    FilterByValue
Obtención del valor medio de las ventas de más de 3000 € por prioridad de compra

A continuación, queremos agrupar el resultado en función de los valores que tome el campo Order Priority, cosa que podemos conseguir con la función Table.Group. Esta función agrupa según el campo o los campos que indiquemos, y permite añadir al resultado columnas calculadas:

let
    FilterByValue = Table.SelectRows(Sales, each [Amount] >= 3000),
    GroupByPriority = Table.Group(
        FilterByValue,
        {"Order Priority"},
        {
            {"Avg Sales", each List.Average([Amount]), type number}
        }
    )
in
    GroupByPriority

Obsérvese que se ha agrupado la tabla contenida en FilterByValue según el campo Order Priority, y al resultado le hemos añadido una columna calculada que recibe el nombre de Avg Sales, y cuyos valores son el resultado de calcular el valor medio de la columna Amount. Este valor medio lo hemos obtenido usando la función List.Average:

Obtención del valor medio de las ventas de más de 3000 € por prioridad de compra

Por último solo resta ordenar el resultado según las ventas medias. La función que nos permite ordenar una tabla es Table.Sort, y podemos especificar el campo o los campos según los cuales realizar la ordenación, y si ésta debe ser ascendente o descendente. La fórmula de paso sería la siguiente:

Table.Sort(GroupByPriority,{{"Avg Sales", Order.Descending}})

Nuestra consulta quedaría del siguiente modo:

let
    FilterByValue = Table.SelectRows(Sales, each [Amount] >= 3000),
    GroupByPriority = Table.Group(
        FilterByValue,
        {"Order Priority"},
        {
            {"Avg Sales", each List.Average([Amount]), type number}
        }
    ),
    SortByValue = Table.Sort(GroupByPriority,{{"Avg Sales", Order.Descending}})
in
    SortByValue
Obtención del valor medio de las ventas de más de 3000 € por prioridad de compra
Submitted by admin on Fri, 02/03/2023 - 16:10