Power BI多列重复计算自动化实现方案咨询
Power BI多列批量自动化处理方案
1. 数据重塑(宽表转窄表)
在Power Query编辑器中操作:
- 选中Index列,确保只保留该列未被选中其他列
- 右键点击任意FIFO2系列列,选择「Unpivot Other Columns」
- 重命名生成的
Attribute列为「列名」,Value列为「原始值」,得到结构为:Index | 列名 | 原始值的窄表
2. 批量计算第一个需求:基准差值
在数据视图中,给重塑后的表添加计算列:
基准差值 = VAR 区间平均值 = CALCULATE( AVERAGE('重塑后表'[原始值]), FILTER('重塑后表', '重塑后表'[Index] >=15 && '重塑后表'[Index] <=20) ) RETURN 区间平均值 - '重塑后表'[原始值]
该计算列会自动对每个「列名」(原FIFO2列)计算对应行的差值,无需单独为每列创建度量值。
3. 批量计算第二个需求:最大值对应Index及后续10点平均值
3.1 获取每列最大值对应的Index
添加计算列:
最大值对应Index = VAR 列最大值 = CALCULATE( MAX('重塑后表'[原始值]), ALLEXCEPT('重塑后表', '重塑后表'[列名]) ) RETURN CALCULATE( MAX('重塑后表'[Index]), FILTER('重塑后表', '重塑后表'[原始值] = 列最大值 && '重塑后表'[列名] = EARLIER('重塑后表'[列名])) )
注:如果某列存在多个最大值行,这里取Index最大的那个;若需取最小Index,把MAX改为MIN即可
3.2 计算该Index起最后10个数据的平均值
添加度量值(用于可视化)或计算列:
最后10点平均值 = VAR 目标Index = MAX('重塑后表'[最大值对应Index]) VAR 筛选后行 = FILTER( '重塑后表', '重塑后表'[Index] >= 目标Index && '重塑后表'[列名] = MAX('重塑后表'[列名]) ) VAR 取最后10行 = TOPN(10, 筛选后行, '重塑后表'[Index], DESC) RETURN AVERAGE(取最后10行[原始值])
注:如果从目标Index开始的剩余数据不足10个,会自动取所有剩余数据的平均值
4. 转回宽表(可选)
若需要恢复原宽表格式,回到Power Query编辑器:
- 选中「列名」列,点击「转换」选项卡中的「Pivot Column」
- 在弹出窗口中,「值列」选择「基准差值」和「最后10点平均值」,「高级选项」选择「不要聚合」
- 最终会生成每个原FIFO2列对应的差值列和平均值列
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

