Страницы: 1
RSS
Power Query: Построчное разбивка данных
 
День добрый!
Подскажите, пожалуйста, как разбить данные по строчкам?
Что-то мышиным хардкором не получается.
В Файле указал как есть и как нужно.  
Изменено: Александр - 17.10.2018 13:55:37
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Доброе время суток
Цитата
Александр написал:
Что-то мышиным хардкором не получается.
Просто плохо его изучаете ;)
 
Андрей VG, О_о :) спасибо.
Правда, в примере, у меня указано 2 столбца, которые нужно равноправно разделить. В исходном файле их 8.
Учитывая Ваш пример. Можно каждый столбец по отдельности разделить, потом объединить все в один и удалить дубликаты.
Мб есть более изящный способ?  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Натыкал кнопочками
 
StepanWolkoff, как я и описал в #3
а как работает команда Table.Distinct? сравнивает строки в целом и удаляет дубликаты?  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Цитата
Александр написал:
2 столбца, которые нужно равноправно разделить.
Да, слона-то я и не приметил :(
Изменено: Андрей VG - 17.10.2018 14:25:27
 
Что-то Степан у меня с вами не бъёт. У меня 44 строки результата, у вас 57. Интересно, кто будет третейским судьёй и найдёт - кто ошибается?
 
Цитата
Андрей VG написал:
Интересно, кто будет третейским судьёй и найдёт - кто ошибается?
Степан ошибся :) достаточно посмотреть в моем примере на "как нужно"  и сравнить с результатом.

З.Ы. Изучаю метод Андрея, есть вопросы, но пока полностью не сформулировал их
Изменено: Александр - 17.10.2018 14:51:48
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Андрей VG, Сразу извиняюсь, за метод предоставлении информации (блокнот)
1. Как адаптировать Ваш метод в уже существующий запрос?
2. Первая строка - нужно включить только те столбцы в которых нужно провернуть это действие?
3. Конфликта между латиницей и кириллицей в одном коде не будет?  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Вот еще вариант, возможно он будет по-проще для понимания.
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Даты поступления", type text}, {"Номера заказов (Утв.)", Int64.Type}, {"Позиция", type text}, {"ЕИ", type text}, {"Кол-во в поcтуплении", type text}}),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Измененный тип", "List", each List.Zip({ Text.Split([Даты поступления], ";"), Text.Split([#"Кол-во в поcтуплении"], ";") }) ),
    #"Развернутый элемент List" = Table.ExpandListColumn(#"Добавлен пользовательский объект", "List"),
    #"Извлеченные значения" = Table.TransformColumns(#"Развернутый элемент List", {"List", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
    #"Разделить столбец по разделителю" = Table.SplitColumn(#"Извлеченные значения","List",Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv),{"List.1", "List.2"}),
    #"Измененный тип1" = Table.TransformColumnTypes(#"Разделить столбец по разделителю",{{"List.1", type date}, {"List.2", Int64.Type}}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Измененный тип1",{"Даты поступления", "Кол-во в поcтуплении"}),
    #"Переименованные столбцы" = Table.RenameColumns(#"Удаленные столбцы",{{"List.1", "Даты поступления"}, {"List.2", "Кол-во в поcтуплении"}})
in
    #"Переименованные столбцы"

ручками писалось только вот это
Код
List.Zip({ Text.Split([Даты поступления], ";"), Text.Split([#"Кол-во в поcтуплении"], ";") })

все остальное "кнопочный этот самый".
А Степан, слегка ошибся - нельзя по-очереди разворачивать списки в строки - они тогда бесконтрольно размножаются.  ;)  В принципе я сделал то же самое только через List.Zip двух столбцов.
Изменено: PooHkrd - 17.10.2018 16:41:33
Вот горшок пустой, он предмет простой...
 
Цитата
Александр написал:
2. Первая строка - нужно включить только те столбцы в которых нужно провернуть это действие?
Да правильно.
В ваш запрос нужно перенести
список используемых столбцов transformColumnNames
функцию трансформации toTable
в addColumn = Table.AddColumn(Source вместо Source указать имя определения вашей таблицы.
Цитата
Александр написал:
3. Конфликта между латиницей и кириллицей в одном коде не будет?  
Нет, не будет.
 
PooHkrd,Круто, разобрался!!))

Спасибо ВСЕМ большое!!!!!)))
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Цитата
Александр написал:
PooHkrd ,Круто, разобрался!!))
Алексей сделал ровно тоже, но при изменении структуры исходной таблицы потребуется больше телодвижений :)
 
Всем привет!
Теперь понабилось добавить в код преобразование значения (с null на, допустим, "-")
Т.к. в случае, если в 1 столбце данных больше чем во 2, то данные сбиваются (показал в примере)
Пытался добавить фун-ии ReplaceValue
На этапе
Цитата
PooHkrd написал:
List.Zip({ Text.Split([Даты поступления], ";"), Text.Split([#"Кол-во в поcтуплении"], ";") })
и строчкой ниже (когда строки раскрываешь)
Не чего не получается.
Помогите, пожалуйста :)
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Так у вас условие задачи изменилось. Дат в строке 2, а поступлений 4.
Ну, вот так можно:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Даты поступления", type text}, {"Номера заказов (Утв.)", Int64.Type}, {"Позиция", type text}, {"ЕИ", type text}, {"Кол-во в поcтуплении", type text}}),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Измененный тип", "List", each List.Zip({ Text.Split([Даты поступления], ";"), Text.Split([#"Кол-во в поcтуплении"], ";") }) ),
    #"Развернутый элемент List" = Table.ExpandListColumn(#"Добавлен пользовательский объект", "List"),
    #"Извлеченные значения" = Table.TransformColumns(#"Развернутый элемент List", {"List", each Text.Combine(List.Transform(_, each if _ = null then "" else Text.From(_)), ";"), type text}),
    #"Разделить столбец по разделителю" = Table.SplitColumn(#"Извлеченные значения","List",Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv),{"List.1", "List.2"}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Разделить столбец по разделителю",{"Даты поступления", "Кол-во в поcтуплении"}),
    #"Замененное значение" = Table.ReplaceValue(#"Удаленные столбцы","",null,Replacer.ReplaceValue,{"List.1", "List.2"}),
    #"Обрезанный текст" = Table.TransformColumns(#"Замененное значение",{{"List.1", Text.Trim, type text}, {"List.2", Text.Trim, type text}}),
    #"Переименованные столбцы" = Table.RenameColumns(#"Обрезанный текст",{{"List.1", "Даты поступления"}, {"List.2", "Кол-во в поcтуплении"}})
in
    #"Переименованные столбцы"
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Так у вас условие задачи изменилось
Так я про это и говорю
Спасибо большое!
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
Страницы: 1
Наверх