如何通过DAX实现日期范围内项目累计总数的趋势统计?
用CALCULATE实现项目数的累计统计(时间趋势折线图)
你的核心问题是原表达式仅统计完全落在当前筛选时间段内的项目,无法实现随时间推进的累计效果。要通过CALCULATE实现时间维度的累计统计,需针对图表上的每个时间点(如日/月/年),遍历历史范围筛选符合条件的项目。
以下分两种常见需求给出DAX表达式:
1. 累计已启动项目数(增长趋势)
统计到当前时间点为止,所有已经启动(since_day ≤ 当前时间)的项目总数,适合展示项目数量的持续增长:
累计已启动项目数 = CALCULATE( COUNTROWS(items), // 清除时间表的筛选,保留到当前时间点的所有历史日期 FILTER(ALL(timetable), timetable[day] <= MAX(timetable[day])), // 筛选启动时间早于等于当前时间点的项目 items[since_day] <= MAX(timetable[day]) )
2. 当前活跃项目数(波动趋势)
统计当前时间点仍处于活跃状态的项目(since_day ≤ 当前时间且 to_day ≥ 当前时间),适合展示项目生命周期的波动:
当前活跃项目数 = CALCULATE( COUNTROWS(items), items[since_day] <= MAX(timetable[day]), items[to_day] >= MAX(timetable[day]) )
关键说明
- 原表达式中
FIRSTDATE和LASTDATE仅取当前筛选时间段的首尾日期,导致只能统计该时间段内完全覆盖的项目;而上述表达式用MAX(timetable[day])获取图表当前轴的时间点,结合ALL(timetable)扩展历史范围,实现逐点累计统计。 - 将上述度量值拖入折线图,轴选择时间表的
day字段(可按月/年聚合),即可得到对应的趋势曲线。
内容的提问来源于stack exchange,提问作者fluca1978
相关产品推荐
相关产品推荐

