文章 查看内容

同环比:动态向前推移月份数做对比

同环比:动态向前推移月份数做对比

201 0 产品实操 2025-4-10 18:06 发布者: 观小析

需求背景用户希望自定义筛选日期范围,同环比对比日期范围可以根据用户筛选的月份跨度动态变化,比如用户筛选23年10月-12月(筛选了三个月),对比的日期范围是23年7月-9月(对比日期是连续往前推三个月的时间);用 ...

需求背景

用户希望自定义筛选日期范围,同环比对比日期范围可以根据用户筛选的月份跨度动态变化,比如用户筛选23年10月-12月(筛选了三个月),对比的日期范围是23年7月-9月(对比日期是连续往前推三个月的时间);用户筛选23年9月-10月,对比日期范围是23年7月-8月。

由于当前产品功能不支持多选月份的方式(如勾选2023-09和2023-11,不确定是否连续,多选月份功能的需求会在后续的新版本上发布),因此可以使用日历-区间的方式;又由于高级计算功能里的同环比-自定义类型仅支持偏移固定月份数,因此日期的筛选可以采用全局参数的方式,可以动态获取到月份数。

而且使用全局参数的话可以对日期有更灵活的处理:

①覆盖筛选日期所在月的整个月(本文将以此为例):筛选的开始日期所在月的1号 至 筛选的结束日期所在月的最后一天;

②不包含结束日期所在月:筛选的开始日期所在月的1号 至 筛选的结束日期前一个月的最后一天;

③直接按筛选日期范围:筛选的开始日期 至 筛选的结束日期。

思路:

先可借用month函数计算用户筛选日期的间隔月份数,再通过全局参数判断日期,在筛选的日期范围内的则是本期数据,在调整后的对比日期范围内的则是上期数据。有了“本期”和“上期”数据值,还可以继续做其他计算,比如增长率等指标。

实现步骤

直接在卡片里新建字段:

  1. 计算月份数:month([DYNAMIC_PARAMS.结束日期]) - month([DYNAMIC_PARAMS.开始日期])+1
  2. 计算本期数值:CASE WHEN [日期] between DATE_TRUNC('month',[DYNAMIC_PARAMS.开始日期]) and LAST_DAY(DATE_TRUNC('month',[DYNAMIC_PARAMS.结束日期])) THEN [金额] ELSE 0 END     
  1. 计算上期对比数值:CASE WHEN [日期] between ADD_MONTHS(DATE_TRUNC('month',[DYNAMIC_PARAMS.开始日期]) ,-[月份数]) and LAST_DAY(ADD_MONTHS(DATE_TRUNC('month',[DYNAMIC_PARAMS.结束日期]),-[月份数])) THEN [金额] ELSE 0 END

附:如需其他指标,可再新建计算字段,比如增长率=sum([本期])/sum([同期])

  1. 仪表板上创建筛选器联动全局参数,筛选使用即可


路过

雷人

握手

鲜花

鸡蛋

评论

您需要登录后才可以发表言论 登录立即注册
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2025 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去评论 去发文 返回顶部
返回顶部