La función Table.AggregateTableColumn aplica una o varias funciones de agregación a una tabla incluida en una columna de otra tabla, devolviendo una tabla con columnas conteniendo el resultado de las agregaciones.
Table.AggregateTableColumn(
table as table,
column as text,
aggregations as list
) as table
- table: tabla externa
- column: nombre de la columna que contiene la tabla interna
- aggregations: lista de agregaciones a realizar
El parámetro aggregations es una lista de listas, una para cada agregación a realizar. Cada una de estas agregaciones vendrá definida por tres valores: el nombre de la columna a la que aplicar la función de agregación, la función de agregación a aplicar, y el nombre de la columna a crear conteniendo el resultado de la función de agregación.
En este ejemplo partimos de una tabla que contiene dos campos: el nombre del vendedor (columna "name") y una tabla con el detalle de las ventas de dicho vendedor (columna "sales"):
let
Source = Table.FromRecords(
{
[name = "Peter", sales = Table.FromRecords(
{
[customer = 2, price = 25],
[customer = 5, price = 30]
}
)],
[name = "Martha", sales = Table.FromRecords(
{
[customer = 2, price = 40],
[customer = 1, price = 10],
[customer = 6, price = 20]
}
)]
}
)
in
Source
Podemos visualizar, por ejemplo, la tabla de ventas de Peter haciendo clic en el enlace Table que aparece a la derecha de su etiqueta:
Ahora deseamos generar una tabla con información agregada extraída de la tabla contenida en la columna "sales". Por ejemplo, podríamos extraer el número de ventas, la suma de los importes de venta y el mayor importe de venta de cada vendedor con el siguiente código:
let
Source = Table.FromRecords(
{
[name = "Peter", sales = Table.FromRecords(
{
[customer = 2, price = 25],
[customer = 5, price = 30]
}
)],
[name = "Martha", sales = Table.FromRecords(
{
[customer = 2, price = 40],
[customer = 1, price = 10],
[customer = 6, price = 20]
}
)]
},
type table [sales = table [customer = number, price = number]]
)
in
Table.AggregateTableColumn(
Source,
"sales",
{
{"customer", List.Count, "# Sales"},
{"price", List.Sum, "Total Sales"},
{"price", List.Max, "Max Sale"}
}
)