请在文末下载附件
一、背景
今天有朋友讨论怎么做每天24小时维度的工作量计算(运营类企业,每天24小时都在运营)需求如下:
1、从0时到23时每小时工作量;
2、从0时到23时每小时工作量占比全天工作量的百分比;
3、从0时到23时每小时累计工作量;
4、从0时到23时每小时累计工作量占比全天工作量的百分比;
5、从0时到23时每小时的环比;
6、从0时到23时昨日每小时工作量及同比。
动态结果(只有功能,美化不会)
由于demo中就11月7日及8日两天的数据,所以切片11月7日时,昨日total,同比%,0时环比%为空。
二、数据源
为了方便写demo,就不用加入日期表了,数据量大的时候还是日期表管理会更好。
关系建立
三、上DAX
1、total
total:=SUM('data'[value])
2、占比%:
从0时到23时每小时工作量占比全天工作量的百分比
占比%:=DIVIDE('data'[total],CALCULATE('data'[total],ALL(h[hour])))
3、htd:
从0时到23时每小时累计工作量
htd:=
VAR HMAX =
MAX ( 'h'[hour] )
VAR HMIN =
CALCULATE ( MIN ( 'h'[hour] ), ALL ( h[hour] ) )
VAR T =
CALCULATETABLE ( VALUES ( h[hour] ), 'h'[hour] >= HMIN && 'h'[hour] <= HMAX )
RETURN
CALCULATE ( 'data'[total], T )
4、累计%:
从0时到23时每小时累计工作量占比全天工作量的百分比
累计%:=DIVIDE('data'[htd],CALCULATE('data'[total],ALL(h[hour])))
5、环比%:
从0时到23时每小时的环比(注意环比中,0时的上一小时是前一天的23时【注意黄色单元格】)
环比%:=
VAR HMAX =
MAX ( 'h'[hour] )
VAR PH =
IF (
HMAX = 0,
CALCULATE ( 'data'[total], 'h'[hour] = 23, DATEADD ( 'data'[date], -1, DAY ) ),
CALCULATE ( 'data'[total], 'h'[hour] = HMAX - 1 )
)
RETURN
IF ( ISFILTERED ( h[hour] ), DIVIDE ( 'data'[total] - PH, PH ) )
6、昨日total:
从0时到23时昨日每小时工作量
昨日total:=CALCULATE('data'[total],DATEADD('data'[date],-1,DAY))
7、同比%:
从0时到23时昨日每小时工作量的同比
同比%:=
VAR HMAX =
MAX ( 'h'[hour] )
VAR YH =
IF (
ISFILTERED ( 'h'[hour] ),
CALCULATE ( 'data'[total], 'h'[hour] = HMAX, DATEADD ( 'data'[date], -1, DAY ) ),
'data'[昨日total]
)
RETURN
DIVIDE ( 'data'[total] - YH, YH )
四、总结
1、建立适当的模型及关系;
2、构建需求的上下文;
3、特殊维度的度量值,特殊处理(如0时的环比)
by 焦棚子
请点击【立即购买】或者【升级VIP】获得案例附件。
评论