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

Power BI中汇总虚拟表计算每日客户目标总和的问题

问题根源

你的TargetTotal度量值仅在有审计变更的日期返回数值,核心原因是**VALUES(Calendar[Date])受外部筛选上下文限制**:当在可视化或报表中使用该度量值时,外部上下文会自动筛选出存在目标变更记录的日期,导致虚拟表TargetTable只包含这些日期,而非日历表的全部日期。而计算表是脱离外部筛选上下文执行的,所以能获取所有日历日期,结果符合预期。

解决方案

将虚拟表中获取日期的逻辑从VALUES(Calendar[Date])改为ALL(Calendar[Date])(或ALLSELECTED(Calendar[Date]),若需保留用户手动筛选的日期范围),确保虚拟表覆盖所有需要的日期。同时可以简化度量值逻辑:

TargetTotal = 
VAR TargetTable = 
    ADDCOLUMNS(
        CROSSJOIN(
            ALL(Calendar[Date]), -- 改用ALL获取全部日历日期,不受外部筛选影响
            VALUES('Target Changes'[CustomerID]) -- 保留当前上下文的客户筛选
        ), 
        "Target", [RunningTarget]
    )
RETURN 
    SUMX(
        GROUPBY(
            TargetTable,
            [Date],
            "SummedTarget", SUMX(CURRENTGROUP(), [Target])
        ), 
        [SummedTarget]
    )

更简洁的版本,无需额外GROUPBY:

TargetTotal = 
SUMX(
    CROSSJOIN(
        ALL(Calendar[Date]),
        VALUES('Target Changes'[CustomerID])
    ),
    [RunningTarget]
)
补充说明
  • 若需支持用户手动筛选日期范围(而非强制全部日历日期),将ALL(Calendar[Date])替换为ALLSELECTED(Calendar[Date])即可,这样虚拟表仅包含用户筛选后的日期,但仍会覆盖该范围内的所有日期,无论是否有变更记录。
  • 确认你的RunningTarget度量值在单个客户的非变更日期能正确返回最后一次的目标值(从描述看已满足),否则需检查LASTNONBLANK逻辑是否正确处理无变更日期的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:15:00