PowerQuery函数改造报错:字段访问表达式误用参数名而非参数值
解决PowerQuery分组中动态列名的字段访问问题
你遇到的核心问题是:在Table.Group的each表达式里,[Col]会被PowerQuery直接解析为列名"Col",而非引用变量Col的值;如果直接用Table.Column(table, Col),会调用全局的原表table,返回所有行的对应列数据,而非当前分组的子表数据。
正确解决方案
在each上下文里,用_指代当前分组的子表,配合Table.Column(_, Col)就能获取分组内目标列的数据,修改后的代码如下:
let table = Table.FromRecords({ [CustomerID=1, OrderID="1"], [CustomerID=2, OrderID="2"], [CustomerID=1, OrderID="3"], [CustomerID=3, OrderID="4"] }), Col = "OrderID", Source = Table.Group( table, {"CustomerID"}, {{"Orders", each Text.Combine(Table.Column(_, Col), ",")}} ) in Source
原理说明
each表达式中的_代表当前分组生成的子表,而非全局的原表table,因此Table.Column(_, Col)只会提取当前分组内的目标列数据。- 原代码中的
[Col]属于PowerQuery的字段访问语法,仅当存在名为"Col"的列时才有效,无法识别变量Col的字符串值。
内容的提问来源于stack exchange,提问作者Daniel Ashby
相关产品推荐
相关产品推荐

