Страницы: 1
RSS
power query автоматическое добавление нового столбца в группировку
 
Добрый день,

Есть таблица с постоянно добавляющимся списком дат. В power query колонка дат раскидывается на столбцы и потом группируется. При появлении новой даты в группировку каждый раз приходится добавлять ее вручную. Возможно есть способ автоматизировать процесс, допустим добавлять все новые столбцы после определенной колонки?  
 
Так что ли?
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Данные", Int64.Type}}),
    #"Измененный тип1" = Table.TransformColumnTypes(#"Измененный тип",{{"Дата", type date}}),
    #"Removed Columns" = Table.RemoveColumns(#"Измененный тип1",{"Менеджер"}),
    #"Сведенный столбец" = Table.Pivot(Table.TransformColumnTypes(#"Removed Columns", {{"Дата", type text}}, "ru-RU"), List.Distinct(Table.TransformColumnTypes(#"Removed Columns", {{"Дата", type text}}, "ru-RU")[Дата]), "Дата", "Данные", List.Sum)
in
    #"Сведенный столбец"
Вот горшок пустой, он предмет простой...
 
Да, с моим примером сработает, я не корректно сформулировал. Есть несколько временных измерений в нескольких столбцах в исходной таблице, даты, кварталы, годы. Конечная задача  - в power query временные промежутки из строк перевести в столбцы для расчета % отношений между ними. На данный момент я это делаю группировкой с добавлением в ручную каждого нового временного интервала
 
Какое-то немного бессмысленное действие, но вот
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Данные", Int64.Type}}),
    #"Измененный тип1" = Table.TransformColumnTypes(#"Измененный тип",{{"Дата", type date}}),
    #"Дублированный столбец_Данные" = Table.DuplicateColumn(#"Измененный тип1", "Данные", "Копия Данные"),
    Dates = List.Buffer(List.Transform(List.Sort(List.Distinct(#"Дублированный столбец_Данные"[Дата])), Text.From)),
    Quarters = List.Buffer(List.Transform(List.Sort(List.Distinct(#"Дублированный столбец_Данные"[Квартал])), Text.From)),
    #"Сведенный столбец_Дата" = Table.Pivot(Table.TransformColumnTypes(#"Дублированный столбец_Данные", {{"Дата", type text}}, "ru-RU"), Dates, "Дата", "Данные"),
    #"Сведенный столбец_Квартал" = Table.Pivot(Table.TransformColumnTypes(#"Сведенный столбец_Дата", {{"Квартал", type text}}, "ru-RU"), Quarters, "Квартал", "Копия Данные"), 
    #"Сгруппированные строки" = Table.Group(#"Сведенный столбец_Квартал", {"Город", "Менеджер"}, List.Transform(Dates & Quarters, (l)=>{l, (_)=>List.Sum(Table.Column(_, l)), type number})),
    #"3 квартал/2 квартал" = Table.AddColumn(#"Сгруппированные строки", "3 квартал/2 квартал", each [3 квартал]/[2 квартал]),
    #"Измененный тип2" = Table.TransformColumnTypes(#"3 квартал/2 квартал",{{"3 квартал/2 квартал", Percentage.Type}})
in
    #"Измененный тип2"
F1 творит чудеса
 
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Group = Table.Combine(Table.Group(Источник, {"Город"}, {{"a", each let
    a=Table.Sort(_,{{"Дата", Order.Ascending}}),b=Table.TransformColumns
    (a,{{"Дата",each Date.ToText(Date.From(_),"dd/MM/yyyy")}}),c=
    Table.Pivot(b,List.Distinct(b[Дата]),"Дата","Данные",List.Sum)
in  Table.RemoveColumns(c,{"Квартал","Менеджер"})}})[a]) in Group
Для таблицы в шапке
Код
let
    Источник = Table.RemoveColumns(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],{"Менеджер"}),
    Group = Table.Combine(Table.Group(Источник, {"Город"}, {{"a", each let
    a=Table.Sort(_,{{"Дата", Order.Ascending}}),b=Table.TransformColumns
    (a,{{"Дата",each Date.ToText(Date.From(_),"dd/MM/yyyy")}}) 
in  Table.Pivot(b,List.Distinct(b[Дата]),"Дата","Данные",List.Sum)}})[a]) in Group
Изменено: Михаил Л - 14.07.2020 12:33:00
 
Ок, всем спасибо, работает, пойду разбираться с кодом

Цитата
Максим Зеленский написал: Какое-то немного бессмысленное действие, но вот
почему бессмысленное :) Если строит сводную по исходнику - не получится создать вычисляемое поле, например, рост/падение месяц к месяцу, пока не выведешь временной период из строк в столбцы  
Изменено: vikttur - 06.06.2021 22:31:42
 
karnavad01, переходите на PowerPivot
F1 творит чудеса
 
Не могу, надстройку PP на стандартную версию офисе 2013 не поставишь, только на prof, с соответствующей ценой, к тому же у пользователей разные версии офиса. Сводным на PQ ничего не нужно, даже сама надстройка, если без обновления.
Страницы: 1
Наверх