【问题标题】:SSAS Tabular model - Creating a Role Using DAX Lookupvalue to lookup muliple columnsSSAS 表格模型 - 使用 DAX 查找值创建角色以查找多个列
【发布时间】:2020-01-24 10:53:53
【问题描述】:

我才刚刚开始使用 DAX 和表格建模,因此如果有任何帮助/建议,我将不胜感激。

我创建了我的第一个模型,并希望创建动态安全角色。 我已经在一个简单的范围内实现了这一点,如果我想检查我创建的安全表和我的过滤表,它会检查列是否匹配 - 并且只返回那些匹配的列的结果。

例如: 我的安全表称为 ReportAccessPermissions 该表当前包含域登录、emp id、销售区域、与该员工对齐的不同领导信息。它看起来像这样:

ID   Domain     Mgr1ID  Mgr2ID  MGr3ID  SalesRegion
1234 TEST\user1 2222    NULL    NULL    NULL    
1234 TEST\user1 NULL    5555    NULL    NULL    
1234 TEST\user1 NULL    NULL    NULL    APJ     
1234 TEST\user1 NULL    NULL    NULL    EMEA  

当我针对 EMP 表添加过滤器时 - 因为我只想过滤并返回具有相同销售区域的用户,所以我一直在使用它,我已经对此进行了测试,它似乎运行良好。

='EMPLOYEE'[SalesRegion]= LOOKUPVALUE ('ReportAccessPermmisions'[SalesRegion],'ReportAccessPermmisions'[DomainLogin],USERNAME(),'ReportAccessPermmisions'[SalesRegion],'EMPLOYEE'[SalesRegion])

但是,我还希望能够过滤领导信息。这样我就可以对照 emp 表检查销售区域和领导信息。是否可以通过一个 DAX 查询查找来做到这一点?还是我需要为每个列检查创建单独的角色?

理想情况下,我不希望为模型创建大量安全角色,因为我认为随着创建更多模型、添加用户和应用过滤器,对它的维护将是令人发指的。我希望是否可以创建一个角色,但让它检查此安全表中的不同列,然后才针对 emp 表返回相同的结果。

谢谢你, P

【问题讨论】:

    标签: sql sql-server ssas dax tabular


    【解决方案1】:

    尝试以下模式:

    =OR(
     'EMPLOYEE'[SalesRegion]= LOOKUPVALUE ('ReportAccessPermmisions'[SalesRegion],'ReportAccessPermmisions'[DomainLogin],USERNAME(),'ReportAccessPermmisions'[SalesRegion],'EMPLOYEE'[SalesRegion]),
     'EMPLOYEE'[Mgr1ID]= LOOKUPVALUE ('ReportAccessPermmisions'[Mgr1ID],'ReportAccessPermmisions'[DomainLogin],USERNAME(),'ReportAccessPermmisions'[Mgr1ID],'EMPLOYEE'[Mgr1ID])
    )
    

    【讨论】:

    • 感谢您的建议。我尝试使用它,如果我使用 OR 函数,它将带回销售区域和经理 1 的所有答案变化,所以我尝试使用 AND 函数,这似乎更好地限制了结果。但是,似乎我只能使用 2 个值来检查使用此检查,如果我有超过 2 列要检查,我怎样才能通过所有列?例如,对于上面的结果,我想检查并撤回所有销售区域为 APJ 和 EMEA 且经理 ID 1 为 2222,经理 ID 2 为 5555 的结果,我希望这是有道理的。
    • @Elaine 你可以嵌套 OR(OR(a,b),c)
    • 谢谢 Greg,我是 DAX 新手,所以这对我来说是很好的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    相关资源
    最近更新 更多