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

DAX计算指定日期区间累计总值求助:去年+1月至当前行日期

DAX实现指定日期区间总值计算的正确方案

需要计算proces表中,从当前行日期的去年加1个月到当前行日期之间的HOURS字段总和,对应Excel中SUM(C5:C16)的逻辑(C5为去年+1个月的销售额,C16为当前行日期的销售额)。


用户尝试的无效/错误公式

1. 未返回求和值的公式

var Rolling  = CALCULATE(sum('proces'[HOURS]),DATESINPERIOD('Date'[DateField],ENDOFMONTH('proces'[date_start]),-12,MONTH))

问题:DATESINPERIOD的周期方向与起始点逻辑不匹配「去年+1个月到当前日期」的需求区间。

2. 语法与逻辑无效的公式

SumX (
var prev=DATEADD(DATEADD('proces'[date_start]  ,-1,YEAR),+1,MONTH)
return 
Filter (  'proces', 
'proces'[date_end] <= Earlier ( 'proces'[date_end] ) &&
'proces'[date_start]>=prev,
'proces'[HOURS])

问题:SUMX语法结构错误,且EARLIER引用当前行上下文时逻辑混乱,未正确关联目标日期区间。

3. 无返回结果的公式

CALCULATE(
    SUMX('proces','proces'[HOURS]),
    DATESBETWEEN(
        'Date'[DateField],
        STARTOFMONTH(DATEADD(LASTDATE('Date'[DateField]),-1,MONTH)),
        ENDOFMONTH(DATEADD('Date'[DateField],-1,MONTH))
    )
)

问题:DATESBETWEEN定义的是上个月整月区间,完全不符合「去年+1个月到当前日期」的需求,且上下文引用逻辑错误。


正确DAX公式方案

方案1:使用日期表(推荐,符合DAX最佳实践)

假设存在规范的Date日期表,且proces表的date_start/date_end与Date[DateField]已建立关系:

累计小时数 = 
VAR CurrentDate = MAX('proces'[date_end]) -- 可根据实际需求替换为date_start
VAR StartDate = DATEADD(DATEADD(CurrentDate, -1, YEAR), 1, MONTH) -- 计算去年+1个月的日期
RETURN
CALCULATE(
    SUM('proces'[HOURS]),
    FILTER(
        ALL('Date'),
        'Date'[DateField] >= StartDate && 'Date'[DateField] <= CurrentDate
    )
)

逻辑说明:

  1. 定义CurrentDate获取当前行的目标日期(结束/开始日期)
  2. 通过DATEADD嵌套计算出「去年+1个月」的起始日期
  3. 用ALL('Date')清除上下文干扰,筛选出目标区间内的日期并求和

方案2:不使用日期表(直接基于proces表)

若无独立日期表,可直接在proces表上计算:

累计小时数 = 
VAR CurrentRowDate = MAX('proces'[date_end]) -- 替换为实际的当前行日期字段
VAR StartDate = DATEADD(DATEADD(CurrentRowDate, -1, YEAR), 1, MONTH)
RETURN
SUMX(
    FILTER(
        ALL('proces'),
        'proces'[date_end] >= StartDate && 'proces'[date_end] <= CurrentRowDate
    ),
    'proces'[HOURS]
)

逻辑说明:

  1. 用ALL('proces')获取全表数据,筛选出符合日期区间的记录
  2. 通过SUMX遍历筛选后的行,累加HOURS字段值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:00:54