Страницы: 1
RSS
PQ. Table.Group - параметризация аргументов
 
Здравствуйте, уважаемые знатоки!
Подскажите, пожалуйста, можно ли в функции 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 - 02.06.2020 18:34:39
 
Можно и здесь такое решение предлагалось минимум 2 раза. Мной и Андреем VG. Возможно кем-то еще. Щас не за компом, до завтра точно не помогу.
Вот горшок пустой, он предмет простой...
 
del
Изменено: Stics - 02.06.2020 19:20:13
 
Доброе время суток
Цитата
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
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, Андрей VG, большое спасибо!
Андрей, отдельное спасибо за комментарии!
Страницы: 1
Наверх