先来回顾下在上篇文章时留下的问题,一个公司内部有很多业务员,分别归属于不同人的经理,现在要求业务员只能看到自己的数据,但是经理可以看到下面所有业务员的数据。
我们先来分析下这个问题,这个问题其实就是传播链路的问题,借用百科的组织架构图来看可能会更清楚些,比如账务审计部所在的链路就是:公司总裁办>总经理>常务副总>财务审计部,他之前的所有组织都有应该有权限看到他下面所有的数据。如果我们再给这条传播链路中的每个角色一个唯一编号,比如上面的链路是1>2>3>4。
这个思路我们可以在PowerBI中应用,我们需要先构造一张组织架构表
其中层级为计算列,这里主要用到了PATH这个函数,详细用法见PATH – DAX Guide,公式如下:
层级 = PATH('权限控制'[业务员编码], '权限控制'[主管编码] )
接下来是角色权限的控制,我们只需要去控制权限控制表就好了。PATHCONTAINS的详细用法见PATHCONTAINS – DAX Guide
PATHCONTAINS (
'权限控制'[层级],
MAXX(
FILTER(
'权限控制',
'权限控制'[邮箱]= USERPRINCIPALNAME()
),
'权限控制'[主管编码]
)
)
相信看到效果后,代码已经不用解释了,上述代码作用很简单把包含当前查看者编码的所有记录都筛选出来。
我们在工作中遇到的实际情况肯定要比文章中的要复杂的多,有时因为模型的限制,我们写起起来可能要更复杂的多,但是遇到问题时不要怕,静下心来仔细想想怎么把那未知的问题转换为我们已知的问题,一步步拆解,可能就会变得相对来说容易些。
本篇文章来源于微信公众号: PowerBI木小桼