最近做专案报告,一个函数2年前实现过,找了很久没找到是在哪个分析里用的,不得不重新写。找了半天没找到的时候,就突然冒出一个想法,给自己做一个函数&复杂计算 备忘录吧~ 遂有此篇
暂时想到了下面这些,后续会慢慢加入更多,如果对你也恰好有用,欢迎收藏。
日期函数
本期 / 同期 / 格式转换 / 日期加减计算
----------------可上下滚动查看更多------------------
自定义月份周期 上月28号至本月27号:
IF(DAY(日期)= 28||DAY(日期)= 29||DAY(日期)= 30||DAY(日期)= 31,DATEDELTA(日期,5),日期)
年月日-去除时分秒:DATE(YEAR(日期),MONTH(日期),DAY(日期))
本期(今年)年初:DATE(YEAR(日期),1,1)
同期(去年)年初:DATE(YEAR(日期)-1,1,1)
同期(去年)年末:DATE(YEAR(日期)-1,12,31)
同期(去年)年至今:DATE(YEAR(日期)-1,MONTH(日期),DAY(日期))
本期(今年)月初:DATE(YEAR(日期),MONTH(日期),1)
同期(去年)月初:DATE(YEAR(日期)-1,MONTH(日期),1)
同期(去年)月末:DATE(YEAR(日期)-1,MONTH(日期),DAYSOFMONTH(日期))
同期(去年)月末+1天:DATE(YEAR(日期)-1,MONTH(日期)+1,1)
同期(去年):YEARDELTA(TODAY(),-1)
环期(上月):MONTHDELTA(TODAY(),-1)
日期转文本:FORMAT(日期,"YYYY-MM")
文本转日期:TODATE(日期值,"YYYY-MM")
日期值转为日期:TODATE(日期值)
日期转为日期值:DAYVALUE(日期)
时间差:DATESUBDATE(大日期,小日期,"D")
-- "s/S"为秒、"m/M"为分钟、"h/H"为小时、"d/D"为天、"w/W"为周
排名
动态 / 静态
最简单的方式:用仪表板的快速计算(升序、降序排名)
门店排名(依据销售达成,动态排序,随仪表板维度的变化而变化):
RANK_ANLS(销售达成,0,"desc")
门店排名(依据销售达成,静态排序,不随仪表板维度的变化而变化):
DEF(COUNTD_AGG(门店名)+1,门店名,(DEF(SUM_AGG(销售额),门店名)/DEF(AVG_AGG(门店销售额目标),门店名)) > EARLIER(DEF(SUM_AGG(销售额),门店名)/DEF(AVG_AGG(门店销售额目标),门店名)))
字符串函数
截取 / 查找
按照分隔符截取:
① 指定字符仅出现一次
指定字符前的内容:LEFT(字段,FIND("-",字段)-1)
指定字符后的内容:RIGHT(字段,LEN(字段)-FIND("-",字段))
② 指定字符出现多次(字符多次出现,取最后一个)
指定字符前的内容:
LEFT(字段,LEN(字段)-LEN(INDEXOF(SPLIT(字段,"_"),LEN(SPLIT(字段,"_"))-1))-1)
指定字符后的内容:INDEXOF(SPLIT(字段,"_"),LEN(SPLIT(字段,"_"))-1)
指定字符替换:REPLACE(字段,"-","_")
分析函数
移动平均 / 复购率
移动平均(12个月):
DEF(AVG_AGG(DEF(SUM_AGG(销售额),DATE(YEAR(订单日期),MONTH(订单日期),1))),DATE(YEAR(订单日期),MONTH(订单日期),1),)
移动平均(参数版):
DEF(AVG_AGG(DEF(SUM_AGG(交易额),交易日期)),交易日期,)
复购率:
SUM_AGG(DEF_ADD(COUNTD_AGG(订单号),会员码)>=2)/COUNTD_AGG(会员码)