让决策更智能
新一代智能数据分析平台

如何正确处理跨年周的问题

观小数发表于:2020年11月23日 19:18:34更新于:2020年11月23日 19:20:35

场景介绍:

类似于MySQL里的date_format(%x%v)实现得到某年某周的数据;

1、在观远里,如果是卡片编辑的场景,那么直接拖入日期-周就可以:

0015fbb9744c3df40590578e71a8a8f

在选择筛选器上,也可以直接按周进行筛选:

0015fbb9a750d6e62a16fb14af78dbb

2、如果是ETL或者在卡片里但是一定需要用新建字段来解决的场景,可以用concat拼接来实现:concat(year([日期]),"年","第",weekofyear([日期]),"周"):

0015fbb97a1509efa71ba3985a00ebd

但是,年末的几天往往比较棘手,比如2019年的12月30号和12月31号实际上是2020年第一周,如果按照上面的处理方式,得到的结果会变成2019年第1周:

0015fbb97e3398c98b51d545c13ff02

解决方法:

用case when函数 特殊处理年末几天的数据,语法如下:

case when [日期]="2019-12-30"or [日期]="2019-12-31"

then concat(year([日期])+1,"年","第",weekofyear([日期]),"周" ) 

else  concat(year([日期]),"年","第",weekofyear([日期]),"周")  end

0015fbb994c2e4e5209860ff08292cd

处理结果如下:

0015fbb998fc38f17a836427e55e477


小结:由于拼接函数及weekofyear本身无法识别跨年周所在年份,目前只能通过手动处理成正确的年份,如果是在卡片编辑的场景,建议直接使用系统自带的日期-周。



    您需要登录后才可以回复