如何在Power BI中计算表格内度量值的跨财年百分比差异
可以实现,不过需要先明确你需要的是静态计算列还是动态响应筛选的度量值,两种方案的适配场景和写法差异很大,优先推荐用度量值实现:
方案1:优先推荐:GP% 度量值(适配所有筛选上下文)
因为你原有Gross Euros本身就是度量值,直接基于它做时间智能计算即可,完全可以动态计算不同筛选条件下的财年同比差值:
GP % = VAR CurrentFY_Gross = [Gross Euros] -- 如果你的财年是自然年直接用SAMEPERIODLASTYEAR,非自然年调整偏移规则即可 VAR LastFY_Gross = CALCULATE([Gross Euros], SAMEPERIODLASTYEAR('日期表'[Date])) RETURN DIVIDE(CurrentFY_Gross - LastFY_Gross, LastFY_Gross, 0)
- 优势:可以响应报表所有切片器、行标签的筛选,放到按财年分组的矩阵里就能直接显示FY21对比FY20、FY22对比FY21的百分比差值,不需要修改模型结构
- 注意:使用前需要确保你的日期表已经标记为官方日期表,且和业务表的日期字段建立了活跃的一对多关系
方案2:业务表新增计算列(仅适合需要固定静态值的场景)
如果你确实需要在业务表中生成固定的GP%列(刷新后不会随筛选变化),可以用以下DAX,核心是要移除行上下文的限制,取对应财年的全量Gross Euros汇总值:
GP % (计算列) = VAR CurrentRow_FY = RELATED('日期表'[Fiscal Year]) VAR CurrentFY_TotalGross = CALCULATE([Gross Euros], ALL('业务表'), '日期表'[Fiscal Year] = CurrentRow_FY) VAR LastFY_TotalGross = CALCULATE([Gross Euros], ALL('业务表'), '日期表'[Fiscal Year] = CurrentRow_FY - 1) RETURN DIVIDE(CurrentFY_TotalGross - LastFY_TotalGross, LastFY_TotalGross, 0)
- 注意:该方案生成的列值在数据刷新时就固定,后续调整报表筛选不会改变数值,仅适合需要把财年差值固化到行级的特殊场景
内容的提问来源于stack exchange,提问作者Theo27
相关产品推荐
相关产品推荐

