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

PowerBI DAX问题:Matrix可视化中无法显示Opening类别目标值

问题排查与解决方案

原公式核心问题

  1. 无效筛选逻辑:你的Sales表所有行的PeriodID均为2,但原公式里FILTER(Sales, Sales[PeriodID] = 1)强制筛选PeriodID=1的行,结果必然为空,导致Opening列无数据。
  2. 日期逻辑错误:SELECTEDVALUE(Sales[Date])-1是对单日期做减1操作,和你需要的「按年份匹配2021/2022年数据」的需求完全不符。
  3. 关联筛选冲突:Period维度表与Sales表通过PeriodID关联后,当选择Period维度的PeriodID=1时,默认会过滤掉Sales表所有数据(因为Sales只有PeriodID=2),原公式的REMOVEFILTERS没有针对性解决这个关联冲突。

修正后的DAX度量值

根据你的需求(Opening列显示2021年PeriodID=2数据,Closing列显示2022年PeriodID=2数据),提供两种实现方式:

方式1:硬编码年份(适用于Period年份固定的场景)

Sales_Total = 
VAR Current_Period = SELECTEDVALUE(Period[PeriodID])
VAR Target_Year = 
    SWITCH(
        Current_Period,
        1, 2021,  // Opening对应2021年
        2, 2022   // Closing对应2022年
    )
RETURN
CALCULATE(
    SUM(Sales[Value]),
    Sales[PeriodID] = 2,  // 固定取Sales表中PeriodID=2的数据
    YEAR(Sales[Date]) = Target_Year,
    REMOVEFILTERS(Period)  // 清除Period维度的默认关联筛选,确保能正确取数
)

方式2:基于Period表年份字段(更灵活,适用于Period表有Year列的场景)

假设Period表包含PeriodID和Year字段(如PeriodID=1对应Year=2021,PeriodID=2对应Year=2022):

Sales_Total = 
VAR Current_Period = SELECTEDVALUE(Period[PeriodID])
VAR Target_Year = 
    CALCULATE(
        MAX(Period[Year]),
        Period[PeriodID] = IF(Current_Period=1,1,2)
    )
RETURN
CALCULATE(
    SUM(Sales[Value]),
    Sales[PeriodID] = 2,
    YEAR(Sales[Date]) = Target_Year,
    REMOVEFILTERS(Period)
)

关键逻辑说明

  • REMOVEFILTERS(Period):打破Period维度与Sales表的关联筛选,避免选择PeriodID=1时直接过滤掉Sales表所有数据。
  • 明确指定Sales[PeriodID] = 2:因为你的Sales表只有该PeriodID的数据,确保取数范围正确。
  • 按年份匹配:通过YEAR(Sales[Date])关联目标年份,实现Opening/Closing列的跨年份取数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:55:26