• 具有NOT IN或NOT EQUAL规则的Power BI中的动态行级安全性


    ​具有NOT IN或NOT EQUAL规则的Power BI中的动态行级安全性当你应用动态行级安全性时,希望将条件设置为NOT EQUAL和NOT IN。在RLS的动态实现中,这可能会有些棘手,因为关系行为通常是相反的。在本文中,我们将讲解如何做到这一点。

    本文重点介绍一种不基于关系的模式。

     

    示例说明

    我们这里的示例模型包括两个表,一个表用于销售交易,另一个表用于销售地区国家。基于国家的模型设计如下:

    这将导致如下所示的可视化,每个可视化都有每个国家/地区的销售额:

    在此示例模型中,我们要应用行级安全角色,继续下面内容。

    行级安全要求

    我们有一个用户表,一个配置文件表,并且用户和配置文件表之间的关系是多对多的。我们还有一个名为SalesTerritoryCountry Except的表,其中包含角色不应该包含的国家/地区列表。这是该表中的示例数据,如下:

    用户,配置文件和用户配置文件表通过以下模型连接到该表,如下:

    User和Profile表的多对多关系意味着我们需要在Profile表和User表下应用RLS规则。但是,此要求还有一件事,继续下面内容。

    (NOT equal or Not in)规则

    在动态RLS模式中实现Except规则与正常情况有些不同。原因是Power BI中该关系的行为。Power BI中的关系意味着过滤,通过在RLS表和销售模式中的表之间创建关系,我们创建了一种过滤方式,因为我只希望包含这些值。

    如果要通过从表中选择一个值来使EXCLUE发生在另一个表中,则不应创建该关系。

    这就是为什么我们不应该在SalesTerritoryCountry Except表和DimSalesTerritory表之间创建关系,这也是此模式的不同部分。

    DAX过滤器代替关系

    如果我们不使用关系来应用过滤器,则意味着我们需要使用DAX来过滤值。标准将是过滤所有内容,但要过滤来自RLS表的值。如下Power BI中的角色定义将包括以下三个过滤器:

    User表上的过滤器,用于获取当前用户的数据,如下:

    Profile表上的另一个过滤器,因为该表没有被多对多方案的单向关系过滤,如下:

    DimSalesTerritory表上的最后一个过滤器,以实现EXCEPT规则,如下:

    上面的DAX表达式是实现过滤器的方法之一。概括地说,这描述了最后一个表达式中发生的事情:

    • vProfileIds:这是一个表变量,包括该用户有权访问的所有配置文件ID。

    • vCountryExcept:这是一个表变量,其中包含所有国家/地区的列表,该列表由上一个变量的配置文件过滤。这些国家不包括在内。

    • 返回值是所有不在上一个变量中的国家。

    用角色身份查看报表

    操作如下:

    查看结果如下:

    以上图中所看到的,我的用户(LAPTOP-V7EE3MD9yeacer)有权访问两个配置文件,并且基于该配置文件,这三个国家/地区被过滤掉了。

    小结一下

    以上操作就是如何连接表以及如何使用适当的DAX过滤器在最佳模型上工作以获得所需的内容输出;以及和大家介绍了排除值的常见动态RLS模式。

    推荐阅读

    Power BI + Azure Synapse,打造出色分析体验!

    利用好这3个隐藏技巧,Power BI 开发体验更丝滑

    Power BI数据流——新图表视图

    Power BI 11月功能更新 —— 视频上线

    如何自动播放 Power BI 移动应用的幻灯片

    技术交流

    1.Power BI免费下载:http://www.yeacer.com/

        Microsoft Power BI Desktop中文最新版:下载地址

    2.欢迎加入的Power BI技术群,目前正在学习阶段,有兴趣的朋友可以一起学习讨论。 

       Power Data技术交流群:702966126 (验证注明:博客园Power BI) 

       更多精彩内容请关注微信公众号:悦策PowerBI          


    如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载。
  • 相关阅读:
    [Flex] 组件Tree系列 —— 将数组作为dataProvider
    [Flex] 组件Tree系列 —— 运用openItems获取打开节点
    [Flex] 组件Tree系列 —— 支持CheckBox组件
    [Flex] 组件Tree系列 —— 阻止用户点击选中Tree中分支节点
    [Flex] 组件Tree系列 —— 阻止用户点击选中Tree中任何节点
    [Flex] 组件Tree系列 —— 实现右键拓展功能
    [Flex] 组件Tree系列 —— 打开和关闭节点
    [Flex] 组件Tree系列 —— 运用variableRowHeight和wordWrap设置可变行高
    [Flex] 组件Tree系列 —— 作为PopUpButton的弹出菜单
    [ActionScript3.0] 使用FileReferenceList处理多个文件上载
  • 原文地址:https://www.cnblogs.com/yeacer/p/14072951.html
Copyright © 2020-2023  润新知