Power BI计算连续行预测值百分比差异 支持切片器动态更新
Power BI 动态计算预测差值解决方案
核心思路纠正
你之前采用静态计算列的方案无法满足Slicer筛选后动态更新的需求,所有指标均使用度量值实现即可,无需创建全局索引列。
步骤1:创建Forecast Type排序列(静态计算列,仅用于固定时间顺序)
因为需要按时间顺序对比前后两期预测,首先给Forecast Type定义固定排序,新建计算列:
Forecast Type Sort = SWITCH( 'Forecast Development'[Forecast Type], "June 00", 1, "July 01", 2 )
创建后进入「数据视图」,选中Forecast Type列,点击「按列排序」,选择刚创建的Forecast Type Sort列,保证矩阵中预测类型的展示顺序正确。
步骤2:创建3个动态度量值
基础聚合度量:总预测值
Total Forecast = SUM('Forecast Development'[Forecast])
欧元差额度量
Difference in EUR = VAR CurrentSort = SELECTEDVALUE('Forecast Development'[Forecast Type Sort]) VAR PreviousForecast = CALCULATE( [Total Forecast], ALLSELECTED('Forecast Development'[Forecast Type]), 'Forecast Development'[Forecast Type Sort] = CurrentSort - 1 ) RETURN IF(ISBLANK(PreviousForecast), BLANK(), [Total Forecast] - PreviousForecast)
百分比差异度量
Percentage Difference = VAR CurrentSort = SELECTEDVALUE('Forecast Development'[Forecast Type Sort]) VAR PreviousForecast = CALCULATE( [Total Forecast], ALLSELECTED('Forecast Development'[Forecast Type]), 'Forecast Development'[Forecast Type Sort] = CurrentSort - 1 ) RETURN IF( ISBLANK(PreviousForecast) || PreviousForecast = 0, BLANK(), DIVIDE([Difference in EUR], PreviousForecast) )
创建后将Percentage Difference度量的格式设置为「百分比」,保留0位小数即可。
步骤3:组件配置
- 矩阵「行」字段:添加
Forecast Type - 矩阵「值」字段:依次添加
Total Forecast、Difference in EUR、Percentage Difference - Slicer筛选器:直接添加
Group字段,选择不同分组时所有度量值会自动动态计算更新。
原有问题解答
- 百分比计算错误:之前使用计算列是基于原始行级数据计算,不是聚合后的结果,且静态计算列不响应筛选器变化,改用度量值后完全解决。
- 第一行返回空:度量值中已做判断,当不存在上一期预测值时直接返回
BLANK(),即你需要的null效果。 - 无需按Group重置索引:本方案仅基于
Forecast Type的固定排序计算,不受Group筛选影响,不需要额外创建分组索引。
内容的提问来源于stack exchange,提问作者jessirocha
相关产品推荐
相关产品推荐

