https://zhuanlan.zhihu.com/p/88528732
Calendar =
ADDCOLUMNS (
CALENDAR ( DATE ( 2017, 1, 1 ), DATE ( 2020, 12, 31 ) ),
"年", YEAR ( [Date] ),
"季度", "第"
& ROUNDUP( MONTH ( [Date]) / 3, 0) & "季度",
"月", MONTH ( [Date] ),
"月份", MONTH ( [Date] )& "月",
"年月", FORMAT ( [Date], "YYYY/MM" )
)
常用时间计算指标
缩写 | 英文 | 解释 |
---|---|---|
YTD | Year To Date | 年初至今的累计 |
QTD | Quarter To Date | 季度初至今的累计 |
MTD | Month To Date | 月初至今累计 |
YOY | Year On Year | 与去年同期变动的百分比(同比) |
MOM | Month On Month | 与上月变动的百分比(环比) |
常用时间智能函数
函数 | 说明 | 参考的相似函数 |
---|---|---|
TOTALYTD | 年累计 | DATESYTD |
TOTALYQTD | 季度累计 | DATESQTD |
TOTALYMTD | 月累计 | DATESMTD |
DATEADD | 日期推移 | SAMEPERIODLASTYEAR |
PARALLELPERIOD | 某一期间的总数 |
当一年的时间还未完全结束,时间应该小于今天
年累计=TOTALYTD(SUM('销售表'[销售金额]),'销售表'[销售日期],'销售表'[销售金额]
财年的使用(“6-30”或“30-6”不同电脑设置不一样)
年累计=TOTALYTD(SUM('销售表'[销售金额]),'销售表'[销售日期],'销售表'[销售金额]
时间推移函数DATEADD
往前推一年
前一年数据=DATEADD('销售表'[销售日期],-1,YEAR)
YOY(同比)
今年销售额=SUM('销售表'[销售金额])
去年销售额=CALCULATE([今年销售额],DATEADD('销售表'[销售日期],-1,YEAR)
YOY=DIVIDE([今年销售额]-[去年销售额]),[去年销售额])
MOM(环比)
本月销售额=SUM('销售表'[销售金额])
上个月销售额=CALCULATE([今年销售额],DATEADD('销售表'[销售日期],-1,MONTH)
MOM=DIVIDE([本月销售额]-[上个月销售额]),[上个月销售额])
工作日
=WEEKDAY([日期],2)
无法跳过节假日
=IF(WEEKDAY([日期],2)>5,"周末","工作日")
查询语句
返回的是一张表格
=FILTER('销售记录','销售记录'[产品]="自行车")
=CALCULATE(SUM('销售记录'[金额],'销售记录'[产品]="自行车")
summarize:汇总功能,相当于group by
summarize(表格,汇总列1,....,"名称",表达式)
返回的是一张表格,最终的结果是汇总所有订单下的销售金额总和
=summarize('销售记录','销售记录'[订单编号],"金额",'销售记录'[销售金额])
定义:
类别 | 含义 | 分析语言 | 演示公式 |
---|---|---|---|
R | Recent近度 | 最近一次交易到今天的天数 | MIN([近度]);[近度]=TODAY()-[下单日期] |
F | Frequency频度 | 交易次数 | DISTINCTCOUNT([订单编号]) |
M | Monetary平均消费额度 | 交易金额/交易次数 | DIVIDE(‘销售记录’[销售金额],‘销售记录’[订单数量]) |
客户分类:
R | F | M | 客户类型 |
---|---|---|---|
近 | 高 | 高 | 重要价值客户 |
远 | 高 | 高 | 重要保持客户 |
近 | 低 | 高 | 重要发展客户 |
远 | 低 | 高 | 重要挽留客户 |
近 | 高 | 低 | 一般价值客户 |
远 | 高 | 低 | 一般保持客户 |
近 | 低 | 低 | 一般发展客户 |
远 | 低 | 低 | 一般挽留客户 |
近度
近度=today()-[下单日期] (新建列)
R=MIN([近度]) (度量值)
订单的不重复计数
F=DISTINCTCOUNT([订单编号]) (度量值)
M=DIVIDE('销售记录'[销售金额],'销售记录表'[F]) (度量值)
=SUMMARIZE('销售记录','销售记录'[客户名称],'销售记录'[客户ID],"R",'销售记录'[R],"F",'销售记录'[F],"M",'销售记录'[M])
=generate(表1,表2)
函数 | 说明 |
---|---|
SUMX | 求和 |
AVERAGEX | 求平均值 |
MAXX | 求最大值 |
MINX | 求最小值 |
COUNTX | 数值格式的计数 |
COUNTAX | 所有格式的计数 |
MEDIENX | 求中位值 |
RANKX | 排名 |
SUMX:求表达式里的和(单价*金额)
=SUMX('销售记录','销售记录'[单价]*'销售记录'[数量])
函数 | 说明 |
---|---|
FILTER | 按条件筛选数据 |
VALUES | 返回列或者表去重后的结果\ |
TOPN | 返回前几名的数据\ |
ALL | 所有数据 |
ALLEXCEPT | 所欲数据除了… |
ALLNONBLANKROW | 返回非空白的数据 |
FILTER
=FILTER('销售记录','销售记录'[产品]="自行车")
VALUES
返回非重复的一列值(去重之后的数据)
=VALUES('销售记录'[产品名称])
TOPN
这张表的前3行
TOP3=TOPN(3,'销售记录')
销售金额的前3(默认降序)
TOP3=TOPN(3,'销售记录','销售记录'[金额])
升序
TOP3=TOPN(3,'销售记录','销售记录'[金额],ASC)
ALLEXCEPT(除什么之外的所有)
返回新的一张表里面会少“产品名称”这一列
=ALLEXCEPT('销售记录','销售记录'[产品名称])
求区域经理对应的销售金额,区域经理跟销售记录,省份区域都没有关联
=SUMX(FILTER('销售记录','区域经理'[区域]=RELATED('省份区域'[区域])),'销售记录'[金额])
=SUMX(FILTER('产品销售表',EARLIER('产品销售表'[销售金额])<='产品销售表'[销售金额]),'产品销售表'[销售金额])
累计百分比(all)
='产品销售表'[销售金额]/sumx(all('产品销售表'),'产品销售表'[销售金额])
使用earlier进行排名
=COUNTROWS(FILTER('产品销售表',EARLIER('产品销售表'[销售金额])<='产品销售表'[销售金额]))+1
EARLIER区分新老客户
金额有数值就是老客户,空白的就是新客户
=IF(SUMX(FILTER('销售记录',EARLIER('销售记录'[客户ID])='销售记录'[客户ID]&&EARLIER('销售记录'[下单日期])>'销售记录'[下单日期],'销售记录'[金额])>0,"老客户","新客户")
%=[销售额]/CALCULATE([销售额],ALL'产品分类'))
两张表之间是虚线关系,需要用USERELATIONSHIP来表明关系
=CALCULATE(SUM([数量]),USERELATIONSHIP('销售记录'[实际送货日期],'日历年'[日期]))
参数DESC/ASC,升降序;Dense/Skip:相同排名是否跳过去
=RANKX(ALLSELECTEC('产品分类'),'销售记录'[销售额])
为了排除总计算进去排名
HASONEVALUE:在这张表里找到的产品名称就是TRUE,没有就是FALSE
H=HASONEVALUE('产品分类'[产品名称])
=IF(H,RANKX(ALLSELECTEC('产品分类'),'销售记录'[销售额]),BLANK())
MIN=MIN('排序依据'[ID])
SWITCH=SWITCH('排序依据'[MIN],1,'销售记录'[销售额],2,'销售记录'[销售数量],3,'销售记录'[订单数量])
RANK=RANKX(SUMMARIZE(ALL('销售记录'),'销售记录'[客户名称],'排序依据'[SWITCH])
经销商RFY分析
缩写 | 解释 | 公式 |
---|---|---|
R | Reach,达成 | DISTINCTCOUNT([客户名称]) |
F | Frequency,频率 | 订单数/客户数 |
Y | Yield,收益 | 销售额/订单数 |
使用父子层级
创建层级
层级path=path('打车记录'[姓名],'打车记录'[经理])
层级深度
=PATHLENGTH('打车记录'[层级path])
当月MTD=TOTALMOD('用量'[总用量],'日历年'[日期],'日历年'[日期]'
https://www.jianshu.com/p/78562efa28fe
https://blog.csdn.net/weixin_36135773/article/details/78809392
https://zhuanlan.zhihu.com/p/35982521