作者:石桥 Power BI资深用户,微软认证Power BI 数据分析师,服务多家500强医药企业,对医药行业分析有深度理解
实际制作可视化报告时,经常能碰到页面权限的需求:比如A用户只允许查看报告的第2页,B用户只能查看第6页等,如何用PowerBI实现该功能,PowerBI星球之前发过文章讲过如何利用RLS控制页面权限,参考:但是这个方案有些不便之处,比如只能通过首页跳转,然后重复返回首页和各个页面的过程,在使用上不是很友好。今天分享一个更优的页面控制版本,利用按钮去实现页面间的跳转,而不是每次都在首页跳转。这个版本总体上仍然是基于RLS的思路,如果你还不了解,可以先看看上面的链接文章。在每个按钮文本和操作属性上都配置一个度量值,比如对于进度分析按钮的文本,度量值如下:这样就做到了,配置了权限的页面,用户就能看到这个按钮,并调整到该页面,而没有权限的用户,对应的位置就没有文本的显示。但是这样配置完还有一个问题,如果有的用户的权限是总览和明细页。那么他的页面上总览和明细按钮就会离得很远,中间会空三个按钮的距离,如何让明细紧贴总览呢?加上一列页面排序,按员工分组给同一员工的不同页面排上序号,同时调整对应的度量值,比如该员工能查看的第二页的权限,按钮文本度量值改成: FILTER ( '权限表', '权限表'[页面排序] = 2 )
相对于前面的度量值,这是一个思维转换,不再去判断他有没有这个权限,而是根据权限表给你的排序去直接给到对应的页面权限。这个页面排序=2的意思就是把相应的文本配置在第二个按钮上。所以如上图,员工A的第二个按钮就会显示“团队分析”,而员工B的第二个按钮会显示“进度分析”。这样就完成了有两页权限的人,无论是两页什么权限,看到的两个按钮都显示在第一和第二按钮位置。最后一步,给对应的页面按钮上填充色,我们把功能配置完成之后还有一点瑕疵,就是背景色特别难上,换句话说,我们不能直观的通过按钮就看出我们现在所处的页面是在哪一页,因为所有按钮的颜色都是一样的,要如何去判断当前页面到底是第几个按钮所展示的页面呢?1、用户有几个页面权限,没有权限的按钮要显示透明色;2、用户当前页面展示的是不是这个按钮所对应的页面,如果是,需要高亮显示;3、用户当前页面展示的是不是这个按钮所对应的页面,如果不是,显示按钮的形状。这样对于每个页面的每个按钮都要判断,如果有5个页面,我们就需要写5*5=25个度量值,7个页面就要写7*7=49个度量值去配置按钮,去判断当下的按钮应该显示什么颜色,而且不同页面相同位置的颜色配置是不一样的判断,我们不能通过从统一页面复制粘贴的形式去完成开发,按钮颜色的设置变得相当繁琐。有没有办法能简化这一切呢?经过几天的摸索思考后,想到了一个巧妙的方案。如果我能直接获取当前页面的名称,就能把对页面的判断参数化,但是Powerbi没有这样的函数去获取页面名称,我想到了和员工按钮位置一样的解决思路,如果取不到,那就不取了,我直接赋予他一个。表里就放所有页面的名字。把这张表配在每个页面的页面筛选器上,告诉这个页面,他叫什么名字。如此一来,页面的参数就能被取到了,第一个按钮的填充色度量值如下:五个页面,就只需要5个度量值,而且每个页面的度量值都是相同的,可以批量复制粘贴这一排导航按钮进新的页面,简化了颜色的设置。从color1-color5分别配置到按钮的填充选项中,页面权限的功能,就开发完成了。还留下一个可优化项,因为powerbi还是会有默认首页,所以每个人都需要给上总览的权限。如果有一天powerbi可以根据权限配置用户首页,或者有其他方案能解决默认首页的问题,就完成了真正的页面权限。
- 欢迎投稿 -
欢迎有干货、爱分享的星友来「PowerBI星球」投稿,题材不限,只要与Power BI相关、之前没有分享过的就可以;稿件入选后,不仅有稿费(200元左右),文章发布也会署上你的大名,让众多星友认识你~
PowerBI星球的最新版内容合辑,值得你收藏学习: