Страницы: 1
RSS
Механизм работы функции Table.Group в Power Query.
 
Уважаемые "мужи" PQ подскажите, пожалуйста, в чем ошибка. Хочу добиться группировки как в файле "ВнедрилКодАндрУдачно", в файле "кодилСамРаб" работа сделана на половину, пытаюсь в файле "кодилСам НЕ Раб" через расширенный редактор применить функцию Table.Group для группировки дат под мероприятиями, но никак не получается. Спасибо
let

   Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

   #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Столбец1", Int64.Type}, {"мероприятия проводимые отделом культуры", type text}, {"колич", Int64.Type}, {"01.12.2017", type any}, {"02.12.2017", type any}, {"03.12.2017", type any}, {"04.12.2017", Int64.Type}, {"05.12.2017", type any}, {"06.12.2017", type any}, {"07.12.2017", type any}, {"08.12.2017", type any}, {"09.12.2017", type any}, {"10.12.2017", type any}, {"11.12.2017", type any}, {"12.12.2017", type any}, {"13.12.2017", type any}, {"14.12.2017", type any}, {"15.12.2017", type any}, {"16.12.2017", type any}, {"17.12.2017", type any}, {"18.12.2017", type any}, {"19.12.2017", type any}, {"20.12.2017", type any}, {"21.12.2017", type any}, {"22.12.2017", type any}, {"23.12.2017", type any}, {"24.12.2017", type any}, {"25.12.2017", type any}, {"26.12.2017", type any}, {"27.12.2017", type any}, {"28.12.2017", type any}, {"29.12.2017", type any}, {"30.12.2017", type any}, {"31.12.2017", type any}}),

   #"Удаленные столбцы" = Table.RemoveColumns(#"Измененный тип",{"Столбец1", "колич"}),

   #"Замененное значение" = Table.ReplaceValue(#"Удаленные столбцы",null,0,Replacer.ReplaceValue,{"01.12.2017", "02.12.2017", "03.12.2017", "04.12.2017", "05.12.2017", "06.12.2017", "07.12.2017", "08.12.2017", "09.12.2017", "10.12.2017", "11.12.2017", "12.12.2017", "13.12.2017", "14.12.2017", "15.12.2017", "16.12.2017", "17.12.2017", "18.12.2017", "19.12.2017", "20.12.2017", "21.12.2017", "22.12.2017", "23.12.2017", "24.12.2017", "25.12.2017", "26.12.2017", "27.12.2017", "28.12.2017", "29.12.2017", "30.12.2017", "31.12.2017"}),

   #"Несвернутые столбцы" = Table.UnpivotOtherColumns(#"Замененное значение", {"мероприятия проводимые отделом культуры"}, "Атрибут", "Значение"),

   #"Строки с применным фильтром" = Table.SelectRows(#"Несвернутые столбцы", each ([Значение] <> 0)),

   #"Удаленные столбцы1" = Table.RemoveColumns(#"Строки с применным фильтром",{"Значение"}),

   #"Измененный тип1" = Table.TransformColumnTypes(#"Удаленные столбцы1",{{"Атрибут", type date}}),

   #"группировка" = Table.Group({"мероприятия проводимые отделом культуры"}, {

   { {each ([Атрибут]), Date.Type}

   },

in

   #"группировка"

Изменено: Petren - 29.01.2018 16:15:53
 
Petren, не очень понятно что за код вы хотите получить в результате? Вам нужен вариант кода, который можно получить только кнопками? Или что-то еще?
Вот горшок пустой, он предмет простой...
 
PooHkrd, Мне надо сгруппировать даты под соответствующее мероприятие как это сделал Андрей VG в теме, он же мне и сделал первую версию решения. Потом я стал разбираться как это делается. В итоге он это все делал через расширенный редактор, а я основное сделал через графическую оболочку и пробую систематизировать даты через последнюю формулу Table.Group. А графический редактор, ругается то на in то ...Спасибо

Изменено: Petren - 29.01.2018 14:05:36
 
Да и вообще не понятно зачем плодить темы? Почему нельзя продолжить задавать вопросы в той где уже предложили готовое решение?
Вот горшок пустой, он предмет простой...
 
PooHkrd, оно (решение) очень - очень далеко и по сути проблема то разрешилась. Теперь проблема познать функцию Table.Group. Как и на каких условиях она работает и т.д.
 
Вот здесь Максим Зеленский подробно расписал как работает эта функция. Ознакомьтесь, вдруг поможет. Вообще говоря, тот код что сделал вам Андрей, он очень сильно не для начинающих. Мне там все понятно, но вашу задачу я решал бы другим способом - не так красиво.

Для модераторов. Название темы: Прошу оказать помощь в понимании механизма работы функции Table.Group в Power Query.
Изменено: PooHkrd - 29.01.2018 15:02:10
Вот горшок пустой, он предмет простой...
 
Просмотрел Вашу ссылку на Максим Зеленский подробно расписал и хочу добавить, что там другой тип группировки. Т.е. не такой как мне надо. Но все же спасибо.
Изменено: Petren - 29.01.2018 16:16:30
 
Какая разница? Там раскрывается механизм работы функции в принципе. Он вам понятен? Если у вас проблема с выбором агрегатора, который бы помог решить вашу задачу - так и скажите. Помогу. Только скажите что вы хотите у видеть в результате группировки?
Вот горшок пустой, он предмет простой...
 
PooHkrd, уважаемый, есть мероприятия "мероприятИХдаты.xlsx" в течении месяца, которым ставятся события в определенную дату.  Потом в конце месяца готовлю отчет по мероприятиям в форме:
проверка костюмов
01.01.2018
03.01.2018
Совещание
02.01.2018
.....
То как они должны сгруппироваться в файле "Систематизированные_мероприят.docx" В графическом редакторе почти собрал таблицу как надо (до строки   #"Измененный тип1" = Table.TransformColumnTypes(#"Удаленные столбцы1",{{"Атрибут", type date}}),) по образу Андрея VG и на определенном этапе не могу применить для двухуровневой группировки функцию Table.Group. Мне не принципиально как добиться двухуровневой группировки через расширенный редактор или графический. Главное подставить даты под мероприятия.
Ваш альтруизм, думаю смогу поощрить. Спасибо
Изменено: Petren - 29.01.2018 17:19:37
 
Вот такой код запроса:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Удаленные столбцы" = Table.RemoveColumns(Источник,{"Столбец1", "колич"}),
    #"Несвернутые столбцы" = Table.UnpivotOtherColumns(#"Удаленные столбцы", {"мероприятия проводимые отделом культуры"}, "Атрибут", "Значение"),
    #"Удаленные столбцы1" = Table.RemoveColumns(#"Несвернутые столбцы",{"Значение"}),
    #"Измененный тип1" = Table.TransformColumnTypes(#"Удаленные столбцы1",{{"Атрибут", type date}}),
    #"Сгруппированные строки" = Table.Group(#"Измененный тип1", {"мероприятия проводимые отделом культуры"}, {{"Даты", each Table.Transpose(Table.SelectColumns(Table.TransformColumnTypes(_,{{"Атрибут", type text}}),{"Атрибут"})), type table}, {"ДатаМин", each List.Min([Атрибут]), type date}}),
    #"Сортированные строки" = Table.Sort(#"Сгруппированные строки",{{"ДатаМин", Order.Ascending}}),
    #"Развернутый элемент Даты" = Table.ExpandTableColumn(#"Сортированные строки", "Даты", {"Column1", "Column2", "Column3"}, {"Даты.Column1", "Даты.Column2", "Даты.Column3"}),
    #"Другие столбцы с отмененным свертыванием" = Table.UnpivotOtherColumns(#"Развернутый элемент Даты", {"ДатаМин"}, "Атрибут", "Значение"),
    #"Удаленные столбцы2" = Table.RemoveColumns(#"Другие столбцы с отмененным свертыванием",{"ДатаМин", "Атрибут"})
in
    #"Удаленные столбцы2"


Во всем скрипте вручную исправлена только маленькая часть формулы в строке 7.
вместо
Код
Table.Transpose(Table.SelectColumns(Table.TransformColumnTypes(_,{{"Атрибут", type text}}),{"Атрибут"}))

было записано "_"
Изменено: PooHkrd - 29.01.2018 18:32:25
Вот горшок пустой, он предмет простой...
 
PooHkrd, работает. Куда благодарность выслать. Но полного понимания у меня еще не возникло. Вы через графический интерфейс делали?
 
Я не за благодарность это делаю, а за интерес.
Все шаги кроме одного (см. предыдущий пост) делались кнопками. В 7-й шаг только внес модификацию. Изначально группировка делалась с настройками как на картинке. И еще, у моего решения есть одно слабое место: на 9 шаге при развертывании столбцов создается перечисление их по именам, значит если для одного мероприятия значений даты будет больше, то мой скрипт это дело упустит.
Это можно модифицировать, но точно не сегодня. Так что решение Андрея более универсальное.
Изменено: PooHkrd - 29.01.2018 18:41:08
Вот горшок пустой, он предмет простой...
 
PooHkrd, спасибо. За кого свечку ставить?  
Страницы: 1
Читают тему (гостей: 1)
Наверх