Страницы: 1
RSS
Сведённый столбец в PQ не группирует строки
 
Всем привет!
Имею таблицу, через PQ добавил новый столбец который считает данные только за текущий месяц, но ни как не могу его вернуть в исходную форму.
 
Пользуйтесь:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица5"]}[Content],
    #"Другие столбцы с отмененным свертыванием" = Table.UnpivotOtherColumns(Источник, {"имя"}, "Дата", "Значение"),
    #"Измененный тип" = Table.TransformColumnTypes(#"Другие столбцы с отмененным свертыванием",{{"Дата", type date}}),
    #"Строки с примененным фильтром" = Table.SelectRows(#"Измененный тип", each Date.IsInCurrentMonth([Дата])),
    #"Сгруппированные строки" = Table.Group(#"Строки с примененным фильтром", {"имя"}, {{"За текущий месяц", each List.Sum([Значение]), type number}}),
    #"Объединенные запросы" = Table.NestedJoin(Источник,{"имя"},#"Сгруппированные строки",{"имя"},"Сгруппированные строки",JoinKind.LeftOuter),
    #"Развернутый элемент Сгруппированные строки" = Table.ExpandTableColumn(#"Объединенные запросы", "Сгруппированные строки", {"За текущий месяц"}, {"За текущий месяц"})
in
    #"Развернутый элемент Сгруппированные строки

Почти весь код сделан кнопками, за исключением строки 7
Изначально она выглядела так:
Код
=Table.NestedJoin(#"Сгруппированные строки",{"имя"},#"Сгруппированные строки",{"имя"},"Сгруппированные строки",JoinKind.LeftOuter),

Это я соединил таблицу саму с собой, по умолчанию она соединяет последний шаг с ним же. Вот там ручками указываете имя шага, к которому нужно приделать столбец, и вуаля.
Изменено: PooHkrd - 22.02.2019 12:19:54
Вот горшок пустой, он предмет простой...
 
PooHkrd,
спасибо, вроде всё понятно, но вот с последним шагом надо разобраться
 
PooHkrd,
можете немного пояснить, как я понимаю
пропустим начало...

1. шаг "сгруппированные строки"
Код
= Table.Group(#"Строки с примененным фильтром", {"имя"}, {{"За текущий месяц", each List.Sum([Значение]), type number}}) 
2. шаг "объединённые запросы"
Код
= Table.NestedJoin(#"Сгруппированные строки",{"имя", "За текущий месяц"},#"Сгруппированные строки",{"имя", "За текущий месяц"},"NewColumn")

тут я соединяю одну и ту же таблицу

3. шаг, ручками меняю таблицу на источник, но вот тут я не много не понял, по идее я должен взамен вот этого (части кода)

Код
#"Сгруппированные строки",{"имя", "За текущий месяц"}

поставить вот это, но не получается), а с вашим кодом получается

Код
#"Источник",{"имя","дата1","дата2","дата3","дата4"}

4. шаг развернуть таблицу

Код
= Table.ExpandTableColumn(#"Объединенные запросы", "Сгруппированные строки", {"За текущий месяц"}, {"Сгруппированные строки.За текущий месяц"})
Изменено: adamm - 22.02.2019 13:49:32
 
PooHkrd,
при объединении таблиц в вашем коде присуисвует запись
Код
"Сгруппированные строки",JoinKind.LeftOuter
а у меня нет, честно сказать я не совсем ещё разобрался в синтаксисе данных функций
 
Не так.
У вас есть Таблица1 с исходными данными и Таблица2 с результатом, который нужно подтянуть к таблице 1. Общим столбцом для связки у вас является столбец "имя" в обеих таблицах. Если бы вы делали это дело в Экселе то это выглядело бы так
Код
=ВПР( Таблица1[имя]; Таблица2; 2; 0 )

Когда тоже самое вам нужно сделать в PQ, то жмете кнопку слияние, после чего в диалоговом окне для обеих таблиц указываете связующий столбец "имя" (в вашем примере зачем-то указаны 2 столбца). больше ничего не трогаем и выбираем ОК, редактор генерит формулу
Код
= Table.NestedJoin( 
    Таблица1,                     // имя таблицы куда подставляем значения
    {"имя"},                        // перечисление ключевых столбцов в первой таблице
    Таблица2,                     // имя таблицы откуда подставляем значения
    {"имя"},                        // перечисление ключевых столбцов в первой таблице
    "ИмяНовогоСтолбца",     // имя столбца, в котором создадутся таблицы, столбцы из которых можно будет развернуть
    JoinKind.LeftOuter          // метод объединения таблиц, конкретно этот максимально близко схож с действием функции ВПР
)
Вот горшок пустой, он предмет простой...
 
Теперь понятно, спасибо!

PooHkrd, ещё один вопрос, в вашем коде есть такой параметр
Код
JoinKind.LeftOuter
как понимаю это дополнительный необязательный параметр, более информации не нашёл, можете уточнить, что он делает, хотя у меня всё работает и без него
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица5"]}[Content],
    #"Другие столбцы с отмененным свертыванием" = Table.UnpivotOtherColumns(Источник, {"имя"}, "Дата", "Значение"),
    #"Измененный тип" = Table.TransformColumnTypes(#"Другие столбцы с отмененным свертыванием",{{"Дата", type date}}),
    #"Строки с примененным фильтром" = Table.SelectRows(#"Измененный тип", each Date.IsInCurrentMonth([Дата])),
    #"Сгруппированные строки" = Table.Group(#"Строки с примененным фильтром", {"имя"}, {{"За текущий месяц", each List.Sum([Значение]), type number}}),
    #"Объединенные запросы" = Table.NestedJoin(#"Источник",{"имя"},#"Сгруппированные строки",{"имя"},"NewColumn"),
    #"Развернутый элемент NewColumn" = Table.ExpandTableColumn(#"Объединенные запросы", "NewColumn", {"За текущий месяц"}, {"NewColumn.За текущий месяц"})
in
    #"Развернутый элемент NewColumn"
 
adamm, при объединении по умолчанию тип соединения JoinKind.LeftOuter. от выбранного типа будет меняться соединение. попробуйте поменять на другие
 
artyrH,
У меня нет списка с выбором "тип соединения", я выбираю мышкой, а в вашем примере как я понял можно выбирать из списка, суть я уловил, спасибо!
Изменено: adamm - 23.02.2019 06:30:28
 
это из за того что меняли данные в расширенном редакторе. попробуйте на другом примере.
 
Ок, спс!
Страницы: 1
Наверх