Страницы: 1
RSS
PQ массовая замена значений функцией List.Accumulate без создания дополнительного столбца
 
Всем доброго здравия.
Ребята, в этом видеоуроке, Николай Павлов показал, как делать массовую замену значений при помощи функции List.Accumulate.
В этом примере результат работы этой функции помещается в новый столбец.
Меня интересует возможность получения результата в исходном столбце.
Подозреваю, что List.Accumulate нужно вложить в Table.TransformColumns, но не пойму как это сделать...
Прошу знатоков подсказать как сформировать формулу и если возможно, то прошу учесть возможность обработки 2 и более столбцов?
 
Код
= Table.ReplaceValue(Источник,0,0,(a,b,c)
=>  List.Accumulate(Справочник,a,(state,current)
=>Text.Replace(state,current[Найти],current[Заменить])),{"Адрес", "Адрес2"})
 
Работает.
Спасибо!
 
del
Изменено: buchlotnik - 23.08.2021 15:27:08
Соблюдение правил форума не освобождает от модераторского произвола
 
Благодарю
работает

разница в скорости впечатляет конечно, но надо на работе потестить.
ибо хоть и давненько дело было, но было - PQ на рабочем компе (Excel2010) отказался с List.Zip работать... тогда пришлось отказаться от этой функции
после этого PQ обновлял, но List.Zip больше не эксплуатировал
в любом случае спасибо
Изменено: DNC - 12.01.2021 11:07:11
 
del
Изменено: buchlotnik - 23.08.2021 15:27:20
Соблюдение правил форума не освобождает от модераторского произвола
 
Михаил Л, можно попросить помощи в синтаксисе?
Из каталога обработать несколько файлов с заменой текста в столбцах по нескольким справочникам. Может можно оптимизировать чтоб не проходил все по 3 раза. Вариант объединения справочников не подходит :(

Отразил ожидаемый результат на листе со справочниками.
 
Цитата
Кирилл Толкачев написал:
можно оптимизировать чтоб не проходил все по 3 раза
Наверное можно. Как сделать - не знаю
Попробуйте спросить у танкистов)
 
Михаил Л, хорошо, а если последовательно 3 справочника - то я где-то сделал ошибку. Можете подсказать синтаксис?

Код
let
    Источник = Excel.Workbook(Параметр1, null, true),
    Данные_Table = Источник{[Item="Данные",Kind="Table"]}[Data],
    #"Измененный тип1" = Table.TransformColumnTypes(Данные_Table,{{"Дата", type date}, {"Адрес", type text}, {"Адрес2", type text}, {"Модель", Int64.Type}, {"Коплектация", Int64.Type}, {"ФИО", type text}}),
    #"Повышенные заголовки" = Table.PromoteHeaders(#"Измененный тип1", [PromoteAllScalars=true]),
    #"Замена адреса" = Table.TransformColumns(#"Измененный тип1", {{"Адрес", {"Адрес", each List.Accumulate(Справочник_А,[Адрес],(state,current)=>Text.Replace(state,current[Найти],current[Заменить]))}, type text}}),
    #"Замена модели" = Table.TransformColumns(#"Измененный тип1", {{"Модель", {"Модель", each List.Accumulate(Справочник_М,[Модель],(state,current)=>Text.Replace(state,current[Найти],current[Заменить]))}, type text}}),
    #"Замена комплекта" = Table.TransformColumns(#"Измененный тип1", {{"Комплект", {"Комплект", each List.Accumulate(Справочник_К,[Комплект],(state,current)=>Text.Replace(state,current[Найти],current[Заменить]))}, type text}})
in
    #"Замена комплекта"
Изменено: Кирилл Толкачев - 12.12.2022 20:33:19
Страницы: 1
Наверх