PowerBI页面级权限控制,分享一个更丝滑的方案

教育   2024-09-20 12:04   河南  

作者:石桥  Power BI资深用户,微软认证Power BI 数据分析师,服务多家500强医药企业,对医药行业分析有深度理解


实际制作可视化报告时,经常能碰到页面权限的需求:比如A用户只允许查看报告的第2页,B用户只能查看第6页等,如何用PowerBI实现该功能,PowerBI星球之前发过文章讲过如何利用RLS控制页面权限,参考:
Power BI页面级权限控制,其实只需要这3步
但是这个方案有些不便之处,比如只能通过首页跳转,然后重复返回首页和各个页面的过程,在使用上不是很友好。
今天分享一个更优的页面控制版本,利用按钮去实现页面间的跳转,而不是每次都在首页跳转。
这个版本总体上仍然是基于RLS的思路,如果你还不了解,可以先看看上面的链接文章。
下面通过一个简洁的例子,来看看具体设计步骤。

1. 配置权限表和角色
和之前的首页按钮设置一样,先配置好权限表:
并创建角色:

根据公司页面制作一组按钮,来分别跳转到每一页:

2. 设置按钮文本和操作属性
在每个按钮文本和操作属性上都配置一个度量值,比如对于进度分析按钮的文本,度量值如下:

这样就做到了,配置了权限的页面,用户就能看到这个按钮,并调整到该页面,而没有权限的用户,对应的位置就没有文本的显示。

但是这样配置完还有一个问题,如果有的用户的权限是总览和明细页。那么他的页面上总览和明细按钮就会离得很远,中间会空三个按钮的距离,如何让明细紧贴总览呢?
对于这个问题,我们来优化一下权限表:

加上一列页面排序,按员工分组给同一员工的不同页面排上序号,同时调整对应的度量值,比如该员工能查看的第二页的权限,按钮文本度量值改成:

2 =
CALCULATE ( 
    MAX ( '权限表'[页面权限] ), 
    FILTER ( '权限表', '权限表'[页面排序] = 2 ) 
)


相对于前面的度量值,这是一个思维转换,不再去判断他有没有这个权限,而是根据权限表给你的排序去直接给到对应的页面权限。这个页面排序=2的意思就是把相应的文本配置在第二个按钮上。
所以如上图,员工A的第二个按钮就会显示“团队分析”,而员工B的第二个按钮会显示“进度分析”。

这样就完成了有两页权限的人,无论是两页什么权限,看到的两个按钮都显示在第一和第二按钮位置。


3. 设置按钮填充色
最后一步,给对应的页面按钮上填充色,我们把功能配置完成之后还有一点瑕疵,就是背景色特别难上,换句话说,我们不能直观的通过按钮就看出我们现在所处的页面是在哪一页,因为所有按钮的颜色都是一样的,要如何去判断当前页面到底是第几个按钮所展示的页面呢?
我们需要判断三种情况,
1、用户有几个页面权限,没有权限的按钮要显示透明色;

2、用户当前页面展示的是不是这个按钮所对应的页面,如果是,需要高亮显示;

3、用户当前页面展示的是不是这个按钮所对应的页面,如果不是,显示按钮的形状。


这样对于每个页面的每个按钮都要判断,如果有5个页面,我们就需要写5*5=25个度量值,7个页面就要写7*7=49个度量值去配置按钮,去判断当下的按钮应该显示什么颜色,而且不同页面相同位置的颜色配置是不一样的判断,我们不能通过从统一页面复制粘贴的形式去完成开发,按钮颜色的设置变得相当繁琐。
有没有办法能简化这一切呢?经过几天的摸索思考后,想到了一个巧妙的方案。
如果我能直接获取当前页面的名称,就能把对页面的判断参数化,但是Powerbi没有这样的函数去获取页面名称,我想到了和员工按钮位置一样的解决思路,如果取不到,那就不取了,我直接赋予他一个。

添加一张配置表,该表不与其他表建立关系。


表里就放所有页面的名字。把这张表配在每个页面的页面筛选器上,告诉这个页面,他叫什么名字。

如此一来,页面的参数就能被取到了,第一个按钮的填充色度量值如下:

五个页面,就只需要5个度量值,而且每个页面的度量值都是相同的,可以批量复制粘贴这一排导航按钮进新的页面,简化了颜色的设置。从color1-color5分别配置到按钮的填充选项中,页面权限的功能,就开发完成了。


还留下一个可优化项,因为powerbi还是会有默认首页,所以每个人都需要给上总览的权限。如果有一天powerbi可以根据权限配置用户首页,或者有其他方案能解决默认首页的问题,就完成了真正的页面权限。


- 欢迎投稿 -

欢迎有干货、爱分享的星友来「PowerBI星球」投稿,题材不限,只要与Power BI相关、之前没有分享过的就可以;稿件入选后,不仅有稿费(200元左右),文章发布也会署上你的大名,让众多星友认识你~

有兴趣投稿的伙伴可添加微信具体沟通:




PowerBI星球的最新版内容合辑,值得你收藏学习:
「PowerBI星球」内容合集


如果你想深入学习Power BI,欢迎加入PowerBI星球学习社群,获取更多学习资源,和6k+ 深度学习者一起精进~

PowerBI星球
海量干货,帮你轻松上手 Power BI
 最新文章