场景
有些数据集里没有日期字段,或者日期使用的是文本格式,这样在观远BI里制作卡片,计算同环比时,就会发现,高级计算里没有同环比的选项。那这些情况下,要怎么计算同环比呢?
实现方法
系统自带的同环比功能只能基于日期类型字段,所以需要使用函数把文本型日期转换为日期字段,或者根据现有数据里的时间逻辑生成日期类型字段。
案例一:数据集里没有日期字段,但是存储有文本格式的年和季度,存储的是按季度汇总的门店数。
步骤:
1. 在数据集概览页面或者ETL里新建计算字段,使用函数生成每个季度的第一天。
有“年”和“季”字段时可用公式:
case when [季]='1' then [年]||'-01-01' when [季]='2' then [年]||'-04-01' when [季]='3' then [年]||'-07-01' when [季]='4' then [年]||'-10-01' end
仅有“季度”字段时可用公式:
case when right([季度],1)='1' then left([季度],4)||'-01-01' when right([季度],1)='2' then left([季度],4)||'-04-01' when right([季度],1)='3' then left([季度],4)||'-07-01' when right([季度],1)='4' then left([季度],4)||'-10-01' end
同环比设置方法一:
2. 制作卡片,把上一步创建的日期字段直接拖到筛选栏,并进行筛选。
3. 把数值字段拖到数值栏,点击选择高级计算—同比/环比,在弹出框里选择“基于日期筛选”模式。要计算年同比的话,对比类型选择“年同比(年/月/日)”,其他根据需要设置;要计算季度环比的话,因为日期只是每个季度的第一天,对比类型里没有合适选择,所以对比类型需要选择“自定义”,对比方式选:对比相对日期—前移3月。最后给字段设置别名。最终效果如下:
同环比设置方法二:以季度环比为例
创建日期字段后,点击“日期”后面箭头,把“季度”拖到筛选栏,选择任意季度;数值字段拖入数值栏,选择高级计算—同比/环比,在弹出框里选择“基于日期筛选”模式,对比类型选择“环比”即可。
案例二:某订单状态数据集没有任何日期字段,但是订单号本身是一个文本格式的长数字,前面数字其实是日期和时分秒。那便可以使用公式把日期和时间提取出来,再计算同环比。
新建计算字段,转换公式:
to_timestamp(left([OrderCode],14),’yyyyMMddHHmmss’) to_date(left([OrderCode],8),’yyyyMMdd’)
转换后为标准时间或者日期格式,可根据需要计算同环比,此处不再赘述。更多日期类转换函数请参考:Spark SQL日期处理函数及案例分享。