隐藏

Power BI 系列 - 权限设计 通用权限, 父子权限(导入方式)

发布:2024/9/25 21:10:53作者:管理员 来源:本站 浏览次数:55

代码下载 https://github.com/zengxinwen/PowerBI


视频下载  


链接:https://pan.baidu.com/s/1JbhCQMcfdbTYf-byKVPE7A

提取码:8ytz




1.具体步聚


1.创建权限表 ,在模型中设置关联


2.PowerBI 管理角色,并且设置限制的DAX表达式




2.通过权限


1.模型中,有 (用户收入信息, 部门表, 用户部门权限表 ,用户表)


收入信息






部门表






  用户部门权限表






用户表




模型的关系 (注意这里使两个方向并且在两个方向应用安全筛选器,都打上勾了)






2.选择POWER BI菜单栏,建模, 管理角色


表达式  '用户'[账号]=USERPRINCIPALNAME()


表达式的含就是,是否等于获得账号, 这个USERPRINCIPALNAME() 可以获得Power bi当前的邮箱。如果是power bi server 可以换成userName(),获得windows 账号






 


 3.进行测试








针对通过权限,还有一种设计方法,不需要用户表。


没有,用户表,没有在两个方向上应用筛选器。






表达式


'部门'[部门] =CALCULATE(VALUES('部门'[部门]),'权限'[账号]=USERPRINCIPALNAME())


表达式 ,查询当部门表当前行的部门ID 并且在权限表中当前账号的部门ID的里面。








2.父子权限设置


父子权限关系图如下:






1 在部门表中 创建父子路径字段, 如图所示 ,可以得到一个部门所属节点的完整情况。





路径 = PATH('部门'[部门],'部门'[父部门])


2.表达式







'部门'[部门] in<br>

  SELECTCOLUMNS (

                 Filter(

                        GENERATE( filter('权限','权限'[账号]=USERPRINCIPALNAME()) ,'部门'),

                        PATHCONTAINS('部门'[路径],'权限' [部门])

                       ),<br>   "部门",  '部门'[部门])




表达式分析。


1.GENERATE( 权限表等于当前用户, 部门表)   这个两个表进行cross join 得到新表


2.在新的基础中进行过滤,过滤条件是 PATHCONTAINS('部门'[路径],'权限' [部门])),"部门",  '部门'[部门])


就是当前账号,是不是在这个路径中能找到, 这样能能把所有含这个节点的路径都找到,即找到所属节点。


3. 在新表找到对应部门,然后用只在新表表中 部门字段


4.取出部门字段就 我们的所属部门及本部门, 使用 in 表达式。  




测试一下,我使用的我的账号, 我是最高级,应该可以看到所有的。如图所示