SSAS表格模型-使用DAX Lookupvalue创建角色来查找多个列

问题描述 投票:0回答:1

我只是开始使用DAX和表格格式建模,因此,希望能获得任何帮助/建议。

我已经创建了我的第一个模型,并且想要创建动态的安全角色。我已经在一个简单的规模上实现了这一点,如果我想对照过滤后的表检查我创建的安全表,它会检查列是否匹配-并仅返回那些匹配的列的结果。

例如:我的安全表称为ReportAccessPermissions该表当前包含域登录名,员工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个回答
0
投票

尝试以下模式:

=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])
)
© www.soinside.com 2019 - 2024. All rights reserved.