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:
FilterByValue = Table.SelectRows(Sales, each [Amount] >= 3000)
in
FilterByValue
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:
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:
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:
Nuestra consulta quedaría del siguiente modo:
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