PowerBI中相同日期区间数值求和及趋势线实现方法咨询
解决方案
完全可以实现,无需将日期范围按天拆分,仅通过DAX动态计算即可达成需求,不会造成数据量膨胀,具体操作步骤如下:
1. 准备独立日期维度表
首先创建一张独立的日期维度表,无需和业务表建立关联,可直接用以下DAX表达式生成:日期表 = CALENDARAUTO()
如果你的数据日期范围固定,也可以用CALENDAR(起始日期, 结束日期)指定范围生成。
2. 编写核心计算度量值
首先编写基础聚合度量值,动态计算任意日期处于生效范围内的数值总和:
生效数值总和 = CALCULATE( SUM('业务表'[数值]), FILTER( ALL('业务表'), '业务表'[开始日期] <= MAX('日期表'[Date]) && '业务表'[结束日期] >= MAX('日期表'[Date]) ) )
如果需要仅保留数值发生变化的节点(即你预期的3个趋势点),可以再编写一个用于图表展示的度量值,过滤掉无变化的日期:
趋势图展示值 = VAR 当前日期值 = [生效数值总和] VAR 前一日期值 = CALCULATE([生效数值总和], DATEADD('日期表'[Date], -1, DAY)) RETURN IF( 当前日期值 <> 前一日期值 || ISBLANK(前一日期值), 当前日期值, BLANK() )
3. 制作趋势图
将日期表的Date字段放入折线图的X轴,将趋势图展示值放入Y轴,将X轴的类型调整为类别(不要选连续),即可得到仅包含数值变化节点的趋势线,完全符合你的预期。
补充说明
- 该方案所有计算为动态执行,不会修改或膨胀原始业务数据的体量,哪怕你的数据量很大也不会有性能问题。
- 若需按地点ID拆分统计,仅需将ID字段放入图表图例/筛选器即可,度量值会自动按维度聚合无需修改。
- 可根据实际业务的生效规则调整FILTER中的日期判断逻辑,比如结束日期当日不生效的话,将
>= MAX('日期表'[Date])调整为> MAX('日期表'[Date])即可。
内容的提问来源于stack exchange,提问作者mameesh
相关产品推荐
相关产品推荐

