Страницы: 1
RSS
PQ вывести таблицу со строками-заголовками, Вывести таблицу с заголовками из первой не повторяющейся ячейки в Power Query
 
Здравствуйте.

Делаю сею операцию в ручную, но с каждым разом все больше чувствую что  Power Query может это делать за меня...нужно только уметь ему правильно преподнести  :)
Дано:
Таблица "Дано"
Задача:
Сформировать автоматически через PQ таблицу "Печать". При этом первая не повторяющаяся ячейка из столбца C разделяет таблицу заголовком
Заголовок состоит из 4х ячеек: B,C,D,G(585=(зол),925=(сер)) 8-0

Звучит очень непонятно...но в примере все становится ясно
Если не сложно, поделитесь знаниями))
 
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    Gr = Table.Group(Source, {"Поставщик", "№", "Приход"}, {{"Agg", each _, type table}}),
    Lt = Table.AddColumn(Gr, "Out", each {[Код = Text.From([Поставщик]) & " №" & Text.From([#"№"]) & " от " & Text.From(Date.From([Приход]))]} & Table.ToRecords([Agg])),
    Exp = Table.ExpandListColumn(Lt, "Out"),
    Ro = Table.SelectColumns(Exp,{"Out"}),
    Cols = {"Код", "OПоставщик", "№", "Приход", "Штрих-код", "Вид", "Проба", "Артикул", "Тип", "Размер", "Вес", "Покрытие", "Бренд", "Цена-закуп", "Цена", "Цена со СКИДКОЙ", "№Заказа"},
    Eo = Table.ExpandRecordColumn(Ro, "Out", Cols, Cols)
in
    Eo
P.S. Мелкомягкие испортили функцию Table.FromRecords по сравнению с описанием на сайте - теперь у нее два аргумента вместо трех и нельзя использовать MissingField.UseNull :-( Из-за этого код вырос в два раза, блин!!

А раньше можно было объединить списке в столбце Out и сделать операцию Table.FromRecords с опцией MissingField.UsNull - таблица готова.  
Изменено: Alexey_Spb - 31.01.2019 17:55:36
 
Работает! Теперь осталось разобраться и адаптировать)
Спасибо!
 
Цитата
Alexey_Spb написал:
Мелкомягкие испортили функцию Table.FromRecords
Уверены?
По ссылке 3 параметра и MissingField.UseNull на месте.
Откуда дровишки?
Вот горшок пустой, он предмет простой...
 
Доброе время суток.
Цитата
PooHkrd написал:
Откуда дровишки?
Если набрать в запросе Table.FromRecords, то будет такой отклик как на картинке.
Ещё вариант.
Изменено: Андрей VG - 31.01.2019 20:10:27
 
Цитата
PooHkrd написал:
Откуда дровишки?
Из ошибки pq - "вы передали в функцию три параметра, когда у ней максимум два" .  
 
Alexey_Spb, блин, забыл что мне Эксель переустановили, а обновы ещё не пришли. Проверил на обновленном, и правда :(
Вот горшок пустой, он предмет простой...
 
Код от Андрей VG более правильный и оптимальный, я в своем варианте рассчитывал операцию формирования полноценной записи для заголовков выполнить "нахаляву" за счет опции MissingField.UseNull, а когда увидел что ее не оказалось, не стал продолжать идею. Хотя более правильным являлось бы добитие записей с заголовками всеми колонками, что и сделано у Андрей VG:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    Gr = Table.Group(Source, {"Поставщик", "№", "Приход"}, {"temp", (sub) =>
    let
        first = sub{0},
        head = first[Поставщик] & " №" & Text.From(first[#"№"]) & " от " & Text.From(Date.From(first[Приход])) & " (" & Text.Upper(first[Покрытие]) & ")"
    in
        #table({"Код"}, {{head}}) & sub
    })[[temp]],
    Eo = Table.ExpandTableColumn(Gr, "temp", Table.ColumnNames(Source))
in
    Eo
Изменено: Alexey_Spb - 01.02.2019 09:51:53
Страницы: 1
Наверх