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

Power BI两日期间分配额求和问题:DAX度量值失效求助

修复DAX度量值问题

问题分析

原度量值存在两个核心问题:

  • 语法错误:CALCULATE的第二个筛选条件括号位置错误,把<=DteTo写在了函数外部,导致实际是将求和结果与DteTo做比较,而非筛选日期范围。
  • 切片器冲突:两个切片器都使用主表的DTETm列时,会互相筛选主表数据,导致SELECTEDVALUE('Master'[DTETm])无法正确获取独立的起始日期值。

修正方案

1. 基于独立日期表的标准版本

建议创建两个独立的日期表(比如DateFrom和DateTo,仅包含日期时间列,不与主表建立关系)作为切片器数据源,修正后的代码:

_DurationAllot = 
VAR DteFrom = SELECTEDVALUE('DateFrom'[DTETm])
VAR DteTo = SELECTEDVALUE('DateTo'[DTETm])
VAR vResults = 
    CALCULATE(
        SUM(Master[Allotments]),
        Master[DTETm] >= DteFrom,
        Master[DTETm] <= DteTo
    )
RETURN vResults

2. 适配同列切片器的兼容版本

如果坚持使用主表DTETm列做两个切片器,可通过ALLSELECTED提取起止日期,避免筛选冲突:

_DurationAllot = 
VAR SelectedDates = ALLSELECTED(Master[DTETm])
VAR DteFrom = MINX(SelectedDates, Master[DTETm])
VAR DteTo = MAXX(SelectedDates, Master[DTETm])
VAR vResults = 
    CALCULATE(
        SUM(Master[Allotments]),
        ALL(Master[DTETm]), // 清除主表日期列的筛选锁定
        Master[DTETm] >= DteFrom,
        Master[DTETm] <= DteTo
    )
RETURN vResults

注:此方式需将切片器设置为多选,用户选择两个日期后,MIN和MAX会自动识别为起止范围。

消耗率计算扩展

若最终需计算消耗率(通常为Expense/Allotments),可在上述基础上扩展度量值:

_ConsumptionRate = 
VAR DteFrom = SELECTEDVALUE('DateFrom'[DTETm])
VAR DteTo = SELECTEDVALUE('DateTo'[DTETm])
VAR TotalAllot = 
    CALCULATE(
        SUM(Master[Allotments]),
        Master[DTETm] >= DteFrom,
        Master[DTETm] <= DteTo
    )
VAR TotalExpense = 
    CALCULATE(
        SUM(Master[Expense]),
        Master[DTETm] >= DteFrom,
        Master[DTETm] <= DteTo
    )
RETURN 
    IF(NOT ISBLANK(TotalAllot) && TotalAllot <> 0, TotalExpense / TotalAllot, BLANK())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:52:15