Power Query(M)多变量Table.SelectRows问题:含区域的MOM聚合实现
修正Power Query中带区域维度的月度累计函数
你的错误出在Table.SelectRows的筛选条件写法上——不能拆分出两个独立的筛选逻辑,需要将同区域和时间不晚于当前行两个条件,用逻辑与运算符(&&)合并到同一个lambda筛选函数中。
正确的代码实现
Table.AddColumn(#"Added Custom2", "Property Region Cumulative Value", each List.Sum( Table.SelectRows( #"Added Custom2", (x) => x[Month Start] <= [Month Start] && x[Property Region] = [Property Region] )[Value]), type number)
这段代码会针对每一行,筛选出所有属于同一Property Region且Month Start小于等于当前行Month Start的记录,再对这些记录的Value字段求和,最终得到按区域维度分组的月度累计值。
性能优化建议(针对大数据量)
如果你的数据集行数较多,逐行全表筛选的性能会比较差。可以先按Property Region分组,再在每个分组内计算累计值,减少不必要的跨组筛选:
// 步骤1:按Property Region分组 #"Grouped Rows" = Table.Group(#"Added Custom2", {"Property Region"}, {{"GroupedData", each _, type table}}), // 步骤2:在每个分组内添加累计列 #"Added Cumulative" = Table.AddColumn(#"Grouped Rows", "With Cumulative", each Table.AddColumn([GroupedData], "Property Region Cumulative Value", (currentRow) => List.Sum(Table.SelectRows([GroupedData], (x) => x[Month Start] <= currentRow[Month Start])[Value]), type number)), // 步骤3:展开分组后的表格 #"Expanded With Cumulative" = Table.ExpandTableColumn(#"Added Cumulative", "With Cumulative", {"Month Start", "Value", "Property Region Cumulative Value"})
内容的提问来源于stack exchange,提问作者mresner
相关产品推荐
相关产品推荐

