#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,期待下次分享。