工坊的小伙伴们大家好,今天我们来研究一下EARLIER函数。诚如赵老师所言, EARLIER函数是 Power BI 建模分析的分水岭,理解它的作用机制我们建模分析的能力将会得到很大提升。今天我们结合实例来学习一下earlier函数按照不同规则计算行间差的方法。
手上有这样的一组数据:
我们来分别看公司整体相邻两件产品生产时间间隔的分布,各车间产品生产时间间隔的分布,每个车间员工生产两条产品的时间间隔的分布。
公司整体层面
我们的想法是计算相邻两条记录之间的时间差。为了便于理解,我们先把生产时间列按照降序排序,之后添加辅助列,点击建模栏的新建列,我们为生产时间列添加序号列,
因为是看总体的情况,所以“序号1”列是该行的生产时间在所有记录中的序号,
接下来我们再用如下公式新建一列:
生产时间1 = SUMX(FILTER('生产记录表','生产记录表'[序号1]=EARLIER('生产记录表'[序号1])+1),'生产记录表'[生产时间])
我们从得到的结果来反向理解一下该表达式的含义,仔细观察可以发现,‘生产时间1’列是原来的‘生产时间’列整体向上移动了一行得到的,
公式的逻辑是:对于每个序号来说,去找到原来的表中该序号加一的序号对应的生产时间,也就是生产时间相邻的前一条记录,这样的话我们通过两列做差即可得到相邻两条记录的时间差了。这里我推荐大家使用DATEDIFF函数,可以通过修改函数的最后一个参数得到想要的时间粒度。
时间差1 = DATEDIFF('生产记录表'[生产时间1],'生产记录表'[生产时间],SECOND)
至此我们得到了一列相邻两行的时间差数据,稍后我们通过作图来分析时间差的分布情况。
公司内各车间层面
我们的想法是计算同一个车间的相邻两条生产记录之间的时间差。同样,我们先给生产时间添加序号,而与上节不同的是,我们是给每个车间的生产时间分别编号,此时我们用的表达式为:
序号2 = RANKX(FILTER('生产记录表','生产记录表'[车间]=EARLIER('生产记录表'[车间])),'生产记录表'[生产时间])
接下来,同样是新建一列生产时间,每行都是原来的生产时间在对应车间内的前一条记录的生产时间。表达式为:
生产时间2 = SUMX(FILTER('生产记录表','生产记录表'[车间]=EARLIER('生产记录表'[车间])&&'生产记录表'[序号2]=EARLIER('生产记录表'[序号2])+1),'生产记录表'[生产时间])
该表达式相对于‘生产时间1’多了一个限制条件,即相同车间的限制。
接下来,同样使用DATEDIFF函数计算同车间相邻两条记录的时间差:
时间差2 = DATEDIFF('生产记录表'[生产时间2],'生产记录表'[生产时间],SECOND)
稍后我们来作图分析时间差的分布。
每个员工生产两件产品的时间间隔
延续之前的思路,我们新建一列序号列,这次排序的条件是相同车间的相同员工,这里我们只贴出表达式,相信大家已经有一定的理解了。
序号3 = RANKX(FILTER('生产记录表','生产记录表'[车间]=EARLIER('生产记录表'[车间])&&'生产记录表'[员工编号]=EARLIER('生产记录表'[员工编号])),'生产记录表'[生产时间])
接下来同样是新建一列生产时间,只不过这次的限制条件是相同车间的同一名员工,
生产时间3 = SUMX(FILTER('生产记录表','生产记录表'[车间]=EARLIER('生产记录表'[车间])&&'生产记录表'[员工编号]=EARLIER('生产记录表'[员工编号])&&'生产记录表'[序号3]=EARLIER('生产记录表'[序号3])+1),'生产记录表'[生产时间])
之后用DATEDIFF函数计算两列时间的差:
时间差3 = DATEDIFF('生产记录表'[生产时间3],'生产记录表'[生产时间],SECOND)
至此我们得到了三列时间差,下面分析时间差的分布情况。我的想法是为时间差分组,感谢@叶婷的方法,我们可以通过如下方式来较为轻松的为多列数值分组。
首先,我们建立一个参数表,表中是各组名称和区间
然后,以‘时间差1’列为例:
分组1 = CALCULATE(VALUES('分组参数'[区间]),FILTER('分组参数','分组参数'[最小值]<='生产记录表'[时间差1]&&'分组参数'[最大值]>='生产记录表'[时间差1]))
然后根据得到的分组列我们做出如下的条形图:
经过类似操作我们得到各车间和各员工的生产时间间隔分布条形图:
嗯呐,今天的分享就到这里啦,能看到这里的都是真爱呀,么么哒bye ~
*Power Pivot工坊原创文章,转载请注明出处。
延伸阅读:
工坊实验室之CLOSINGBALANCE家族
参数表第三弹—最近N天的实现
工坊实验室之部分切片的实现
Power BI 也能做这样的组合图?
工坊实验室之失灵的筛选
工坊实验室之R脚本视觉对象
工坊实验室之数据标签的位置
工坊实验室之桑基图排序
工坊实验室之流向图展现
工坊实验室之使用瀑布图
一张图看懂微软PowerBI系列组件
一张图看懂Power BI 架构
当Power BI 遇上洪灾
当Power BI 遇上欧冠决赛
当Power BI遇上条形码
当Power BI遇上Visio
如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”
长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯。欢迎小伙伴儿们转发分享~