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

使用DAX在Power BI中计算月度按比例分摊值的技术问询

Power BI中DAX实现月度按比例分摊目标值计算

需求说明

现有两张数据表:

  • 日历表:包含日期、工作日天数列(记录每日的工作日标识或天数)
  • 目标值表:包含日期、目标数值列(记录每日目标值)

需按以下逻辑计算每日的月度分摊目标值:

(月度目标值总和 ÷ 月度总工作日) × 当月首日至当日的累计工作日天数

示例:4月总工作日21天,月度目标总和6212,截至当月第20个工作日时,分摊值为 (6212÷21)×20≈5916.19

DAX度量值实现

月度分摊目标值 = 
VAR 当前日期 = MAX('日历表'[日期])
VAR 当前月份区间 = 
    DATESBETWEEN(
        '日历表'[日期],
        DATE(YEAR(当前日期), MONTH(当前日期), 1),
        EOMONTH(当前日期, 0)
    )
VAR 月度目标总和 = CALCULATE(SUM('目标值表'[目标数值]), 当前月份区间)
VAR 月度总工作日 = CALCULATE(SUM('日历表'[工作日天数]), 当前月份区间)
VAR 累计工作日 = CALCULATE(SUM('日历表'[工作日天数]), '日历表'[日期] <= 当前日期)
RETURN
DIVIDE(月度目标总和, 月度总工作日) * 累计工作日

代码解释

  1. 当前日期:获取当前视觉上下文对应的日期,确保计算锚定到具体单日
  2. 当前月份区间:通过DATESBETWEEN生成当前日期所在月份的完整日期范围,简化当月数据筛选
  3. 月度目标总和:计算当月所有日期的目标值总和,利用当前月份区间限定筛选范围
  4. 月度总工作日:计算当月所有工作日天数的总和(若工作日天数是0/1标识,可替换为COUNTROWS(FILTER('日历表', '日历表'[工作日天数]=1)))
  5. 累计工作日:计算从当月首日到当前日期的工作日累计值
  6. 返回结果:用DIVIDE处理除法(自动处理除零错误),再乘以累计工作日得到最终分摊值

注意事项

  • 确保日历表与目标值表通过日期字段建立一对一或一对多关系
  • 若日历表的工作日天数是布尔型(如"是/否"),需调整计算逻辑为统计工作日的数量而非求和

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:27:20