网站首页 > 知识剖析 正文
各位周二好鸭!
大家在工作中有没有经常遇到一种情况 ? 统计某些指标时需剔除非工作日。下面我们分两种情景来探讨下分析中遇到区分工作日的场景。
1 针对聚合指标
我们采用如下数据,以下申请记录表是某厂的设备借用申请记录,每个单子均有申请借用的日期和申请被满足的日期:
我们要按照申请日期统计每天产生的申请单数量,建立或导入日期表如下:
将申请记录表的申请日期和日期表的Date列建立关系。要统计每天产生的申请单数量,只需写出如下表达式:
申请单数量 =COUNTROWS ( '申请记录' )
则在报表视图中,呈现的结果如下:
考虑工作日进来,实现只统计工作日的申请单数量。这里我们只考虑周末为非工作日,在日期表中增加辅助列:
是否工作日 =
IF ( '日期表'[星期几] = 6 || '日期表'[星期几] = 7, FALSE (), TRUE () )
根据该辅助列改写一下刚才的度量值:
申请单数量(工作日) =
CALCULATE (COUNTROWS ( ‘申请记录’ ),
‘日期表’[是否工作日] = TRUE () )
在报表视图中是:
可以看到,非工作日已经被过滤。
2 针对日期差
数据中有两列日期:申请日期和满足日期。基于业务需要,要计算申请日期和满足日期之间相差的天数,并且剔除非工作日。
首先,如果不考虑工作日的话我们一般使用DATEDIFF函数写如下的表达式来新建列:
日期差 =DATEDIFF ( [申请日期], [满足日期], DAY )
在数据视图中的结果如下:
可惜,DATEDIFF函数没有参数可以用来设置工作日,所以我们换一种思路。
上述表达式可以等价地写成:
日期差1 =
CALCULATE ( COUNTROWS ( '日期表' ),
FILTER ( ALL ( '日期表'[Date], '日期表'[是否工作日] ),
'申请记录'[申请日期] <= '日期表'[Date] && '申请记录'[满足日期] >= '日期表'[Date] )) – 1
以上表达式可以理解为,统计日期表中在申请日期之后,满足日期之前的日期数量,在报表视图中的结果如下:
如果只统计工作日,那么只需在以上逻辑的基础上添加 '日期表'[是否工作日] = TRUE ()的条件,如下:
工作日差 =
CALCULATE ( COUNTROWS ( '日期表' ),
FILTER ( ALL ( '日期表'[Date], '日期表'[是否工作日] ),
申请记录'[申请日期] <= '日期表'[Date] && '申请记录'[满足日期] >= '日期表'[Date] && '日期表'[是否工作日] = TRUE () )) – 1
在数据视图中的结果如下:
可以看到,“工作日差”列只统计了两个日期之间的工作日天数,达到了预期的效果。
总结
区分工作日首先要做的是在日期表中添加一个辅助列,标识出工作日,本文中的工作日是最简单的情况,如需自定义工作日则要创建自定义的日期表,手工或自动匹配出工作日的标识,再将自定义的日期表导入模型中。
以上,谢谢友友们~
* PowerPivot工坊原创文章,转载请注明出处!
延伸阅读:
如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。
长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~
猜你喜欢
- 2024-11-12 Linux运维面试sql语句2 面试linux运维工程师提问哪些问题
- 2024-11-12 PowerBI时间日期函数 powerbi日期相减
- 2024-11-12 数据库日期与时间函数概览 数据库时间日期型
- 2024-11-12 画像笔记7- 非实时标签-统计标签-最近来访标签
- 2024-11-12 扎心了!面试时遇到要手写sql,结果函数拼写不出来
- 2024-11-12 还不用Excel算算离国庆还有多少天?Get这11个神技每天省2小时!
- 2024-11-12 种猪生产数据预处理方法之数据清洗
- 2024-11-12 Mysql数据库常见函数(下)——日期时间函数
- 2024-11-12 MySQL常用函数之日期函数 mysql日期yyyymmdd
- 2024-11-12 MySQL常用函数,程序员真得看看 mysql常见函数
- 04-29php开发者composer使用看这一篇就够了
- 04-29引用和变量声明在不同语言中的实作
- 04-29PHP 没你想的那么差
- 04-29Ubuntu linux 上的 Nginx 和 Php 安装
- 04-29CentOS下通过yum搭建lnmp(单版本PHP)
- 04-29为什么 PHP8 是个高性能版本
- 04-29PHP8函数包含文件-PHP8知识详解
- 04-29使用无参数函数进行命令执行
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)