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

Power BI DAX问题:如何仅对唯一日期计算Table2DurationHours行总和

修正DAX公式解决多行求和异常问题

当前DAX公式对FactTable中Table2DurationHours列的所有行求和,导致单个日期(如2022年6月5日)的小时数异常偏大——同一日期存在多行数据时,公式会累加所有行的数值,但实际应仅计算每行对应日期的单值。

当前使用的DAX公式

Week 1

Week1Duration = VAR SelectedWeekStart = SELECTEDVALUE('01_Date'[Start of Week]) VAR Week1StartDate = CALCULATE(MIN('01_Date'[CalendarDate]), '01_Date'[Start of Week] = SelectedWeekStart) VAR Week1EndDate = Week1StartDate + 6 RETURN CALCULATE( SUM(FactTable[Table2DurationHours]), 'FactTable'[Date] >= Week1StartDate && 'FactTable'[Date] <= Week1EndDate )

Week 2

Week2Duration = CALCULATE(SUM('FactTable'[Table2DurationHours]), REMOVEFILTERS('01_Date'[Start of Week]), '01_Date'[Week ID] = MAX('01_Date'[Week ID]) + 1)

修正后的DAX公式

核心思路:遍历每周的唯一日期,对每个日期取单个Table2DurationHours值(避免同一日期多行累加),再汇总每周总时长。

Week 1

Week1Duration = 
VAR SelectedWeekStart = SELECTEDVALUE('01_Date'[Start of Week])
VAR Week1StartDate = CALCULATE(MIN('01_Date'[CalendarDate]), '01_Date'[Start of Week] = SelectedWeekStart)
VAR Week1EndDate = Week1StartDate + 6
// 筛选出该周的唯一日期
VAR FilteredUniqueDates = DISTINCT(FILTER('FactTable', 'FactTable'[Date] >= Week1StartDate && 'FactTable'[Date] <= Week1EndDate)[Date])
RETURN
// 遍历每个唯一日期,取对应单值后求和
SUMX(
    FilteredUniqueDates,
    CALCULATE(MAX(FactTable[Table2DurationHours]))
)

Week 2

Week2Duration = 
VAR NextWeekID = MAX('01_Date'[Week ID]) + 1
// 获取下周的所有日期
VAR NextWeekDates = CALCULATE(VALUES('01_Date'[CalendarDate]), '01_Date'[Week ID] = NextWeekID)
RETURN
// 遍历下周每个日期,取对应单值后求和
SUMX(
    NextWeekDates,
    CALCULATE(MAX(FactTable[Table2DurationHours]))
)

说明

  • 若同一日期的多行Table2DurationHours数值一致,使用MAX/MIN/AVERAGE均可;若数值存在差异,需根据业务逻辑选择对应取值方式(如取第一行、最新行等)。
  • 示例表格显示:部分日期存在多行记录,原公式会累加这些行的时长,修正后仅对每个日期取一次值,避免结果偏大。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:13:14