Страницы: 1
RSS
Обработка данных после импорта из XML с помощью Power Query
 
Подскажите как привести данные из первого листа к виду как на втором с  помощью Power Query.
 
И Вам здраствуйте!
можно попробовать вот так:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content],
    #"Удаленные столбцы" = Table.RemoveColumns(Источник,{"group_id", "oldprice"}),
    #"Заполнение вниз" = Table.FillDown(#"Удаленные столбцы",{"url4", "price", "currencyId", "categoryId", "picture", "vendor", "vendorCode", "model", "description", "sales_notes"}),
    #"Строки с примененным фильтром" = Table.SelectRows(#"Заполнение вниз", each ([param] <> null)),
    #"Сведенный столбец" = Table.Pivot(#"Строки с примененным фильтром", List.Distinct(#"Строки с примененным фильтром"[name5]), "name5", "param")
in
    #"Сведенный столбец"
 
Zigain, может покажете изначальную xml'ку и проще сразу из неё развернуть все в нужном виде? Зачем криво разворачивать, а потом приводить к нужному виду, если можно сразу правильно развернуть?
Вот горшок пустой, он предмет простой...
 
Спасибо за подсказки. Данные ко мне уже такие приходят.  
 
Andrey_S , спасибо за код. Все хорошо за исключением ссылок на картинки. В вашем метод остается только первая ссылка. А должно быть ссылка на картинку 1, 2, 3 и т.д. Ссылки я получаю таким методом
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content],
    #"Сгруппированные строки" = Table.Group(Источник, {"id3"}, {{"Данные", each _, type table}}),
    #"Добавлен picture" = Table.AddColumn(#"Сгруппированные строки", "picture", each Table.Transpose(Table.SelectRows(Table.SelectColumns([Данные],{"picture"}), each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null}))))),
    #"Добавлен пользовательский объект1" = Table.AddColumn(#"Добавлен picture", "Пользовательская", each Table.ColumnNames([picture])),
    Пользовательская1 = Table.SelectColumns(#"Добавлен пользовательский объект1",{"Пользовательская"}),
    #"Развернутый элемент Пользовательская" = List.Distinct(Table.ToList(Table.ExpandListColumn(Пользовательская1, "Пользовательская"))),
    Пользовательская2 = #"Добавлен picture",
    #"Развернутый элемент picture" = Table.ExpandTableColumn(Пользовательская2, "picture", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17", "Column18", "Column19", "Column20", "Column21", "Column22", "Column23", "Column24"}, {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17", "Column18", "Column19", "Column20", "Column21", "Column22", "Column23", "Column24"})
in
    #"Развернутый элемент picture"
Можно их как-нибудь связать. Извините я только учусь Power Query/
Изменено: vikttur - 26.06.2021 00:48:05
 
Попробуйте вот так:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content],
    #"Другие удаленные столбцы" = Table.SelectColumns(Источник,{"id3", "type", "available", "url4", "price", "currencyId", "categoryId", "picture", "vendor", "vendorCode", "model", "description", "sales_notes", "param", "name5"}),
    #"Сгруппированные строки" = Table.Group(#"Другие удаленные столбцы", {"id3"}, {{"Данные", each _, type table}}),
    #"Добавлен picture" = Table.AddColumn(#"Сгруппированные строки", "picture", each Table.Transpose(Table.SelectRows(Table.SelectColumns([Данные],{"picture"}), each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null}))))),
    colname = Table.ColumnNames(#"Добавлен picture"[picture]{0}),
    #"Развернутый элемент picture" = Table.ExpandTableColumn(#"Добавлен picture", "picture", colname),
    Пользовательская3 = Table.TransformColumns(#"Развернутый элемент picture", {{"Данные", each let
b = Table.FillDown(_,{"url4", "price", "currencyId", "categoryId", "picture", "vendor", "vendorCode", "model", "description", "sales_notes"}),
c = Table.SelectRows(b, each ([param] <> null)),
d = Table.Pivot(c, List.Distinct(c[name5]), "name5", "param")
in
 d
}}),
    #"Развернутый элемент Данные" = Table.ExpandTableColumn(Пользовательская3, "Данные", {"type", "available", "url4", "price", "currencyId", "categoryId", "picture", "vendor", "vendorCode", "model", "description", "sales_notes", "Тип Ружья", "Длина ружья без гарпуна", "Длина ружья с гурпуном в снаряженном состоянии", "Дальность поражения цели", "дистанция эффективной стрельбы", "материал изготовления спускового крючка", "матераил изготовления линесбрасывателя", "материал гарпуна", "диаметр гарпуна", "тип зацепа гарпуна", "под какую руку рукоятка", "материал рукоятки", "штатный линь", "наличие амортизатора", "наличие в комплекте дополнительных деталей"}, {"type", "available", "url4", "price", "currencyId", "categoryId", "picture", "vendor", "vendorCode", "model", "description", "sales_notes", "Тип Ружья", "Длина ружья без гарпуна", "Длина ружья с гурпуном в снаряженном состоянии", "Дальность поражения цели", "дистанция эффективной стрельбы", "материал изготовления спускового крючка", "матераил изготовления линесбрасывателя", "материал гарпуна", "диаметр гарпуна", "тип зацепа гарпуна", "под какую руку рукоятка", "материал рукоятки", "штатный линь", "наличие амортизатора", "наличие в комплекте дополнительных деталей"})
in
    #"Развернутый элемент Данные"
Страницы: 1
Наверх