Power BI如何计算矩阵中各部门相邻财年总额的百分比变化
Power BI 矩阵动态计算最近两财年百分比差值实现方案
前置准备
- 搭建独立的财年维度表,至少包含两个字段:
财年名称(值为FY2021、FY2022这类文本)、财年序号(数值型,按财年先后顺序填2021、2022这类数字),将维度表和业务事实表建立一对多的单方向关系,同时把财年名称的排序依据设置为财年序号,避免文本排序导致财年先后顺序错乱。 - 提前编写基础总额度量值,也就是当前矩阵中用来展示各财年汇总数据的计算逻辑,示例代码:
财年总额 = SUM('业务事实表'[金额字段])
当前矩阵展示效果:
核心度量值编写
1. 最近两财年百分比差值度量值
该度量值会自动识别当前筛选上下文里的最新财年,和紧邻的上一财年做对比计算,后续新增财年时不需要手动修改代码:
最近两财年差值% = VAR _latestFY = MAX('财年维度表'[财年序号]) VAR _prevFY = _latestFY - 1 VAR _latestValue = CALCULATE([财年总额], '财年维度表'[财年序号] = _latestFY) VAR _prevValue = CALCULATE([财年总额], '财年维度表'[财年序号] = _prevFY) RETURN // 上一年无数据时返回空值,避免报错 IF( NOT ISBLANK(_prevValue) && NOT ISBLANK(_latestValue), DIVIDE(_latestValue - _prevValue, _prevValue), BLANK() )
度量值编写完成后,在度量值工具 tab 里把格式设置为百分比,按需调整保留的小数位数即可。
2. 自动展示最近2个财年的筛选度量值
不需要每次新增财年手动调整矩阵列筛选,把这个度量值添加到矩阵的视觉级筛选器,设置筛选值为1,矩阵就会自动只保留最新两个财年的列:
仅展示最近2财年 = VAR _globalMaxFY = CALCULATE(MAX('财年维度表'[财年序号]), ALL('财年维度表')) RETURN IF(MAX('财年维度表'[财年序号]) >= _globalMaxFY - 1, 1, 0)
配置步骤
- 把
部门字段拖到矩阵行区域,财年名称拖到矩阵列区域 - 先把
财年总额度量值拖到值区域,确认各部门各财年的汇总数据展示正常 - 再把
最近两财年差值%拖到值区域,度量值会自动按行计算每个部门最新两个财年的百分比差值 - 把
仅展示最近2财年拖到矩阵的视觉级筛选器,设置筛选条件为「等于 1」,点击应用筛选即可
注意事项
- 不要直接用事实表里存储的财年字段做维度,必须用独立的财年维度表,避免筛选上下文混乱导致计算结果错误
- 如果你的财年不是自然年,比如FY2022对应2021年7月到2022年6月,只需要保证
财年序号按财年实际先后顺序设置数值即可,上述度量值逻辑不需要调整
内容的提问来源于stack exchange,提问作者JohnD
相关产品推荐
相关产品推荐

