
power bi 中时间函数只对应年、季、月、天,而在零售、电商等公司中,周分析非常常见,这里整理了一些周分析的小技巧,再次申明下,思路均来自power bi 星球,我只是对其公众号文章进行整理补充。对步骤不理解的小伙伴可以参考power bi星球相关文章。
这里是文章链接:
学会了这个思路,你也可以轻松进行周分析!mp.weixin.qq.com

先建立日期表。
日期表(周) =
ADDCOLUMNS(
ADDCOLUMNS (
CALENDAR (DATE(2016,1,1), DATE(2017,12,31)),
"日期",FORMAT([Date],"YYYY/MM/DD"), //增加一项日期方便文章后续进行分析
"年度", YEAR ([Date]),
"季度", "Q" & FORMAT ( [Date], "Q" ),
"月份", FORMAT ( [Date], "MM" ),
"日",FORMAT ( [Date], "DD" ),
"年度季度", FORMAT ( [Date], "YYYY" ) & "Q" & FORMAT ( [Date], "Q" ),
"年度月份", FORMAT ( [Date], "YYYY/MM" ),
"周几", WEEKDAY ( [Date],2 ),
"周数",WEEKNUM([Date],2)
),
"年度周数",[年度]*100+[周数]
)
其中WEEKDAY()和WEEKNUM()函数是有关周的函数:
WEEKDAY():返回当前日期的星期,第二个参数控制每周从哪一天开始
- 参数为1时,周日为第一天,编号1-7;
- 参数为2时,周一为第一天,编号1-7;
- 参数为3时,周日为第一天,编号0-6.
WEEKNUM():返回当前日期属于当年的第几周,第二个参数可以控制每周的第一天是周日还是周一
- 参数为1时,周日为第一天
- 参数为2时,周一为第一天
*建立出的日期表别忘了与要做分析的表进行关联
上周同期
比如今天是周一,上周同期就是上周一
代码:
上周同期销量 =
CALCULATE(
SUM('订单表'[订单数量]),
DATEADD('日期表(周)'[Date],-7,DAY)
)

我这里只有2016/1/1的数据,但不影响看到执行效果。
本周至今
Power BI中有本年至今YTD、本季至今QTD、本月至今MTD,那这就构造一个本周至今WTD
本周至今 =
VAR curyearweek=SELECTEDVALUE('日期表(周)'[年度周数])
RETURN
CALCULATE(
SUM('订单表'[订单数量]),
FILTER(
ALL('日期表(周)'),
'日期表(周)'[年度周数]=curyearweek
&&'日期表(周)'[日期]<=MAX('日期表(周)'[日期])))

周环比
先对上周的累计销量进行统计
上周累计 =
VAR curyear=SELECTEDVALUE('日期表(周)'[年度])
VAR curweeknum=SELECTEDVALUE('日期表(周)'[周数])
RETURN
CALCULATE(
SUM('订单表'[订单数量]),
FILTER(
ALL('日期表(周)'),
'日期表(周)'[年度]=curyear
&&'日期表(周)'[周数]=curweeknum-1))
再对创建周环比度量值:
周环比 =
FORMAT(DIVIDE(SUM('订单表'[订单数量]),[上周累计])-1,"0.00%")
这里的FORMAT()函数将数字格式转换为百分比格式

可以看到有一个好用的日期表是非常重要的。