我才开始使用DAX和表格建模,因此希望得到任何可能的帮助/建议。
我已经创建了我的第一个模型,并希望创建动态安全角色。 我已经在一个简单的规模上实现了这个目标,如果我想根据过滤的表检查我创建的安全表,它会检查列是否匹配 - 并且只返回那些匹配的列的结果。
例如: 我的安全表称为 ReportAccessPermissions 此表当前包含与该员工一致的域登录名、emp ID、销售区域、不同领导信息。它看起来像这样:
ID Domain Mgr1ID Mgr2ID MGr3ID SalesRegion
1234 TESTuser1 2222 NULL NULL NULL
1234 TESTuser1 NULL 5555 NULL NULL
1234 TESTuser1 NULL NULL NULL APJ
1234 TESTuser1 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])
)