Power BI提供了一个功能叫做行级别安全性 (RLS),该功能允许报表创建者设置一定的过滤条件来筛选Power BI表单中的数据,然后将这些筛选结果发送给特定的报表使用者来使用。对于这些报表使用者来说,他们只能看到符合过滤条件的相关数据,所有不符合过滤条件的数据都会被自动隐藏并不会参与可视化图表中的相关计算。这样就实现了依据不同报表使用角色来分类显示不同数据的需求。
行级别安全性有两种配置方法:固定角色分配和动态角色分配
固定角色分配指的是在Power BI Desktop上根据现有数据特征去配置一些角色组,之后在Power BI在线服务版中将报表使用者添加到不同的角色组内,以实现访问特定数据的需求。
在上面这个表单中,如果想以国家为基准设定用户角色,可以在管理角色窗口进行如下配置:
先在最左侧的“角色”栏当中创建一个新的角色,命名为AU Manager,之后在中间的“表”栏中选择需要当前角色进行管理的表单SalesInfo,之后在最右侧的“表筛选DAX表达式”中设定数据过滤条件。过滤条件的设定是可以通过选择表单名称旁边的三点(…)按钮来添加表单中的列去进行设定,或者手动输入所需使用的列名来设定。这里面的DAX表达式结果必须是能返回逻辑TRUE或者逻辑FALSE。常见的逻辑判断包括:
- = (等于)
- <>(不等于)
- && (和)
- || (或)
- IN (逻辑或条件,IN 后面可以设定数组,符合数组中任意一个数值即可返回TRUE结果)
针对角色设置完过滤条件之后即可将定义的角色组存储到Power BI Desktop当中。如果要查看设定的过滤条件是否正确,可以点击导航栏上的“以角色身份查看”按键。
选择刚刚创建的角色,然后点击“确定”后Power BI悔根据当前过滤条件对表单数据进行过滤,将不符合过滤条件的数据进行隐藏,以保证数据的私密性。
在Power BI表单模型中完成定义角色组后,需要将该报表发布到Power BI在线服务器上,这样才能将报表使用者加入到定义的角色组中以便限定其可视的数据范围。发布完成后,选择报表所在的工作区,在“数据集”子菜单中找到刚刚发布的报表数据集,然后点击数据集名称旁边的三点(…)按钮打开“安全性”页面。
在“行级别安全性”管理页面中可以看到之前添加的角色组,将所需用户添加到该角色组之后就可以限制其可见的数据范围。
如果想测试当前设定的角色是否可以正确的对数据进行过滤,也可以在“行级别安全性”旁边的三点(…)按钮,点击“以角色身份进行测试”即可。