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

按跨天小时区间(前一日6点至当日6点)汇总数值的DAX需求

跨天小时区间的DAX数值汇总解决方案

原始数据

日期时间数值
2022-11-1715:21:001
2022-11-1722:19:002
2022-11-1800:44:002
2022-11-1804:27:003
2022-11-1813:21:002
2022-11-1823:55:001
2022-11-1909:01:004

需求与预期结果

需要按前一日6:00至当日6:00的跨天区间汇总数值,每个统计日期对应该区间的总和,预期结果如下:

日期(6-6)数值汇总
2022-11-178
2022-11-183
2022-11-194

现有实现(仅支持当日区间)

当前仅能实现当日内小时区间的求和,代码如下:

Usage = 
    CALCULATE(
        SUM(Table[Value]), 
        TIME(
            HOUR(Table[Hour]), 
            MINUTE(Table[Hour]), 
            SECOND(Table[Hour])
        ) >= TIMEVALUE("02:00:00"), 
        TIME(
            HOUR(Table[Hour]), 
            MINUTE(Table[Hour]), 
            SECOND(Table[Hour])
        ) <= TIMEVALUE("14:00:00")
    )

跨天区间的DAX解决方案

方法1:添加计算列标记归属日期

先给数据表新增一个计算列,明确每条记录对应的统计日期(即跨天区间所属的日期):

统计日期(6-6) = 
VAR CurrentTime = TIMEVALUE(Table[时间])
RETURN
    IF(
        CurrentTime >= TIMEVALUE("06:00:00"),
        Table[日期],
        Table[日期] - 1
    )

之后创建基础汇总度量值:

数值汇总 = SUM(Table[数值])

将「统计日期(6-6)」和「数值汇总」拖入可视化组件即可得到预期结果。

方法2:直接在度量值中实现(无需计算列)

如果不想新增计算列,可直接在度量值中通过筛选逻辑完成跨天汇总(建议搭配独立日期表使用,避免上下文过滤异常):

跨天数值汇总 = 
VAR TargetDate = MAX('日期表'[日期])
RETURN
CALCULATE(
    SUM(Table[数值]),
    -- 筛选规则:目标日期当天6点后的数据,加上目标日期次日6点前的数据
    (Table[日期] = TargetDate && TIMEVALUE(Table[时间]) >= TIMEVALUE("06:00:00"))
    ||
    (Table[日期] = TargetDate + 1 && TIMEVALUE(Table[时间]) < TIMEVALUE("06:00:00"))
)

验证说明

  • 统计日期2022-11-17:包含2022-11-17 6:00后的数据(1+2),加上2022-11-18 6:00前的数据(2+3),总和为8,符合预期。
  • 统计日期2022-11-18:包含2022-11-18 6:00后的数据(2+1),次日无符合条件的数据,总和为3,符合预期。
  • 统计日期2022-11-19:包含2022-11-19 6:00后的数据(4),次日无符合条件的数据,总和为4,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:35:36