zoukankan      html  css  js  c++  java
  • 数据可视化之分析篇(十)Power BI应用:如何计算在职员工数量?

    https://zhuanlan.zhihu.com/p/128652582

    经常碰到的一类问题是,如何根据起止日期来计算某个时间点的数量,比如:

    • 已知合同的生效日期和到期日期,特定日期的有效合同有多少?
    • 已知店铺的开业日期和注销日期,截至目前正在运营的店铺有多少?
    • 已知员工的入职日期和离职日期,如何计算每个月底的在职员工数量?

    此类问题的解决思路类似,下面就以计算在职员工数量为例,看看如何利用PowerBI来处理。

    模拟数据如下,员工表中有员工姓名、入职日期和离职日期:

    实现步骤如下:

     

    1,建立数据模型

    因为要按时间点计算,所以建立一个单独的日期表是必要的。

    这里有同学会纠结,员工表中有两列日期,那么应该用哪个日期与日期表建立关系呢?这个看具体需求,就这个问题来说,完全可以不建立任何关系:

     

    2,创建度量值

    根据员工表,统计员工数量的逻辑很简单,比如计算6月30号的在职员工数量,就是入职日期小于等于6月30日,并且没有离职或者离职日期大于6月30日的所有员工。在度量值中,还应该考虑的是上下文是什么,因为我们是想求每个月底的数量,所以外部上下文就是月份,根据这个月份,找出该月最后一天,然后根据上面的逻辑比较就行了。这样的计算逻辑每个人都清楚,但是可能不知道如何用DAX来表达。

    度量值的写法如下:

     

    以上思路和计算逻辑都已体现在这个度量值中,并在代码中做了注释。

     

    3,展示计算结果

    将日期表中的月份和[在职员工数量]放入到矩阵中,就得出了每月底的员工数量:

     

    更进一步的,如果想计算某个时间段的平均每天在职人数,只需要在上述度量值的基础上,再写个平均度量值:

    平均在职人数 =
    AVERAGEX(
    VALUES('日期表'[日期]),
    [在职员工数量]
    )

    用日期做个切片器,输入时间段的起止日期,就可以快速计算出该时间段的平均每天人数:

     

     

    使用PowerBI解决问题的基本就是以上的步骤,把这个简单的例子搞明白了,这一类问题都会迎刃而解。

  • 相关阅读:
    Ansible工作架构和原理
    基于WSAAsyncSelect模型的两台计算机之间的通信
    基于Select模型通信程序的编写,编译和执行
    Windows API窗口绘图程序设计
    常用自动化运维工具
    简单的程序发布流程
    TCPIP协议编程:基于UDP协议的局域网聊天工具的研发
    Python 遗传算法实现字符串
    python3 井字棋 GUI
    Docker 容器的跨主机连接
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12936762.html
Copyright © 2011-2022 走看看