我只是开始使用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
尝试以下模式:
=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])
)