小勤:上次的【人力资源HR-人员结构分析案例模板】里,学历没有做排序。
大海:一般来说,对于饼图或环形图,会以占比进行降序排序。不过,这里的学历本身的确无法按照高低进行排序。
小勤:那如果要按学历本身进行排序,该怎么办呢?
大海:如果只是满足学历排序很比较简单,做好辅助列,然后设置按列排序即可。但是,仔细想想,这一个小问题,其实可以用3种方法来实现,不同的方式,体现了不同的数据建模思路。
数据下载链接:https://t.zsxq.com/05UrZzjm2
- 1 -
直接增加自定义列
Step-01 在Power Query里,直接添加自定义列,得到与学历对应的学历编码列:
= if [学历]="文盲" then 0
else if [学历]="小学" then 1
else if [学历]="初中" then 2
else if [学历]="高中" then 3
else if [学历]="大专" then 4
else if [学历]="本科" then 5
else if [学历]="硕士" then 6
else if [学历]="博士" then 7
else if [学历]="博士后" then 8
else 9
Step-02 在Power BI界面,设置按列排序
- 2 -
建立单独学历编码表
合并查询到数据表中
编码表不加载到模型
Step-01 输入数据,得到学历编码对照表
Step-02 通过合并查询的方式,将学历编码匹配合并到员工信息表中
Step-03 取消学历编码表的加载
Step-04 在Power BI界面,设置按列排序
- 3 -
建立单独学历编码表
编码表加载到数据模型
建立表间关系使用
Step-01 按方法二的步骤先建立学历编码对照表
Step-02 在Power BI关系视图中,建立学历编码表和员工信息表的关系
Step-03 针对学历编码表(注意不是在员工信息表)中的学历设置按列排序
Step-04 注意,在图表中应用时,要使用学历编码表中的“学历”字段
小勤:对于方法一,添加自定义列是在Power Query中做的,能不能直接用DAX做?
大海:不可以的,因为你新建的列是完全根据原列建立的,当你设置按列排序时,一定会遇到以下循环依赖问题:
小勤:难怪说尽量通过Power Query整理数据/增加必要的列,DAX还是更适合后续模型中的动态计算。总的来说,每一种方法看起来都很简单,但是,这几种方法该用哪一种好呢?
大海:每种方法都有它的特点和优势,实际工作中根据需要选用。
小勤:那实际工作中,对于类似要对照码或还有其他属性分析的模型,一般建议用哪一种?
大海:实际工作中,我一般偏向于用第二种,通常来说,要做类似上面的特殊分析或展示的情况不多,所以,常规分析情况下,我们把这种简单对照维度,合并查询到业务数据表中,直接使用即可,而不加载该表,也能减少加载到Power BI模型的表太多,同时在模型中保留表(不加载),又可以加载出来,构建关系去实现特殊的需要。
本文分享自 Excel到PowerBI 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!