111_Power Pivot 24小时维度:累计、同比、环比相关

博客:www.jiaopengzi.com

焦棚子的文章目录
请点击下载附件

一、背景

今天有朋友讨论怎么做每天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时环比%为空。

[video width="1340" height="896" mp4="https://jiaopengzi.com/wp-content/uploads/2020/03/111_1.mp4"][/video]

demo

二、数据源

为了方便写demo,就不用加入日期表了,数据量大的时候还是日期表管理会更好。
新建hour列,用于小时维度建立关系,在pq中处理会更好。
实际项目中是用日期表管理,为了方便起见就新建date列用于切片器
关系建立

三、上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 焦棚子

焦棚子的文章目录

posted @ 2021-10-16 16:35  焦棚子  阅读(169)  评论(0编辑  收藏  举报