【问题标题】:Dynamic DAX Security Filter Using Lookup Table with Multiple Values使用具有多个值的查找表的动态 DAX 安全过滤器
【发布时间】:2016-06-22 18:34:15
【问题描述】:

我正在将动态安全性应用于教育环境中的 SQL Server 表格模型。我有一个安全表,其中包含用户 ID 和用户应该有权访问的相关学校。如果用户拥有一所学校,我的 DAX 过滤器可以正常工作,但对于拥有不止一所学校的用户,我会收到一个多值错误(“提供了一个包含多个值的表,其中需要一个值。”)。我的LOOKUPVALUE() 函数导致了问题,我基本上是在尝试确定如何创建一个循环来比较每个用户的Enrollment[SchoolKey] 和每个SecurityTable[SchoolKey] 值。任何想法都非常感谢!

=
CONTAINS (
    'Enrollment',
    'Enrollment'[StudentKey], Student[StudentKey],
    'Enrollment'[SchoolKey], LOOKUPVALUE (
        SecurityTable[SchoolKey],
        SecurityTable[UserId], USERNAME ()
    )
)

【问题讨论】:

    标签: ssas dax tabular ssas-tabular


    【解决方案1】:

    我知道这个答案已经晚了,但你可以在 Enrollment 表上试试这个 DAX 过滤器:

    ='Enrollment'[SchoolKey]
        = LOOKUPVALUE (
            SecurityTable[SchoolKey],
            SecurityTable[UserId], USERNAME(),
            SecurityTable[SchoolKey], 'Enrollment'[SchoolKey]
        )
    

    这里,LOOKUPVALUE 中的第一个搜索条件会导致用户可以访问的所有行(学校),而第二个搜索条件进一步将结果集缩减为单行。

    您可以参考 MSDN 的详细示例https://msdn.microsoft.com/en-us/library/hh479759.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多