如何按日期分组计算表格中Result列的每日累计求和?
按日期独立计算Result列的累计求和(DAX解决方案)
正确DAX表达式(两种实现方式)
方式1:直接在筛选中匹配日期部分
Daily Result = CALCULATE( SUM('Original'[Result]), FILTER( ALL('Original'), DATEVALUE('Original'[DateTime]) = DATEVALUE(EARLIER('Original'[DateTime])) && 'Original'[DateTime] <= EARLIER('Original'[DateTime]) ) )
方式2:先添加日期列再使用ALLEXCEPT(更简洁)
- 先在数据表中新增计算列
Date:
Date = DATEVALUE('Original'[DateTime])
- 再编写累计列表达式:
Daily Result = CALCULATE( SUM('Original'[Result]), FILTER( ALLEXCEPT('Original', 'Original'[Date]), 'Original'[DateTime] <= EARLIER('Original'[DateTime]) ) )
问题原因分析
你原有的表达式使用ALL('Original')会移除所有上下文筛选条件,导致累计范围覆盖所有早于当前时间的记录(包括其他日期的)。要实现每日独立累计,必须在筛选逻辑中增加日期匹配限制,确保只对同一天内的记录进行累计。
验证结果
使用上述任意一种表达式后,将得到你期望的结果:
| DateTime | Result | Daily Result |
|---|---|---|
| 2023-12-20 09:02:00 | -10 | -10 |
| 2023-12-20 11:02:00 | 20 | 10 |
| 2023-12-20 12:04:00 | 45 | 55 |
| 2023-12-22 08:05:00 | 50 | 50 |
| 2023-12-22 09:14:00 | 32 | 82 |
| 2023-12-22 11:55:00 | -10 | 72 |
内容的提问来源于stack exchange,提问作者Paulo Maciel
相关产品推荐
相关产品推荐

