Мощный запрос: передача таблицы в ячейке пользовательской функции - PullRequest
0 голосов
/ 09 декабря 2018

Я довольно плохо знаком с пользовательскими функциями в Power Query.Я создал это.Его цель - добавить пользовательский столбец, содержимое и имя которого основаны на параметрах, которые он получает.Я сохранил его как fnCompactedExamples :

let

    CompactedExamples = (BaseTable as table, ExamplesTable as table, ExampleNumber as text) =>

        let
            Source = BaseTable,
            #"Add example column" = Table.AddColumn( Source, "sb" & ExampleNumber, each Table.Column( ExamplesTable, Campaign & "_b" & ExampleNumber & "_example")),
            #"Extracted values" = Table.TransformColumns(#"Add example column", { "sb" & ExampleNumber, each Text.Combine(List.Distinct(List.Transform(_, Text.From)), "#(lf)"), type text} )
        in
            #"Extracted values"

in
     CompactedExamples

Эта функция вызывается в следующем запросе:

let
    Source = #"raw entities table",
    #"Group by cny ID and Cny" = Table.Group(Source, {"Company ID", "Company"}, {{"Data", each _, type table}}),
    #"create sb1 column" = fnCompactedExamples(#"Group by cny ID and Cny", [Data], "1")
in
    #"create sb1 column"

Вот как выглядит таблица наЭтап «Группировка по идентификатору cny и Cny»

Table

Но на этапе «создание столбца sb1» я получаю сообщение об ошибке: «Expression.Error: существует неизвестный идентификатор.Вы использовали сокращение [field] для _ [field] вне выражения 'each'? "

Я чувствую близость к концу, и моя ошибка - какая-то крошечная деталь.Я искал в Интернете подсказки по своему делу, но не смог их найти.Кто-нибудь может сказать мне, что это за деталь?

Правка по запросу @ Олли:

Второй аргумент examplesTable - это действительно таблица, содержащая столбцы, которые я хочу проследить.объединять без дубликатов: input table

Моя цель - создать такую ​​таблицу, но сейчас я использую очень повторяющуюся серию инструкций: output table

1 Ответ

0 голосов
/ 11 декабря 2018

Вот немного более простое решение, которое разворачивает столбцы вашего «примера», переименовывает их соответствующим образом, затем снова поворачивает, объединяя различные значения в выводе:

let
    Source = Table1,
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Company ID", "Company"}, "Attribute", "Value"),
    #"Renamed Attributes" = Table.TransformColumns(#"Unpivoted Other Columns", {{"Attribute", each "s" & Text.BetweenDelimiters(_, "_", "_"), type text}}),
    #"Pivoted Column" = Table.Pivot(#"Renamed Attributes", List.Distinct(#"Renamed Attributes"[Attribute]), "Attribute", "Value", each Text.Combine(List.Distinct(_),", "))
in
    #"Pivoted Column"

Затем вы можете настроить это дляНапример, это удаляет пустые значения, сортирует каждый список и разделяет значения с помощью перевода строки:

let
    Source = Table1,
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Company ID", "Company"}, "Attribute", "Value"),
    #"Removed Empty Values" = Table.SelectRows(#"Unpivoted Other Columns", each [Value] <> null and [Value] <> ""),
    #"Renamed Attributes" = Table.TransformColumns(#"Removed Empty Values", {{"Attribute", each "s" & Text.BetweenDelimiters(_, "_", "_"), type text}}),
    #"Sorted Attributes" = Table.Sort(#"Renamed Attributes",{{"Attribute", Order.Ascending}}),
    #"Pivoted Column" = Table.Pivot(#"Sorted Attributes", List.Distinct(#"Sorted Attributes"[Attribute]), "Attribute", "Value", each Text.Combine(List.Sort(List.Distinct(_)),"#(lf)"))
in
    #"Pivoted Column"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...