发布:2024/9/25 21:10:53作者:管理员 来源:本站 浏览次数:435
代码下载 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 表达式。
测试一下,我使用的我的账号, 我是最高级,应该可以看到所有的。如图所示
© Copyright 2014 - 2025 柏港建站平台 ejk5.com. 渝ICP备16000791号-4