请在文末下载附件
一、背景
在群里看到有人在交流周维度同环比,同时又好多天都没有更新文章了,最近没有什么好的素材,就硬生生的写一个吧。
先来看看结果图(ps:实现功能,美化靠天赋,反正我没什么天赋。)
关于中国式报表,有人喜欢方式一,也有人喜欢方式二,如果喜欢方式三就自己写吧。
二、数据源
数据源用M写的随机数据,共三张表。
1、【周几】
2、【calendar】
3、【data】
4、三张表的M
5、数据源M源码
/*data*/
let
D = #table(
type table[
date=date
,value=number
]
,List.Transform(
{0..364}
,(d)=>
{
Date.From(Number.From(#date(2018,1,1))+d)
,Number.Round(Number.RandomBetween(1,1000),2)
}
)
)
in
D
/*周几*/
let
源 = #table(
type table [
ID=Int32.Type
,周几=text
]
,List.Transform(
{0..6}
,(d)=>
{
d
, {"一","二","三","四","五","六","日"}{d}
}
)
)
in
源
/*calendar*/
let
D = #date(2018,1,1),
N = Number.From(D),
C = #table(
type table [
date=date
,weeknumber=Int32.Type
,weekday=Int32.Type
]
,List.Transform(
{0..364}
,(d)=>
let
r=Date.From(N+d)
in
{
r
, Date.WeekOfYear(r,1)
,Date.DayOfWeek(r,1)
}
)
)
in
C
6、关系
三、上DAX
1、周同比
周同比 :=
var w =
average ( 'calendar'[weeknumber] ) - 1
return
divide (
'calendar'[total]
- calculate ( 'calendar'[total], 'calendar'[weeknumber] = w ),
calculate ( 'calendar'[total], 'calendar'[weeknumber] = w )
)
2、日环比
日环比 :=
var dc =
lastdate ( 'calendar'[date] )
var dl =
dateadd ( dc, -1, day )
var vl =
calculate ( 'calendar'[total], 'calendar'[date] = dl )
return
divide ( 'calendar'[total] - vl, vl )
3、result
result :=
VAR v =
FORMAT ( 'calendar'[total], "0.00" )
VAR t =
SWITCH (
TRUE (),
'calendar'[周同比] > 0, "同比:▲" & FORMAT ( 'calendar'[周同比], "0%" ),
'calendar'[周同比] < 0, "同比:▼" & FORMAT ( 'calendar'[周同比], "0%" ),
"同比:▁" & FORMAT ( 'calendar'[周同比], "0%" )
)
VAR h =
SWITCH (
TRUE (),
'calendar'[日环比] > 0, "环比:▲" & FORMAT ( 'calendar'[日环比], "0%" ),
'calendar'[日环比] < 0, "环比:▼" & FORMAT ( 'calendar'[日环比], "0%" ),
"环比:▁" & FORMAT ( 'calendar'[日环比], "0%" )
)
RETURN
SWITCH (
TRUE (),
'calendar'[周同比] = BLANK ()
&&'calendar'[日环比] = BLANK (), v,
'calendar'[周同比] = BLANK (), CONCATENATE ( v, "|" & h ),
'calendar'[日环比] = BLANK (), CONCATENATE ( v, "|" & t ),
CONCATENATE ( v, "|" & t & "|" & h )
)
四、总结
1、dax没有什么难度,主要是上周和前一天的筛选上下创建;
2、中国式报表:主要是利用文本连接(度量值:result);
3、本案例中只体现了2018年一年的周,如果需要多年的话,只需要创建weeknumber的索引即可。
by焦棚子
请点击【立即购买】或者【升级VIP】获得案例附件。
评论