(2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图1

    原始数据如下:我们加入用数据透视表生成汽车费报销金额非常不友好,所以我们考虑用父子层级关系

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图2

    非使用父子层级关系利用数据透视表得到下图,非常不好:

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图3

    我们想弄成下面这种方式(非常直观),那该如何制作呢?

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图4

    原始数据如下:

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图5

    新增计算列

    员工层级:

    \=PATH(‘打车费记录’[姓名],’打车费记录’[经理])

    层级数:

    \=PATHLENGTH(‘打车费记录’[员工层级 1])

    层级一:

    \=PATHITEM(‘打车费记录’[员工层级 1],1)

    层级二:

    \=IF(PATHITEM(‘打车费记录’[员工层级 1],2)=BLANK(),’打车费记录’[级别一],PATHITEM(‘打车费记录’[员工层级 1],2))

    层级三:

    \=IF(PATHITEM(‘打车费记录’[员工层级 1],3)=BLANK(),’打车费记录’[级别二],PATHITEM(‘打车费记录’[员工层级 1],3))

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图6

    去到关系视图创建层级结构

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图7

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图8

    我们去数据透视表,发现三层都是自己,不太好看,优化一下

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图9

    建立一些辅助度量值,思路是透视的深度和员工层级数作对比

    是否被级别一筛选:=ISFILTERED(‘打车费记录’[级别一])

    是否被级别二筛选:=ISFILTERED(‘打车费记录’[级别二])

    是否被级别三筛选:=ISFILTERED(‘打车费记录’[级别三])

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图10

    透视深度:=[是否被级别一筛选]+[是否被级别二筛选]+[是否被级别三筛选]

    层级深度 的最大值:=MAX([层级深度])

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图11

    报销的打车费:=IF([数据透视表深度]>[员工结构深度]+1,BLANK(),SUM(‘打车费记录’[打车费]))

    报销的打车费为空的话,数据透视表不显示

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图12

    还有一个小问题就是袁雷下面无员工,不想让其显示

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图13

    新建计算列

    \=IF(COUNTAX(FILTER(‘打车费记录’,’打车费记录’[经理]=EARLIER(‘打车费记录’[姓名])),’打车费记录’[姓名])>0,1,0)

    新建度量值

    是否带员工 的总和:=SUM([是否带员工])

    最终打车报销金额:=if(‘打车费记录’[透视深度]>’打车费记录’[层级深度 的最大值]+1,blank(),if(‘打车费记录’[透视深度]=’打车费记录’[层级深度 的最大值]+1&&’打车费记录’[是否带员工 的总和]=0,blank(),sum(‘打车费记录’[打车费])))

    (2条消息) Power BI(三十)power pivot之使用父子层级_可乐联盟-CSDN博客 - 图14
    https://blog.csdn.net/LuYi_WeiLin/article/details/99662381