PowerBI应用RLS后的全局排名问题
RLS,行级别权限控制前面已经介绍过,相信大家已经很熟悉了,在应用RLS后,每个用户只能看到自己权限内的数据这是毋庸置疑的,可是,这往往也会带来一些问题,比如某个人只有上海的数据权限,但是他也需要看到全国的总完成情况,那应该怎么做呢?
这种时通常是新建一张全国数据的计算表,不受权限控制,然后不同权限的不同用户就都能看到全国的完成情况了。
那么,又有一种情况,排名呢?不同角色进来后看到的仍然是全国数据的排名,但看到不非权限下地区的具体数值。同样地可以通过写计算表来实现,但是今天来介绍另外一种方案。
先来看数据模型,模型比较简单,只有三张表
RLS,行级别权限控制前面已经介绍过,相信大家已经很熟悉了,在应用RLS后,每个用户只能看到自己权限内的数据这是毋庸置疑的,可是,这往往也会带来一些问题,比如某个人只有上海的数据权限,但是他也需要看到全国的总完成情况,那应该怎么做呢?
这种时通常是新建一张全国数据的计算表,不受权限控制,然后不同权限的不同用户就都能看到全国的完成情况了。
那么,又有一种情况,排名呢?不同角色进来后看到的仍然是全国数据的排名,但看到不非权限下地区的具体数值。同样地可以通过写计算表来实现,但是今天来介绍另外一种方案。
先来看数据模型,模型比较简单,只有三张表
基础度量如下
“`dax
Sales = SUM( ‘FactSales'[sales])
Rank by Province base =
RANKX( ALL( ‘DimProvince'[province] ), [Sales])
“`
新建一个角色
查看效果会发现只能查看河南的数据,又因为因能查看河南的数据,所以排名是1
为了实现我们想要的效果,我们需要做一些改变
去掉双向安全筛选
新增一个辅助列,前面模型其实已经加好
这时再来查看效果,仍然无法得到我们想要的结果,继续下一步操作
修改度量值,页面添加筛选器,这时我们就可以得到想要的结果了
Rank by Province =
RANKX(
ALL( 'DimProvince'[province] ),
CALCULATE( [Sales], ALL( 'DimUser'[index] ))
)
本篇文章来源于微信公众号: PowerBI木小桼