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

Power BI用DAX度量值计算切片器选中日期区间的销售计划

DAX区间销售计划度量值修正方案

原代码错误点

  • 拼写错误:结果计算部分的ALCULATE拼写错误,正确为CALCULATE
  • 上下文处理错误:LASTDATE('calendar'[Date])会受当前可视化的筛选上下文影响,不等于切片器选中的最大日期,会导致日期区间判断错误
  • 逻辑冗余:不需要用SUMX遍历日期维度计算,日均计划是固定值,直接乘以选中区间天数即可
  • 跨月兼容问题:原代码仅支持选中日期在同一个月的场景,跨月场景下计算逻辑不符合需求

修正后的DAX代码

VAR minselectdate = CALCULATE(MIN('calendar'[Date]), ALLSELECTED('calendar'))
VAR maxselectdate = CALCULATE(MAX('calendar'[Date]), ALLSELECTED('calendar'))
// 生成选中区间内所有涉及的月份列表
VAR involved_months = SUMMARIZE(
    FILTER(ALL('calendar'), 'calendar'[Date] >= minselectdate && 'calendar'[Date] <= maxselectdate),
    "month_end_date", EOMONTH('calendar'[Date], 0), // 用月末日期作为月份分组依据,无需提前建年月列
    "month_firstday", EOMONTH('calendar'[Date], -1) + 1,
    "month_lastday", EOMONTH('calendar'[Date], 0),
    "selected_days_in_month", 
        COUNTROWS(
            FILTER(
                'calendar',
                'calendar'[Date] >= MAX('calendar'[Date], minselectdate)
                && 'calendar'[Date] <= MIN(EOMONTH('calendar'[Date], 0), maxselectdate)
            )
        )
)
// 按月份单独计算该月选中天数对应的计划额,再加总
VAR Result = SUMX(
    involved_months,
    VAR month_total_plan = CALCULATE(
        SUM('Все_отчет1_Квоты'[Квота месяц]),
        DATESBETWEEN('calendar'[Date], [month_firstday], [month_lastday]),
        ALLSELECTED('calendar')
    )
    VAR month_total_days = DATEDIFF([month_firstday], [month_lastday], DAY) + 1
    VAR daily_plan = DIVIDE(month_total_plan, month_total_days, 0)
    RETURN
    daily_plan * [selected_days_in_month]
)
RETURN
Result

逻辑说明

  1. 首先取切片器选中的最小、最大日期,确定计算范围
  2. 提取选中区间内涉及的所有月份,分别统计每个月在选中区间内的天数
  3. 按月份读取对应月度总计划,计算单月日均计划
  4. 单月日均计划乘以该月被选中的天数,所有月份结果加总得到最终区间计划额
  5. 同时兼容单月、跨月的选中场景,完全符合示例计算规则:选中2021/1/1-2021/1/7时,计算结果为310/31*7=70美元

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:27:01