人生没有彩排
每一天都是现场直播

在PowerBI中进行人员轮换排班

人员轮换排班是企业管理中的一项基础但重要的工作,本篇文章将以模拟案例的形式来介绍如何在PowerBI中实现这一目的。

问题描述

某工厂小组有A、B、C、D、E、F、G七名员工,为平衡工作与生活,现在需要对他们在接下来30天的工作进行排班。排班规则为:一个班次包含四天,每次轮换两人,即班次为ABCD, CDEF, EFGA ,GABC…, 依此循环。

具体问题如下图所示:


本案例的初始数据如下:

员工表:

uid
a
b
c
d
e
f
g

若需其它辅助表等,可自行创建并建模。

解题要点

可以使用GENERATE函数与GENERATESERIES函数来对员工表进行复制追加,然后迭代每个班次的开头位置并使用窗口函数进行定位及取值,最后进行文本拼接与字符长度控制即可。

解决方案

首先,数据模型如下图所示:


然后,创建如下度量值:

排班结果 = 
VAR N = 30
VAR Delimited = " , "
RETURN
LEFT(
    CONCATENATEX(
        FILTER(GENERATESERIES(1,999,2),ISODD([Value])),
        CONCATENATEX(
            WINDOW(
                [Value],ABS,[Value]+3,ABS,
                GENERATE(GENERATESERIES(1,100),ALL('员工表'[uid])),
                ORDERBY([Value],ASC,'员工表'[uid])
            ),
            '员工表'[uid]
        ),
        Delimited
    ),
    N+LEN(Delimited)*INT(N/4)
)

然后创建一个矩阵,再将上面的度量值放入卡片图或形状图形的文本输入框中即可,如下图所示:

总结

以上方法仅供参考,若有更优雅的解决方案,欢迎留言讨论,或者加入我们的技术交流群,一起享受这种思维碰撞的快乐吧!

PBI/DAX技术交流群(QQ):344353627

赞(1) 打赏
版权声明:本文为夕枫的原创文章,著作权归作者所有,未经允许不得转载
文章名称:《在PowerBI中进行人员轮换排班》
文章链接:https://www.ximaple.com/posts/1163.html
订阅评论
提醒
guest
0 评论
最新
最久 最赞
内联反馈
查看所有评论

觉得文章有用的话就支持一下吧~

感谢您的打赏支持,我将持续输出有价值的内容!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册

Operation don't support