Страницы: 1
RSS
Power Query: Table.Pivot для двух и более столбцов
 
Привет всем!
Возможно просто не смог найти нужную тему. Если так - ткните :) носом

Есть таблица данных(во вложении):
Категория
Дата
Выдано
Получено

В сводной Эксель можно сделать (картинка 1) для каждой категории две строки (Выдано, Получено) и столбцы дат. Для каждой даты соответственно количество Выдано\Получено

Необходимо было сделать так же в PQ, но Table.Pivot может агрегировать только один столбец. Ну или я не нашел способ сделать это для двух столбцов

Может кто подсказать как сделать в PQ выходную таблицу похожую на сводную? Итоги не нужны, форматирование как в сводной (отступы для категории) то же не нужны.
 
MadG ., так нужно?
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Данные"]}[Content],
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Источник, {"Категория", "Дата"}, "Атрибут", "Значение"),
    #"Changed Type" = Table.TransformColumnTypes(#"Unpivoted Other Columns",{{"Дата", type date}}),
    #"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Changed Type", {{"Дата", type text}}, "ru-RU"), List.Distinct(Table.TransformColumnTypes(#"Changed Type", {{"Дата", type text}}, "ru-RU")[Дата]), "Дата", "Значение")
in
    #"Pivoted Column"
 
как вариант
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Данные"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Категория", type text}, {"Дата", type date}, {"Выдано", Int64.Type}, {"Получено", Int64.Type}}),
    unpivot = Table.UnpivotOtherColumns(#"Измененный тип", {"Категория", "Дата"}, "Атрибут", "Значение"),
    #"Объединенные столбцы" = Table.CombineColumns(unpivot,{"Категория", "Атрибут"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"Сведено"),
    #"Сведенный столбец" = Table.Pivot(Table.TransformColumnTypes(#"Объединенные столбцы", {{"Дата", type text}}, "ru-RU"), List.Distinct(Table.TransformColumnTypes(#"Объединенные столбцы", {{"Дата", type text}}, "ru-RU")[Дата]), "Дата", "Значение", List.Sum),
    #"Разделить столбец по разделителю" = Table.SplitColumn(#"Сведенный столбец", "Сведено", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Сведено.1", "Сведено.2"}),
    #"Измененный тип1" = Table.TransformColumnTypes(#"Разделить столбец по разделителю",{{"Сведено.1", type text}, {"Сведено.2", type text}})
in
    #"Измененный тип1"
 
Цитата
artyrH написал:
MadG . , так нужно?
:) именно!
как всё просто...и сложно, если ручОнки кривые

СПАСИБО!
 
Еще вариант:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Данные"]}[Content],
    ChangedType = Table.TransformColumnTypes(Источник,{{"Дата", type date}, {"Категория", type text}, {"Выдано", type number}, {"Получено", type number}}),
    ChangedType1 = Table.TransformColumnTypes(ChangedType,{{"Дата", type text}}),
    GroupedRows = Table.Group(ChangedType1, {"Категория"}, {{"таб", each Table.PromoteHeaders( Table.Skip( Table.Transpose( Table.DemoteHeaders( _ ) ), 1 ) ), type table}}),
    Expanded = Table.ExpandTableColumn(GroupedRows, "таб", {"Дата"} & List.Distinct( ChangedType1[Дата] ), {"Атрибут"} & List.Distinct( ChangedType1[Дата] ) )
in
    Expanded
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх