PowerBI在权限管理上支持RLS(行级安全)和OLS(对象级安全),这种细致的权限控制为数据提供了更高级别的保护。尽管OLS存在诸多限制,尤其是在混合使用环境中,但官方文档中详细阐述了其具体限制,为使用者提供了清晰的指引。
在PowerBI的列级权限介绍中,我们已经介绍过一种巧妙的解决方案,即隐藏原始列并通过度量值来判断用户是否有权查看数据。这一方案确保了权限的灵活应用,无论用户使用的是RLS还是OLS。
今天,我们将继续探讨另一种解决方案。此方案允许拥有权限的用户通过直接访问原始列而非依赖度量值来查看数据。此方法的核心理念是将原本的OLS权限转换为更易于管理的RLS权限。
基础权限设置概述
在特定的业务场景下,如当用户角色权限仅限于US地区时,他们将无法查看TotalProductCost列的数据;而当用户角色为AU(澳大利亚)时,他们则可以自由查看。针对这样的需求,我们将采取如下操作。
我们将在系统中创建两个角色,一个是au角色,另一个是us角色,并分别为它们设置相应的区域权限。
进入pq(Power Query)界面,我们将为销售表添加一个索引列(若该列已有唯一值则无需创建),随后删除TotalProductCost列。
接着,我们将复制一份销售表,并将其重命名为FactInternetSalesCost。在此表中,我们仅保留Index和Cost列,并确保完成相关操作及保存。
关系建立与调整
关系建立是数据处理过程中的重要一步。在这里,我们需要注意建立的是一对多的单一关系。
当我们在us角色下查看数据时,虽然看不到cost的值,但系统并不会报错。这是因为在实际操作中,我们仍然依赖的是行级安全控制来实现的权限管理。
模型的拆分与扩展
通过将销售表拆分为两张表,并采用RLS的方法,我们实际上满足了OLS的需求。虽然这一过程增加了模型中的元素和存储空间的使用,但在面对用户提出的某些看似无理但实际业务需求时,我们仍需寻找合适的解决方案。
比如,最常见的需求之一就是允许用户将数据从PowerBI导出到Excel。这种需求反映了BI工作的本质:连接Excel数据源、建立模型并最终将数据导出到Excel。
愿上海的早日过去,让我们能够走出小区,重新感受那片广阔的天空和熟悉的小路。