在Power BI中定义用户角色 - 动态角色法

使用固定角色分配方法创建角色组时需要定义数据过滤条件,而动态角色分配方法则不需要在此指定过滤条件,它是通过特定数据列来判断表单之间的关联关系从而对数据进行过滤。使用动态角色分配法需要有两个先决条件:

  • 首先,报表集中必须有一张表单包含一个用户列,该列数值具有唯一性,用来记录报表使用者用于登陆Power BI在线服务器的用户名。
  • 其次,这个表单当中还必须有一个数据列能与其他表单建立一对一或者多对一的关联关系,从而使得可以已表单中的某一用户名为基准,从其他表单中过滤出与其相关的所有数据组成一个子表单。

例如下图展示了两张数据表单,一张是学生成绩表,一张是老师信息。如果想实现特定班级的老师登录系统只能看到本班级学生的成绩,则可以利用两张表单中的Class列创建关联关系,然后使用动态角色分配方法来实现。
在这里插入图片描述
由于学生成绩表和老师信息表中的班级信息都包含重复信息,因此需要先创建一个中介表单Class,再将两张表单进行关联。
在这里插入图片描述

在将Class表单和Teach表单创建关系时“交叉筛选器方向”必须选择“两个”,同时还需勾选“在两个方向上应用安全筛选器”。

在这里插入图片描述

这样从Teacher表单出发,选中某一个教师ID后可以顺着关联关系到Class表单中确定班级信息,之后再从班级信息到All-Classes表单中可以看到该班级具体学生的考试成绩信息。确定好关联关系无误后回到数据或者报表视图页面,选择“建模”菜单栏下的“角色管理”选项,新建一个角色“Teacher”,从Teacher表单中选择ID列来创建过滤条件,使用的DAX表达式是[ID]= USERPRINCIPALNAME()。即根据登录Power BI在线服务上用户的邮箱地址来对其进行过滤。
在这里插入图片描述

Power BI一共提供了两个DAX函数用于动态角色配置方法,分别是USERNAME() 和USERPRINCIPALNAME()。

  • USERNAME()函数在Power BI桌面版会以“域名\用户名”或者“机器名\用户名”(非域环境登录用户)的形式返回登录用户信息。在Power BI在线服务器上,如果没有设置动态角色分配,USERNAME()函数会返回登录用户的GUID信息;如果配置了动态角色分配,则USERNAME()函数可以返回用户登陆的邮箱地址信息。
  • USERPRINCIPALNAME()在Power BI在线服务器上始终以“邮箱地址”的形式返回用户登录信息。在Power BI桌面版上,如果是域环境下登录的用户,则会以“用户名@域名”形式的邮箱地址显示该用户信息。如果是非域环境下的用户,则以“机器名\用户名”形式返回用回信息。

对于使用动态角色认证方式配置用户角色时,优先使用USERPRINCIPALNAME()函数。

要想验证动态角色配置是否正常工作,可以回到数据或者报表视图页面,选择“建模”菜单栏下的“以角色身份查看”选项。,选择“其他用户”以及“Teacher”角色,然后在“其他用户”配置项中输入教师的登录ID, 用来模拟该教师登录Power BI报表的情景。

在这里插入图片描述

注意:进行角色检验时除了勾选“其他用户”用来输入模拟报表使用者,还必须勾选一个角色项,例如本示例中的Teacher。否则,输入登录的模拟用户将没有任何权限来查看报表中的数据。

与固定角色分配类似,动态角色分配也可以在Power BI在线服务器上测试当前设定的角色是否可以正确的对数据进行过滤。但需要注意的是,在动态角色分配中,报表的创建者始终对报表有完全控制权限。这就意味着无论用来管理报表使用者的表单中是否包含报表创建者登录信息,其都可以查看报表中的全部数据。此外,通过创建关联关系的方式限定报表用户可见信息的方式也对报表创建值无效,当其登录Power BI在线服务器后永远可以看得表单中的全部完整信息。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值