首页 > 解决方案 > Power Query:将列名作为函数参数传递

问题描述

我正在努力将列名传递给电源查询函数 - 如果我在函数调用中将它们作为 [columnname] 传递,它会尝试在函数之外实现它们;如果我在函数本身中使用 [parameter] 传递,它会查找列“参数”而不是调用中传递的列名。

在其他地方,StackExchange 建议使用 Table.Column(table,columnname) 来解决这个问题,但我一口气得到了整个列,而不是能够比较列中的相应条目。

任何人都可以帮忙吗?这是代码

(table,Mt0,Mt1) => let 
    #"Add Yt.1" = Table.AddColumn(table, "placeholder", 
        each if Table.Column(table,Mt0) <= 0 or - Table.Column(table,Mt1) < Table.Column(table,Mt0)
            then Table.FromRecords({[Mt0 = Table.Column(table,Mt0), Mt1 = Table.Column(table,Mt1)]})
        else Table.FromRecords({[Mt0 = 0,Mt1 = Table.Column(table,Mt1) + Table.Column(table,Mt0)]}))/*,
    #"Expand Yt.1" = Table.ExpandTableColumn(Table.RemoveColumns(#"Add Yt.1",{"Mt0", "Mt1"}), "placeholder", {"Mt0","Mt1"})*/
in #"Add Yt.1"

这存储为 Query1,我正在使用 Query1(tablename,Y1M,Y2M) 调用

此版本生成错误:我们无法将运算符“<=”应用于类型列表和数字(因此,虽然它可能按预期引用列 Y1M,但它会将整个列(作为列表)与第一个不等式中的“0”进行比较,而不是一次一个条目。

帮助!!

标签: powerquery

解决方案


尝试使用Record.Field(_, Mt0)而不是Table.Column


推荐阅读