|
|||||||
Power Query. Формулы М. Множественная текстовая замена c List.Generate
Время создания: 07.10.2021 20:18
Текстовые метки: Power Query
Раздел: Разные закладки - MSO - Excel - Power Query
Запись: xintrea/mytetra_db_adgaver_new/master/base/1633627087tdt5s3smkb/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Описание В текстовой строке встречаются символы, слова и словосочетания, которые нужно заменить на другие, т. е. выполнить множественную замену подстроки. Например, «Общество с ограниченной ответственностью» нужно заменить на «ООО», «Акционерное общество» на «АО» и т. д.
Решение Для решения задачи предварительно нужно создать 2 вспомогательных таблицы. Первая таблица содержит перечень всех замен. Вторая таблица содержит перечень аббревиатур. Вторая таблица нужна, чтобы привести аббревиатуры к нормальному виду после первой обработки. После импорта источника и обеих вспомогательных таблиц нужно с помощью функции List.Generate создать цикл, который в каждом значении исходного столбца будет искать каждую подстроку для замены и выполнять замены, если она встретилась. Примененные функции Перечень всех примененных функций:
Код Код первой пользовательской функции преобразования: (col)=> let source = Text.Proper(List.Last(List.Generate(()=> [index=0, txt=Text.Lower(col)], each [index]<=List.Count(Замена_1[Найти]), each [index=[index]+1, txt=Text.Replace([txt], Замена_1[Найти]{[index]}, Замена_1[Заменить]{[index]})], each [txt]) )) in source Код второй пользовательской функции преобразования: (col)=> let source = List.Last(List.Generate(()=> [index=0, txt=col], each [index]<=List.Count(Замена_2[Найти]), each [index=[index]+1, txt=Text.Replace([txt], Замена_2[Найти]{[index]}, Замена_2[Заменить]{[index]})], each [txt]) ) in source Код запроса с решением: let source = Excel.CurrentWorkbook(){[Name="Гостиницы"]}[Content],
select_cols = Table.SelectColumns(source, {"Компания"}),
transform_col_1 = Table.TransformColumns(select_cols, {{"Компания", ф_Замена_1, type text}}),
transform_col_2 = Table.TransformColumns(transform_col_1, {{"Компания", ф_Замена_2, type text}})
in
transform_col_2 |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|