Path 函数:按人员架构核算销售额(上篇)

嗨~小伙伴们!
今天这篇文章将讨论一个按照人员组织结构来核算销售额的情景,也就是说,我们要计算的是,每个用户核算业绩的销售额等于其本身的实际销售额,加上人员架构中其全部下属的销售额。
此情景的模拟数据如下,
首先我们有一张销售数据明细(为了方便描述与理解,仅有两列数据:销售人员与销售额):

file

另外一张是,销售人员的人员架构表,有销售人员及对应的上级领导:

file

按照上述逻辑,结合我们的模拟数据,可以知道我们最终希望得到的结果是销售代表A~D的总销售额,即为他们各自的销售额,而组长H的销售额为组长H、销售代表A\B总和,组长J的销售总额为组长J、销售代表C\D总和,经理Z为全部人员总和。
讲到这里,不知道各位小粉丝儿,有没有解题思路呢?

目前我可以想到的解题思路是利用Path函数,先来获得完整的人员组织关系,因为现在的表中我们只能直观的看出来一层父子层级关系,但是却不是最最完整的层级关系,完整的层级关系应该是从销售代表A~D到经理Z的关系。

为了得到从每个人知道最上层的关系,我们要用到PATH函数:

Hapth = 
PATH('组织架构'[人员姓名],'组织架构'[上级领导])

第一个字段为子层级字段,第二个需要的字段是父层级的字段,只需要两个字段PATH函数就能帮我们获得由下至上的完整层级关系,得到的列如下:

file

这样就得到了每一个人所在由下至上的关系,销售代表A所在对应的Hpath列的内容是“经理Z|组长H|销售代表A”,即为销售代表A的上级是组长H,再上一级是经理Z,所以在计算经理Z,或者组长H的销售额时都需要把销售代表A的销售额包括进去。
以上就得到了完整的人员架构表,然后再利用公式:

总销售额 = IF(HASONEVALUE('组织架构'[人员姓名]),
CALCULATE(sum('销售记录'[销售金额]),
FILTER(ALL('销售记录'),'销售记录'[销售人员] in
SELECTCOLUMNS(
FILTER(ALL('组织架构'),PATHCONTAINS('组织架构'[Hapth],VALUES('组织架构'[人员姓名]))=TRUE)
,"人员姓名",'组织架构'[人员姓名]))))

这个公式的前半部分直到calculate(sum()是不难理解的,稍微有些难度的是SELECTCOLUMNS后面,这部分函数的意思是筛选出组织架构表中Hpath列中包括当前所选定的人员姓名的那部分表,然后把销售记录表中,销售人员在SELECTCOLUMNS后面公式所筛选出来表中的人员的销售额加总。单纯的翻译公式可能不便于大家理解。

下面我们就来举个例子,例如我们当前HASONEVALUE的人员姓名是“组长H”,那么上面的公式的意思就是,选出Hpath列中包括“组长H”的行,也就是对应人员姓名为销售代表A、销售代表B和组长H的三行,所以也就意味着,我们用公式选出了这三个人,然后使用Calculate,配合in函数,就能算出在销售记录表中销售人员为这三个人的销售额之和啦。也就是我们要求的组长H的总销售额。

让我们来拖个表验证一下结果:

file

以上,再见。
(下期,我们将来分解一下,上面公式中出现的两个函数in和PATHCONTAINS)
file
下期见



* PowerPivot工坊原创文章,转载请注明出处!


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。


长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

Power Pivot工坊