Power Query中CountIf等效实现:按账户统计各形态的模型数量
在Power Query中实现类似CountIf的行内统计
方案一:自定义列逐行计算(适合小数据集)
- 进入Power Query编辑器,选中目标数据表,点击「添加列」→「自定义列」。
- 在公式编辑框中输入以下代码(注意将
Source替换为你的实际表名,账户和形态替换为对应列名):
Table.RowCount(Table.SelectRows(Source, (r) => r[账户] = [账户] and r[形态] = [形态]))
- 代码说明:
Table.SelectRows:从原始表中筛选出与当前行账户一致且形态一致的所有行Table.RowCount:统计筛选结果的行数,即当前账户下对应形态的模型数量
方案二:分组统计后合并(适合大数据集,性能更优)
如果数据量较大,逐行筛选会影响运行效率,建议先分组统计再合并回原表:
- 在Power Query编辑器中,点击「转换」→「分组依据」。
- 分组设置:
- 分组依据:同时选择
账户和形态两列 - 新列名:输入
数量 - 操作:选择「行数」
- 分组依据:同时选择
- 点击确定后,得到分组统计结果,再将原表与分组表通过
账户和形态列进行左连接,展开数量列即可。
对应的M语言代码示例:
let Source = 你的数据源表, // 按账户和形态分组统计数量 GroupedData = Table.Group(Source, {"账户", "形态"}, {{"数量", Table.RowCount, Int64.Type}}), // 将原表与分组表关联 MergedTables = Table.NestedJoin(Source, {"账户", "形态"}, GroupedData, {"账户", "形态"}, "GroupedData", JoinKind.LeftOuter), // 展开数量列 ExpandedCount = Table.ExpandTableColumn(MergedTables, "GroupedData", {"数量"}, {"数量"}) in ExpandedCount
内容的提问来源于stack exchange,提问作者user20064261
相关产品推荐
相关产品推荐

