Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
PQ: Подстановка значений с разными условиями
 
Всем привет!
Имеется уродливая выгрузка из Oracle
Хочу привести в более внятный список (в 3 параметра ввести). Накидал как умею :) (костылями)
Но с одним параметром не получается.
Выделил желтым в примере.
буду благодарен за помощь
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Александр, я так сделал
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Added Index" = Table.AddIndexColumn(Источник, "Индекс", 0, 1),
    #"Replaced Value" = Table.ReplaceValue(#"Added Index",";","",Replacer.ReplaceText,{"Столбец1"}),
    #"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","Акцептовать","",Replacer.ReplaceText,{"Столбец1"}),
    #"Trimmed Text" = Table.TransformColumns(#"Replaced Value1",{{"Столбец1", Text.Trim, type text}}),
    #"Added Conditional Column" = Table.AddColumn(#"Trimmed Text", "Bk", each if [Столбец1] = "" then "Акцп" else if Text.Contains([Столбец1], "Отклонение") then "Брак" else "В работе"),
    #"Merged Queries" = Table.NestedJoin(#"Added Index",{"Индекс"},#"Added Conditional Column",{"Индекс"},"Added Conditional Column",JoinKind.LeftOuter),
    #"Expanded {0}" = Table.ExpandTableColumn(#"Merged Queries", "Added Conditional Column", {"Bk"}, {"Bk"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded {0}",{"Индекс"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Столбец1", "Результат рез.вх.контроля"}})
in
    #"Renamed Columns"
 
artyrH, п**ц, блинок вчера переел :) спасибо за подсказку.  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Ещё вариант:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    func = Splitter.SplitTextByDelimiter("; "),
    final = Table.AddColumn(Source, "ВК", each if List.Contains(func([Столбец1]), "Отклонение") then "Брак" else
                                               if List.AllTrue(List.Transform(func([Столбец1]), each _ = "Акцептовать")) then "Акцп" else "В работе")
in
    final
 
Aleksei_Zhigulin,какой интересный способ объявить пользовательскую функцию, без "Let ... in"
так любую функцию можно в переменную закодировать? а как быть с параметрами функции где их указывать у переменой потом?
 
Blood81, let... in нужен когда требуется объявить более одной переменной, а в таком случае можно и так.
Как я понял, функцию Алексей закинул в переменную для того, чтобы следующий код был по-короче, и параметр (разделитель) сразу задал при объявлении переменной, т.к. при обоих вызовах этой функции он был нужен один и тот же. А так-то если разделитель надо использовать разный, то можно было бы и так написать:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    func = (delimiter as text) => Splitter.SplitTextByDelimiter(delimiter),
    final = Table.AddColumn(Source, "ВК", each if List.Contains(func("; ")([Столбец1]), "Отклонение") then "Брак" else if List.AllTrue(List.Transform(func("; ")([Столбец1]), each _ = "Акцептовать")) then "Акцп" else "В работе")
in
    final
Изменено: PooHkrd - 12 Апр 2019 11:17:20
Вот горшок пустой, он предмет простой...
 
всё так, добавить нечего  :)  
Страницы: 1
Читают тему (гостей: 1)
Наверх