【问题标题】:How to resolve row level security performance impact如何解决行级安全性能影响
【发布时间】:2020-11-24 09:36:17
【问题描述】:

我有一个带有事实表和相关维度表的星型模式。

我拥有适用于事实表和维度表的行级安全性。重要的是最终用户不能看到维度表中不允许他们看到的值,并且许多度量基于事实表中的外键计算,因此这里需要安全性以确保结果一致。

这对性能的影响是巨大的,因为查询任何单个表的任何查询都需要根据 RLS 谓词过滤模型中的每个表并在返回结果之前进行连接,即使对于查询中未包含的表也是如此。

是否有任何已知的方法可以提高性能或允许过滤仅应用于查询中包含的表,而不是处理每个表/连接?

【问题讨论】:

    标签: ssas dax ssas-tabular azure-analysis-services


    【解决方案1】:

    我没有遇到您在使用 RLS 时遇到的问题,尽管我也从未尝试将 RLS 应用于事实表。

    理想情况下,您只能通过维度中的选择来访问事实表中的数据。当您的用户访问报表时,他们将只能看到满足 RLS 条件的维度记录,然后这些维度记录将通过模型中的物化关系过滤 Fact 表。由于 RLS 正在处理一个小得多的 Dimension 表,因此 RLS 过滤器不会花费很长时间,并且生成的对 Fact 表的 DAX 查询也将执行良好。

    通过将过滤器直接应用于您的事实表,您需要处理每个查询的事实表,而不是利用预处理和优化的关系。

    我认为解决您的问题的唯一方法是重新考虑您的设计,这样您就不需要将 RLS 应用于您的事实表,因为这绝对是个坏主意。

    【讨论】:

    • 当然,这很有意义。听起来我过于谨慎了。我会测试一下。
    猜你喜欢
    • 2013-02-03
    • 2014-10-16
    • 2020-11-15
    • 1970-01-01
    • 2014-11-05
    • 2020-05-06
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多