首页 文章

电源查询:将单元格中的表传递给自定义函数

提问于
浏览
1

我创造了这个 . 其目的是添加一个自定义列,其内容和名称基于它获取的参数 . 我把它保存为 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 ID和Cny分组”阶段的表格

Table

但是在“创建sb1列”阶段,我收到一个错误:“Expression.Error:有一个未知的标识符 . 你是否在[each]表达式之外使用[field]简写为_ [field]?”

我觉得接近尾声,我的错误是一些微小的细节 . 我在网上搜索了我的案例提示,但找不到任何答案 . 任何人都可以告诉我它的细节吗?

根据@ Olly的要求编辑:

第二个参数ExamplesTable,确实是一个带有列的表,我想要连接而没有任何重复:
input table

我的目的是 Build 一个这样的表,但是现在我使用了一系列非常重复的指令:
output table

1 回答

  • 0

    这是一个稍微简单的解决方案,它将您的“示例”列展开,重新命名它们,然后再次转向,在输出中组合不同的值:

    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"
    

相关问题