You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在带年份筛选的Power BI矩阵中正确计算年同比差异

解决Power BI中支持年份筛选的年同比差异计算问题

原度量值的核心问题

  • 硬编码固定年份(2003、2002),无法根据用户的年份筛选动态计算任意连续两年的差异
  • ISFILTERED的逻辑不符合需求:筛选年份时仅返回当期销售额,而非同比差值
  • 未适配矩阵中的「类别」维度,无法按每个类别分别计算同比差异

修正后的DAX方案

方案1:基于数值年份直接计算(无需日期表)

先确保Sheet1[年份]是整数类型(若当前为文本,可通过Power Query转换为整数),然后使用以下度量值:

YoY差异 = 
VAR 当前销售额 = SUM(Sheet1[销售额])
VAR 去年销售额 = 
    CALCULATE(
        SUM(Sheet1[销售额]),
        FILTER(
            ALLSELECTED(Sheet1[年份]),
            Sheet1[年份] = MAX(Sheet1[年份]) - 1
        )
    )
RETURN
    IF(
        NOT ISBLANK(去年销售额),
        当前销售额 - 去年销售额,
        BLANK() // 无去年数据时返回空,比如2001年
    )

方案2:基于日期表的规范实现(推荐)

  1. 先创建日期表(自动覆盖数据中的日期范围):
日期表 = CALENDARAUTO()
  1. 在模型视图中,建立日期表[年份]与Sheet1[年份]的关联关系
  2. 编写度量值:
YoY差异 = 
VAR 当前销售额 = SUM(Sheet1[销售额])
VAR 去年销售额 = CALCULATE(SUM(Sheet1[销售额]), SAMEPERIODLASTYEAR('日期表'[日期]))
RETURN
    IF(NOT ISBLANK(去年销售额), 当前销售额 - 去年销售额, BLANK())

效果说明

  • 未筛选年份时:自动计算每个类别下最新年份与上一年的销售额差异
  • 筛选单个年份时:若该年份存在上一年数据,显示当期与上一年的差值;无对应数据则返回空值
  • 筛选连续两个年份时:自动计算这两个年份的销售额差值(需确保筛选的是连续两年)

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:13:28