Excel Power Pivot 和Power BI的功能其实是一模一样的
之所以选择BI是因为速度更快些,更重要的是可视化更加强大
基于员工花名册来计算离职率:
通常情况下,HR只能是依靠每个月的数据统计来计算当前月份的离职率。
因为,这里涉及两个时间序列:入职日期与离职日期。
要实现可以随意查询历史月份的离职率,这个仅依靠Excel用公式来实现,难度和复杂成都都很高。
而在Power BI 和Power Pivot中就要简单很多,因为在这里有专门用于计算时间的时间智能函数。
下面我们就来介绍一下这个模型:
第一步:准备日历表
在Excel中制作,或者在Power BI中制作都可以
我更倾向于用Power BI制作,使用CALENDAR函数,可以方便的调整日期的范围
Dimdate = CALENDAR("2016-1-1","2017-12-31")
这里的重点是
因为入职日期与离职日期都涉及跨年的数据统计,
只是用年和月来分析数据还是不方便。
第二步:建立关系
Power Pivot中要将日历表转变成日期表
Power BI用CALENDAR生成的就是日期表,不用特别声明
日历表的Date与入职日期为活动关系
日历表的Date与离职日期为非活动关系
第三步:计算离职率需要的相关度量值
1、RS累计人数
RS = CALCULATE(COUNT('入职资料'[员工编号]),FILTER(ALL(Dimdate),Dimdate[PeriodNum]<=MAX(Dimdate[PeriodNum])))
从第一个入职的员工开始的入职日期表里的所有员工数量,包括离职员工
2、LZ离职员工
LZ = CALCULATE(COUNT('入职资料'[员工编号]),FILTER('入职资料',not(ISBLANK([离职日期]))))
离职日期不为空的员工数量,这个离职员工没有和日期表关联
3、Term本月离职员工
Term = CALCULATE([LZ],USERELATIONSHIP('入职资料'[离职日期],Dimdate[Date]))
使用USERELATIONSHIP函数,激活日期表与离职日期的关系
4、AllTerm累计离职员工
AllTerm = CALCULATE([LZ],USERELATIONSHIP('入职资料'[离职日期],Dimdate[Date]),FILTER(ALL(Dimdate),Dimdate[PeriodNum]<=max(Dimdate[PeriodNum])))
累积离职员工数量
5、Active在职员工
Active = CALCULATE([RS]-[AllTerm])
在职员工=人数-累计离职员工
6、ActSp上月的在职员工数
ActSp = CALCULATE([Active],PREVIOUSMONTH(Dimdate[Date]))
就是Active的上个月的值
7、New新入职员工数
New = CALCULATE([RS]-CALCULATE([RS],PREVIOUSMONTH(Dimdate[Date])))
新入职员工数=人数-上个月的人数
8、PT离职率
PT = CALCULATE([Term]/([ActSp] [New]))
这里用的离职率公式是:
离职率=离职人数/(期初在职人数 入职人数)
Power BI中的可视化工作
直接引用这些度量值,就可以进行数据分析了。
,