相关文章推荐
https://docs.microsoft.com/zh-cn/analysis-services/tabular-models/object-level-security?view=asallproducts-allversions&viewFallbackFrom=power-bi-premium-current

所以在 PowerBI列级权限介绍 时已提供过一种解决方案可以让我们同时使用RLS和OLS,把原始列隐藏,然后度量值里判断是否有权限,有权限就显示值,没有权限就返回空或其他。

今天,就来介绍另外一种解决方案,以供有权限的人可以通过原始列来查看数据而不是度量值,整体思路和先前的类似,还是把 OLS转换为RLS

基础度量如下

Sales Amt = SUM( 'FactInternetSales'[SalesAmount] )
Cost Amt = SUM( 'FactInternetSales'[TotalProductCost] )

现在需求如下,当角色权限只有US区域的时候,不能查看TotalProductCost列的值,当为AU的时候可以查看。

我们先创建两个角色,au和us,权限分别为对应对区域

进入到pq界面,为销售表添加一个索引列(如果有唯一值就不需要创建),然后再删除TotalProductCost列

复制一份销售表,重命名为FactInternetSalesCost, 只可留Index和Cost列,关闭并应用。

这里要注意,关系是一对多,单一。

修改Cost Amt的度量值

通过将销售表拆分为两张表,然后用RLS的方法来实际了OLS的需求,虽然这个需求又增加了模型中的表,并且还增加了存储占用,但有时候面对用户提的无理取闹的需求,我们却只能想办法去满足。就好像我遇到的最多的一个需求,允许用户将数据从PowerBI导出到Excel。所以有人戏称BI的本质就是连接Excel数据源,然后建立模型,然后导出数据到Excel。

当然了,遇到的最离谱的需求是要在PowerBI里直接修改原始数据,并将数据返回到数据库中,虽然是有这样的收费的第三方图表,通过Power Apps也可以实现,虽然BI是为业务服务的,但。。。。

最后,希望上海疫情快点过去吧,小区那么大,我想去走走。

本篇文章来源于微信公众号: PowerBI木小桼

 
推荐文章