powerbi - 如何在 PowerQuery 查询中正确使用 table.group 来动态汇总不同的行和列?
问题描述
我在 Excel 2016 中创建了一个表,在其中放置了各种列名称、我想总结的列、设置新列名称的名称等。基本上我想要成为一个参数表。
然后,我在 Power Query 编辑器中创建了一个函数,并将上述表中的值传递给该函数。起初它失败了,但我发现Power Query 列名作为参数,它向我展示了如何将列名之一传递给参数。
乍一看,分组功能似乎有效,我看到了我想要分组的月份,但该值汇总了每个月的整个表,而不是单独的。我首先在普通查询中编辑数据:
let
Source = #"Final Dataset",
#"Grouped Rows" = Table.Group(Source, {"DateValue"}, {{"xOccurrences", each List.Sum([xOccurrences]), type number}}),
#"Added Custom4" = Table.AddColumn(#"Grouped Rows", "Plant Region", each "Ttl Occ PR"),
#"Added Custom" = Table.AddColumn(#"Added Custom4", "SD Region", each null)
in
#"Added Custom"
查询结果(如预期):
然后我将其参数化:
(groupByColumn as text, aggregateColumnName, optional plantRegionValue as text, optional sdRegionValue as text) =>
let
Source = #"Final Dataset",
#"Grouped Rows" = Table.Group(Source, {groupByColumn}, {{aggregateColumnName , each List.Sum(Table.Column(Source, aggregateColumnName)), type number}}),
#"Added Custom4" = Table.AddColumn(#"Grouped Rows", "Plant Region", each plantRegionValue),
#"Added Custom" = Table.AddColumn(#"Added Custom4", "SD Region", each sdRegionValue)
in
#"Added Custom"
我用两个虚拟行对参数表执行了该函数。两个输入行每个乘以 12 个月的行变成了 24(原始数据集为 12 个月),如预期的那样,但总和值是数据集的总和(1528):
如您所见,Group 函数似乎忽略了我分配给 group 函数的第二个参数。我尝试了用各种连接替换 {groupByColumn},将 Table.Column 函数与要求和的列一样,并用原始列名 {"DateValue"} 静态替换它。列函数失败,而所有其他尝试都产生了相同的结果,每个月都与整个数据集的总和 1528 配对。
我认为它必须忽略第二个参数,所以我尝试将其留空:
#"Grouped Rows" = Table.Group(Source, {}
, {{aggregateColumnName , each List.Sum(Table.Column(Source, aggregateColumnName)), type number}}),
正如预期的那样,它产生了 2 行,值为 1528。所以它只是部分忽略了参数 2:
有谁知道如何将变量列传递给组函数以动态处理参数表?我正在寻求动态计算第一个表的结果。
解决方案
我不明白为什么你得到双倍的输出,但它没有像你期望的那样求和的原因是,当你写each List.Sum(Table.Column(Source, aggregateColumnName))
的时候,它没有考虑到本地上下文,而是对整个Source
表求和。
为了解决这个问题,让我们使用一个函数来代替每个,而不是像这样
(LocalContext) => List.Sum(Table.Column(LocalContext, aggregateColumnName))
整行将是:
#"Grouped Rows" =
Table.Group(
Source,
{groupByColumn},
{{
aggregateColumnName,
(LocalContext) => List.Sum(Table.Column(LocalContext, aggregateColumnName)),
type number
}}
)
阅读材料:
https://www.excelguru.ca/blog/2018/01/09/each-keyword-power-query/
推荐阅读
- javascript - 如何通过 Javascript 编辑这个特定类的 href?
- javascript - Konva 文本边界
- .net - 如何在 Windows / .NET 中找出默认的度量单位系统(英制或公制)?
- dask - 在 dask 分布式设置中,工作人员处于空闲状态
- ios - Xamarin 表单 - 无法使用 url https 连接到 SignalR(不适用于 iOS,但适用于 Android)
- mysql - MySql 查询以查找与特定用户关联的序列块的开始和结束(不寻找间隙)
- jquery - jQuery:按一定间隔按顺序单击列表项
- reactivesearch - 没有多重搜索的反应式搜索
- reactjs - 反应过滤列表
- javascript - AJAX - 使用相同功能的 500 内部服务器错误