不通过行级安全性,又如何解决Power BI数据屏蔽
不通过行级安全性,我们又如何解决Power BI数据屏蔽这一现实问题呢?
到目前为止,我们都知道可以通过行级安全性方法限制对数据的访问。但是,我最近遇到的一个新的问题是:“销售员希望在销售报表看到彼此的销售信息,但是又不能看到其他人的名字!那我们如何在Power BI中做到这一点?”
以上操作与行级安全性方法有所不同。在这种情况下,我们希望用户看到其他人的信息,甚至知道他们的销售量,但是我们不希望他们看到他的名字。
这比行级安全性更像是数据屏蔽的一种解决方法。以下我们会通过这篇文章与大家分享这个方法。
数据关系
我使用的是带有两个表的非常简单的数据集;销售员工信息表和销售信息表;
这不是行级安全性
在这里,我重申一遍,这不是行级安全性。在这种情况下,我们显示了整个数据行。但是,我们对部分数据做了隐藏处理,因为它们是敏感列。
隐藏敏感列
采取这种方法的第一步是隐藏用户不能看到的列。例如; 用户名称、电子邮件、地址、电话号码等。
在我的这个例子中;我将下面的所有列都做了隐藏处理。
使用MaskedUserName列创建可视化
现在有了maskedUserName列,我们可以使用它来创建可视化。由于敏感信息列是隐藏的,因此用户无论如何都无法看到它们。
如图所示,当用户登录到报表时,他/她们不知道被屏蔽的用户是谁(如菠萝、草莓和大西瓜)。从用户的角度来看这些细节是完全隐藏的。但是,用户在不知道是谁的情况下却又可以看到他们的销售金额。
当前用户
到这,大家肯定想了解:怎么做到啊?现在,我们说下实现的具体的方法:通过使用UserPrincipalName函数的度量,我们可以轻松实现这一目标;
CurrentUser = if(
sum(SalesInfo[Number])&&
SELECTEDVALUE('SaleUserInfos'[Email])=USERPRINCIPALNAME(),
SELECTEDVALUE('SaleUserInfos'[Name]))
这意味着仅显示已登录用户的用户名。
你可以看到,当前我根据当前用户进行了一些颜色格式化,我做了表列的背景色;
BackgroundColor = if(not ISBLANK([CurrentUser]),"light green","light grey")
无需行级安全配置
到这里,你也可以发现,实现这个效果,我并没有通过行级安全性配置。而且不用创建任何角色,也无需将用户分配给这些角色。因为这不是行级安全性。但此方法只是从用户的角度隐藏敏感信息而已。
最佳实践
对于实现,我建议用合适的数据体系结构。在这种情况下,由于某些用户可能是可以使用Power BI Desktop创建报表的数据可视化工具,因此我建议你使用共享数据集的方式。如果你采用这种方法,即使用户Power BI Desktop也只能看到隐藏后的数据。
总结
数据屏蔽不是行级安全性。它只是通过我们用于一些安全逻辑仅仅来显示部分非敏感信息。
推荐阅读
马上报名 | "玩转数据,智启未来"Power BI Workshop与您相约618
技术交流
1.Power BI免费下载:http://www.yeacer.com/
Microsoft Power BI Desktop中文最新版:下载地址
2.欢迎加入的Power BI技术群,目前正在学习阶段,有兴趣的朋友可以一起学习讨论。
Power Data技术交流群:702966126 (验证注明:博客园Power BI)
更多精彩内容请关注微信公众号:悦策PowerBI
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载。