Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
power query создание нескольких строк из одной, Парсинг текстового поля.,
 
Доброго дня.
Подскажите как в PQ реализовать создание дополнительных строк к существующим в источнике? А точнее создание нескольких строк на основе данных из одной.

Суть такая, в исходной таблице одно из полей текстовое, поле заполняется руками, по этому не имеет жесткой структуры и длины, но имеет ключевые признаки по которым можно настроить парсинг. Формат данных примерно такой :
(        XXX*YYYY какиелибобуквы         XXX*YYYYY        какиелибобуквы какиелибобуквы             XXX*YYYYY        какиелибобуквы      какиелибобуквы      ) где ключевыми данными являются XXX = целое , YYYY = буквенный код разделенные между собой символом звездочка (*)

1.  требуется разобрать это текстовое поле на отдельные два поля:
YYYY    XXX
YYYYY  XXX
YYYY    XXX
......

2.  для каждой строки исходных данных создать соответствующее количество строк с существующими полями из источника + новыми полями из пункта 1
 
Изменено: Vladundel - 11 Сен 2019 12:01:16
 
Ну, можно так:
Код
let
    Source = Table.FromColumns({{"XXX*YYYY какиелибобуквы         XXX*YYYYY        какиелибобуквы какиелибобуквы             XXX*YYYYY        какиелибобуквы      какиелибобуквы"}}),
    AddedCustom = Table.AddColumn(Source, "Разбор", each List.Select( Text.Split( [Column1], " "), each Text.Contains(_, "*") ) ),
    Expanded = Table.ExpandListColumn(AddedCustom, "Разбор"),
    SplitColumnByDelimiter = Table.SplitColumn(Expanded, "Разбор", Splitter.SplitTextByDelimiter("*", QuoteStyle.Csv), {"Разбор.1", "Разбор.2"})
in
    SplitColumnByDelimiter
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Ну, можно так:
Браво, очень лаконично. Спасибо!
Выяснился один момент, после * все таки встречаются пробелы в разном количестве, все данные не просматривал но возможно и перед * тоже бывают, как так же изящно их удалить перед парсингом?  
 
Vladundel, тут изящность ни к чему, сначала избавляемся от двойных пробелов, потом можно сделать заменой " *" на "*", и "* " на "*", и потом применить мой код.
Изменено: PooHkrd - 11 Сен 2019 13:15:21
Вот горшок пустой, он предмет простой...
 
Да, именно через шаг замены перед Вашим кодом я и пошел, спасибо!

Зы в процессе изучения Вашего кода и функции Split выяснил что оказывается и мышкой можно накликать такой же результат, встроенная функция "Разделить столбец" оказывается может делить не только на столбцы но и на строки :)
Изменено: Vladundel - 11 Сен 2019 13:31:25
Страницы: 1
Читают тему (гостей: 1)
Наверх