Поделиться через


Table.Group

Синтаксис

Table.Group(table as table, key as any, aggregatedColumns as list, optional groupKind as nullable number, optional comparer as nullable function) as table

О программе

Группирует строки table по ключевым столбцам, определенным key. Это key может быть имя одного столбца или список имен столбцов. Для каждой группы создается запись, содержащая ключевые столбцы (и их значения), а также все агрегированные столбцы, указанные в aggregatedColumns. При желании можно также указать groupKind и comparer.

Если данные уже отсортированы по ключевым столбцам, можно указать параметр groupKindGroupKind.Local. Это может повысить производительность группировки в определенных случаях, так как предполагается, что все строки с заданным набором значений ключей являются смежными.

При передаче comparer, обратите внимание, что если алгоритм обрабатывает разные ключи как равные, строка может быть помещена в группу с ключами, отличающимися от её собственных.

Эта функция не гарантирует порядок возвращаемых строк.

Пример 1

Сгруппировать таблицу, добавив статистический столбец [total], содержащий сумму цен ("каждый List.Sum([цена])").

Использование

Table.Group(
    Table.FromRecords({
        [CustomerID = 1, price = 20],
        [CustomerID = 2, price = 10],
        [CustomerID = 2, price = 20],
        [CustomerID = 1, price = 10],
        [CustomerID = 3, price = 20],
        [CustomerID = 3, price = 5]
    }),
    "CustomerID",
    {"total", each List.Sum([price])}
)

Выходные данные

Table.FromRecords(
    {
        [CustomerID = 1, total = 30],
        [CustomerID = 2, total = 30],
        [CustomerID = 3, total = 25]
    },
    {"CustomerID", "total"}
)

Функции сравнения