博客: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 焦棚子

焦棚子的文章目录

111_Power Pivot 24小时维度:累计、同比、环比相关的更多相关文章

  1. 24小时学通Linux内核--内核探索工具类

    寒假闲下来了,可以尽情的做自己喜欢的事情,专心待在实验室里燥起来了,因为大二的时候接触过Linux,只是关于内核方面确实是不好懂,所以十天的时间里还是希望能够补充一下Linux内核相关知识,接下来继续 ...

  2. 反恐24小时第一季/全集24 Live Another Day迅雷下载

    反恐24小时 第一至九季 24 Season 1-9 (2001-2014) 本季看点:<24小时>第8季将在拥有美国的象征自由女神像的纽约开始,在新的一天,CTU重新开张,新的领导为从M ...

  3. 再谈Cognos利用FM模型来做同比环比

    很早之前已经讲过 <Cognos利用DMR模型开发同比环比>这篇文章里说的是不利用过滤器,而是采用 except (lastPeriods (-9000,[订单数据分析].[日期维度].[ ...

  4. 用python+selenium抓取微博24小时热门话题的前15个并保存到txt中

    抓取微博24小时热门话题的前15个,抓取的内容请保存至txt文件中,需要抓取排行.话题和阅读数 #coding=utf-8 from selenium import webdriver import ...

  5. #CSDN刷票门# 有没有人在恶意刷票?CSDN请告诉我!用24小时监控数据说话!

    特别声明: 此次并非针对其他参与2013中国十大优秀开源项目的同行,体系有漏洞要谴责的是制定规则并从中获益但不作为的权贵,草根们制定不了规则但可发现和利用漏洞,这是程序员应有反叛精神没错.但被作为道具 ...

  6. SimpleDateFormat 12小时制以及24小时制的写法

    有些代码按了复制键没有效果,但是其实已经复制到剪贴板上面了,大家请注意哦! 我的文章有时会稍有修改,转载请注明出处哦! 原文地址:SimpleDateFormat 12小时制以及24小时制的写法 去代 ...

  7. ios 在中国地区,24小时时间格式 系统设定下 获得12小时制时间的方法

    如题,在中国地区,24小时时间格式 系统设定下,如果单单使用 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 之后,无论用hh ...

  8. C# 时间现实问题(12小时制与24小时制)

    最近在修改项目中遇到时间问题,12小时制与24小时制的问题,想再次跟各位同仁提个醒. yyyy-MM-dd HH:mm:ss------大写的HH为24小时制 yyyy-MM-dd hh:mm:ss- ...

  9. 清除Cookie、获取指定Cookie的值、添加一个Cookie(24小时过期)、添加一个Cookie

    MXS&Vincene  ─╄OvЁ  &0000007 ─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...

随机推荐

  1. 通过HTML5的getUserMedia实现拍照功能

    参考HTML5Rocks的这篇文章实现的一个简单的例子. 思路如下: 1. 把冰箱门打开 2. 把大象放进冰箱里 3. 把冰箱门关上 好了不开玩笑了,其实思路是: 1. 通过getUserMedia调 ...

  2. transformjs 污染了 DOM?是你不了解它的强大

    原文链接:https://github.com/AlloyTeam/AlloyTouch/wiki/Powerful-transformjs 写在前面 上星期在React微信群里,有小伙伴觉得tran ...

  3. 关于mui中一个页面有有多个页签进行切换的下拉刷新加搜索问题

    此图是最近做的项目中的一页,用的是mui结合vue,用了mui后,觉得是真心难用啊,先不说其他的,就光这个下拉刷新就让人奔溃了,问题层出不穷,不过最后经过努力还是摆平了哈. 1.每次切换到新的标签,都 ...

  4. [翻译]Service workers:PWA背后的英雄

    原文地址:https://medium.freecodecamp.org/service-workers-the-little-heroes-behind-progressive-web-apps-4 ...

  5. 前端网络安全——前端CSRF

    CSRF:Cross Site Request Forgy(跨站请求伪造) 用户打开另外一个网站,可以对本网站进行操作或攻击.容易产生传播蠕虫. CSRF攻击原理: 1.用户先登录A网站 2.A网站确 ...

  6. java中异常这种技术框架是怎么工作的?

    异常这种技术框架是怎么工作的?马克-to-win:注意是运行程序时,而不是编译时,当一个非正常情况出现,比如除0,就叫异常情况.马克-to- win:为了能优雅的处理异常情况(在出现异常情况后,程序不 ...

  7. 【Android开发】【布局】几个常用布局构成的简单demo

    图image1.jpg,就是常用的 底部菜单栏 + Fragment联动 使用 RadioGroup + Fragment 图image2.jpg ,就是 TabLayout + ViewPager ...

  8. Java中 i++和++i 的区别

    学习目标: 理解i++和++i的区别 学习内容: 1.i++ / i- - i++/i- -:遇到 i++或 i- -,i先参与运算,然后 i 再自加或自减1 代码如下: int a = 1; int ...

  9. 【代码大全2 学习笔记】ADT 抽象与封装

    ADT abstract data type 抽象数据类型 要理解面向对象编程,就要先理解ADT这个概念.不懂ADT的程序员开发出来的类只是名义上的"类"而已--只是单纯的把一些相 ...

  10. Vulnhub 之 Earth

    靶机地址:https://www.vulnhub.com/entry/the-planets-earth,755/ Kali IP:192.168.56.104 下载OVA文件后,直接通过Virtua ...