打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
利用Power BI字段参数,实现列级别安全性

文/陆文捷

物流供应链优化分析师,Power BI爱好者

知乎:Beethovenist

LinkedIn主页:https://www.linkedin.com/in/jackson-lu-wen-jie-ba943224/

针对不同用户的数据查看权限,设置行级别安全性 (RLS) 是 Power BI 报告在企业应用场景下经常需要用到的特性;在去年 2 月份迭代中也增加了列级别安全性 (OLS) 的功能,可以借助外部插件 Tabular Editor 进行编辑,参考官方文档:

https://powerbi.microsoft.com/zh-cn/blog/object-level-security-ols-now-available-for-public-preview-in-power-bi-premium/


可是在实际应用中,如果用户对某些数据源的字段没有访问权限,那么就无法正常浏览报表中引用到相关数据的视觉对象,类似这样的报错:
上述方式虽然实现了列级别的数据安全性,但从用户体验角度实在说不上友好,并且视觉对象中一旦出现无浏览权限的数据,所有计算指标就都无法显示,不够灵活。

最近新增的字段参数这一重要功能可以克服上述问题,接下来以一个实例来看下如何实现~

以PowerBI星球的案例数据做个简单的模型如下,由产品维度表和订单事实表构成:


以收入、毛利度量值和产品维度表的产品名称新建字段参数

字段参数功能的具体用法请参考:Power BI字段参数介绍以及常见应用场景

收入和毛利的度量值公式引用字段均来自事实表:

毛利 = SUM ( '订单'[毛利] )

收入 = SUM ( '订单'[销售额] )

新建完成的字段参数表及其 DAX 公式代码:


新建表格视觉对象,用字段参数表的可见字段作为列即可展示相关数据:


此时再参考行级别安全性的设置方式(参考:利用Power BI行级安全性,限制用户访问权限),新建一个 Guest 角色,并结合字段参数表限制该角色不能方位字段参数表的“收入”数据:


其中 DAX 表达式为 :

[字段参数] = "产品名称" || [字段参数] = "收入"

回到报表页,选择以 Guest 的角色预览数据,此时表格中的收入一列就消失了,但是产品名称和收入数据依旧可见:

至此,利用字段参数功能生成的表,结合行级别安全性的设置,就十分灵活地实现了列级别安全性功能,用户也感知不到报表层面的报错信息,相比原生的 OLS 更为友好。

不过,这样的方法也有其代价,当报表的数据量比较大,会耗费较多的计算时间;本案例的列级别安全性条件较为简单,实际使用场景中会存在各种字段交替组合的情形,此时在设置角色权限时的 DAX 代码也相应变得复杂,部署使用前需要斟酌方案的灵活度、维护成本和用户体验。
参考文章:https://blog.crossjoin.co.uk/tag/row-level-security/
数据来源:后台发送关键字“PowerBI星球案例数据”获取
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
教你做数据分析17篇
酱酒颐和 自助式BI分析设计时的参数要求
PowerBI开发 第十三篇:增量刷新
PowerBI 实现不同角色看到内容不同支持动态权限管理
这样的数据分列也一键搞定!真是太Power了!
学会了这个办公技能,月薪不过万,就准备跳槽吧!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服