Здравствуйте, уважаемые знатоки! Подскажите, пожалуйста, можно ли в функции Table.Group уйти от явного перечисления столбцов и их имен в агрегации, использовать как-то Table.Column.Names ? Для примера в файле, чтоб при добавлении нового столбца он также суммировался и имя нового столбца = имени исходного столбца Пока эту задачу решаю через pivot/unpivot ... в поиске искал "Table.Group", нужный результат не нашел
Код
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
group = Table.Group(Источник, {"Ключ"}, {{"Продукт1", each List.Sum([Продукт1]), type number}, {"Продукт2", each List.Sum([Продукт2]), type number}, {"Продукт3", each List.Sum([Продукт2]), type number}})
in
group
Student64 написал: можно ли в функции Table.Group уйти от явного перечисления столбцов и их имен в агрегации
Прежде чем задаваться таким вопросом нужно задать себе вопросы определений, например, таких
Код
let
Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
columnNames = Table.ColumnNames(Source),
// всё равно статика - или как указать по чему группируем?
groupColumns = List.Range(columnNames, 0, 1),
// опять статика - как определить данные каких столбцов используем для вычислений?
otherColumns = List.Range(columnNames, 1),
// следующая статика, как указать агрегирующую(ие) функции для вычислений?
// плюс статика, какие типы данных возвращаются агрегированием?
aggregateList = List.Transform(otherColumns, each {_, (subTable) => List.Sum(Table.Column(subTable, _)), Number.Type}),
// и снова статика - какой тип группировки используем?
result = Table.Group(Source, groupColumns, aggregateList, GroupKind.Global)
in
result
let
from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
lst = List.Transform(List.Skip(Table.ColumnNames(from),1),each {_,(tbl)=>List.Sum(Table.Column(tbl,_))}),
to = Table.Group(from,"Ключ",lst)
in
to