取当月最后一个日期
年月格式:2022-01
DAY(DATEPARSE ( "yyyy-MM-dd", STR(MAKEDATE(int(split([年月],'-',1)),int(split([年月],'-',2))+1,0)) ))
=31
年月格式:202201
DAY(DATEPARSE ( "yyyy-MM-dd", STR(MAKEDATE(int(LEFT([年月],4)),int(RIGHT([年月],2))+1,0)) )
=31
我希望实现的功能是指定时段的截取——在本周的基础上,取过去四周的日期,返回过去四周的销售额。
要完成这个需求,最简单粗暴的办法就是把日期拖入筛选器,手工勾选4周即可。
像这样:
但如果想实现自动向前选取四周,而不是每次都勾选呢,有什么好的办法?
我的思路如下:
比如我这份数据最新日期是2018-5-17,
我们利用tableau函数提取最新日期:
返回结果:
返回最新日期后,我们怎么提取这个日期对应的周数呢?
这里需要利用到tableau自带的日期函数——DATEPART,简介如下:
对熟悉excel的同学,可以理解为Month,year,weeknum的综合函数。
那在Tableau中到底如何实现呢?
我们先来梳理一下实现的逻辑:
假如日期的周数>=最新日期周数-3 &日期的周数<=最新日期周数
那么我们返回日期值即可。
怎么样,是不是很容易想到if……else?
Tableau的if函数写法基本格式就是:
IF 表达式
THEN 返回值
END
熟悉编程的同学应该可以很快适应。
试写的函数如下:
确定完成,我们来看看提取出来的日期到底对不对:
即有2017年的,又有2018年的,这显然不是我们期望的结果。
那我们用YEAR加个限制看看?
命中了包含本周在内的四周日期:
如果希望直接返回指标值的话,那么在THEN后将date改为目标值即可。
Tableau的
IF
THEN
END
是不是还挺好用的?