跳到主要内容
版本:6.3.0

根据日期设置动态日期范围

场景

       可视化看板里,时常会用到柱形图或者折线图,来展示包括当天在内的周期趋势变化。然而每逢新的周期开始时(例如年初、月初、周初),由于数据量少,柱形图或者折线图下跌趋势明显,容易误导看板浏览者认为业绩或运营出现问题。希望在周期初始,不显示当前周期,仅显示之前周期的数据。

案例

       制作最近8周的用户群活跃度趋势图,期望效果:每逢周一不显示当天数据,展示之前8周数据;周二至周日,展示包括当前周和之前7周的数据。效果参考下图,X轴显示的日期范围跟随当天日期动态变化。

0512A.png

实现步骤

1. 提取周一日期,按周区分日期

      在卡片里新建计算字段「周日期」,用函数trunc(返回日期格式)或者date_trunc(返回日期时间格式)取得日期字段所在周的周一日期。

image.png

2. 判断「近8周」逻辑

      新建计算字段「近8周」,放入筛选栏。判断近8周的逻辑有多种,以下提供2种方案供参考。

image.png

      卡片整体设置如下图。

0512B.png

注意事项

       需要把数据聚合到周维度的场景里,部分用户习惯用 weekofyear() 函数来取得周数,并用这个周数来控制日期筛选,本文案例中「近8周」也可以通过如下公式筛选得到。

image.png

       但是,强烈不建议使用该方案,主要弊端有:在数据集里包含多年份、或者跨年数据时,不筛选年份会导致不同年份的同一周都误参与计算;筛选年份会导致跨年后(每年1、2月)取不到近8周中去年的数据。

其它

       非周期趋势图表,仅用筛选器筛选单个周期(例如当前月),可以使用选择筛选器,默认选项使用时间宏,从而实现月初1号、周一的时候默认显示上个周期数据,其余事后显示当前周期数据。筛选器设置参考下图。

0512C.png

      如果可视化图表里只需要展示当前月、不包含今天当天的数据,也不需要通过筛选器控制时间周期显示,那么在卡片编辑页面筛选日期字段,选择快捷日期区间,例如“本月到昨天”,也可以实现月初一号展示上个月数据。其他周期以此类推。

参考文档时间宏使用  Spark日期函数及应用