#Powerbi 利用时间智能函数,进行周度分析

在实际工作中,我们往往需要同比分析,月度和年度的分析都有对应的时间智能函数,分别是MTD和YTD,但是缺少了周度的时间智能函数,而

恰恰日常工作中,我们又需要以周度来进行对应的分析,今天我们来学习一下,如何使用Powerbi来进行周度分析。

我们这里假设要进行流量的周度分析,流量表里包含了日期、曝光人数等业务值。

第一步:构建含年周度的日期表

首先,我们需要一个含有周度列的时间表,下面是生成日期表的DAX,这个可以直接使用。

日期表 = ADDCOLUMNS( 
CALENDAR(date(2023,1,1),date(2023,1,22)),
"年", YEAR ( [Date] ),
"季度", ROUNDUP(MONTH([Date])/3,0),
"月", MONTH([Date]),
"周", weeknum([Date]),
"年季度", year([date]) & "Q" & ROUNDUP(MONTH([Date])/3,0),
"年月", year([Date]) * 100 + MONTH([Date]),
"年周", year([Date]) * 100 + weeknum([Date]),
"星期几", WEEKDAY([Date]) 
)

  

这里生成的年周列

 第二步:构建度量值

上周同期_度量值:这里我们来算曝光人数的上周同期数,上周同期的话,其实就是平移日期7天,去计算曝光,所以这里选用了dateadd函数去计算

曝光人数(上周) = CALCULATE('流量度量值'[曝光人数(人)],DATEADD('日期表'[日期],-7,DAY))

  

流量本周至今度量值:这里VAR先申明了一个变量,SELECTEDVALUE这里返回当前选择日期对应的实际年周,下方FILTER中,两个筛选条件,一个是当前周,一个是小于日期表中的最大值。

流量_曝光人数_本周至今WTD = 

VAR curyearweek=SELECTEDVALUE('日期表'[年周])

RETURN

CALCULATE(

  '流量看板度量值'[曝光人数(人)],

  FILTER(

    ALL('日期表'),

    '日期表'[年周]=curyearweek

    &&'日期表'[日期]<=MAX('日期表'[日期])

  )

)

 流量上周累积度量值

 

上周累计 = 

VAR curyear= SELECTEDVALUE('日期表'[年])

VAR curweeknum=SELECTEDVALUE('日期表'[周])

RETURN

CALCULATE(

  '流量看板度量值'[曝光人数(人)],

  FILTER(

    ALL('日期表'),

    '日期表'[年]=curyear

    &&'日期表'[周]=curweeknum-1

  )

)  

    流量总和:

流量总和 = CALCULATE(SUM('流量表'[曝光人数]))

 流量周环比:

流量周环比 = DIVIDE(流量总和,曝光人数(上周))-1

第三步:构图

 

 

总结,在进行周分析时,重点在于时间智能函数的返回值,在实际应用中,我们需要注意筛选条件的返回值,熟练运用VAR和CALCULATE+FILTER+ALL函数组合,可以让我们在任意的期间段分析都如鱼得水。

我是simone,期待下次分享。

posted @ 2023-01-18 17:18  simone331  阅读(1635)  评论(0编辑  收藏  举报