Power BI 如何实现具有组织结构层级的RLS、及多条件RLS

具有组织层次结构Power BI的动态行级安全性
Remark:以下RLS基于username构建

1. username RLS一般做法

1)先构建基础数据表,如下:
(注:@gmail这儿,一定要换成自己组织的邮箱后缀。因为后续应用时,还需要在service端配置,而非组织内邮箱后缀的账户无法添加)


image.png

image.png

image.png

2) 新建username 度量值


image.png

3)新建角色
image.png

4)在Service端设置邮箱(可以先跳到步骤5测试,实际使用需要service端配置账号)
image.png

5)在desktop中测试看结果
image.png

image.png

2. 具有组织结构层级的话,RLS如何构建

需要用到path函数
path函数效果可参考:

https://www.jianshu.com/p/5b51a39976ce

思路是:用path将员工的层级结构列出来,在建立role时,只要层级里包含当前用户就能显示出来
1)构建表格


角色表

sales

2)为角色表新增一列path路径


image.png

3)新建角色
image.png

4)看结果
image.png

manager

name-b

3. 多条件情况下的RLS

sample

如果多筛选条件来自多个表格:


image.png

4. 有些指标希望是全局指标,而非当前用户的

1)这个时候没法用all函数,加载的数据只是当前用户的数据
2)解决方法一: 可以不使用RLS,自己用DAX构建RLS(因为RLS的本质其实用TRUE/False筛选表格)
eg.

Sales.role = CALCULATE( [销售 销售额] , FILTER( '权限表' , '权限表'[PowerBI账号] = [用户 当前用户] ) )

--[用户 当前用户]  = username()

缺点是,度量值如果太多,那么每一个都要这么写,太累了
3) 解决方法二:将涉及到全局指标的表格,复制一份出来,不做权限控制
缺点是数据冗余

5. RLS故障排除

image.png

6. 一个用户,多个角色:

image.jpeg

当一个用户被赋予多个角色时,是取并集。如上述截图,是返回了结果1并上结果2

报错排查:


image.png

在PQ里将空值替换成null


image.png
REFER TO:

https://mp.weixin.qq.com/s?__biz=MzI1MDA4MzcxMA==&mid=2650781832&idx=1&sn=c109316cab83d68c77926ccd66802712&chksm=f18cb899c6fb318ffa21d88dd8674eaac61dddf177fd189de09d94b38f58851c06ff705fd146&scene=21
https://radacad.com/dynamic-row-level-security-with-organizational-hierarchy-power-bi
https://docs.microsoft.com/en-us/power-bi/guidance/rls-guidance
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容