Страницы: 1
RSS
Создание иерархии из данных в строке PQ
 
Добрый день!
Из 1С выгружаю данные с иерархией в строке. Т.е. в первом столбце идет номенклатура, затем ее родитель, затем родитель родителя и т.д.
Уровней иерархии для каждой номенклатуры разное количество. Следовательно, первый уровень может быть и в 3-м столбце и в 5-м.
Необходимо, что бы после номенклатуры шел первый уровень, затем второй и т.д. Количество столбцов с иерархией должно остаться таким же.
Прошу помочь в решении данной задачи.
Изменено: Andrey_S - 28.05.2020 10:10:31
 
Добрый день
 
Student64, Спасибо!
 
Добрый день!
Как оказалось, вариант предложенный выше, на большом массиве данных отрабатывает долго. Скорее всего это связано с pivot  и unpivot в запросе.
Попробовал написать функцию, которая обрабатывает каждую строку. Функция рабочая, но требует что-бы уровни группировки были в конце таблицы. И как мне показалось, она очень громоздкая. Возможно, ее можно значительно упростить, но у меня пока не хватает опыта. Прошу помочь в данном вопросе.
Спасибо!
 
Доброе время суток.
Вариант.
Скрытый текст
Изменено: Андрей VG - 19.05.2021 16:01:12
 
Так лучше?
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Custom = Table.AddColumn(
        Source, 
        "Сбор", 
        each let l=List.Reverse(Record.ToList( Record.RemoveFields( _, {"Номенклатура","Количество"} ) ) ) 
             in Record.FromList( 
                 {[Номенклатура]} & List.RemoveNulls(l) & List.Select(l,each _ is null) & {[Количество]}, 
                 {"Номенклатура"} & List.Transform({1..List.Count(l)},Text.From) & {"Количество"} )),
    Сбор = Table.FromRecords(Custom[Сбор])
in
    Сбор
Изменено: PooHkrd - 19.05.2021 16:01:20
Вот горшок пустой, он предмет простой...
 
Спасибо всем!
Буду вникать и разбираться.
 
Andrey_S, возможно мой вариант будет чуть быстрее если переменную l обернуть в List.Buffer, но это не точно, не проверял.
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх