我的原始数据结构如下所示:
ID SecurityGroups_CLEAN EDIT_Drive.1 EDIT_Drive.2 READ_Drive.1 READ_Drive.2 DENY_Drive.1 DENY_Drive.2 DENY_Drive.3 Fullname_CLEAN
15 HighStaff L Drive null null null null null null Smith, John
17 Foreign_National null null null null L Drive M Drive Q Drive Smith, John
23 Domain Users U Drive 2 null L Drive Q Drive null null null Smith, John
经过一些转换,过滤,旋转,删除列等......我设法让它看起来像这样......
Fullname_CLEAN Drive Count Permissions
Smith, John L Drive 3 DENY_Drive.1
Smith, John L Drive 3 EDIT_Drive.1
Smith, John L Drive 3 READ_Drive.1
Smith, John M Drive 1 DENY_Drive.2
Smith, John Q Drive 2 DENY_Drive.3
Smith, John Q Drive 2 READ_Drive.2
Smith, John U Drive 2 1 EDIT_Drive.1
基本上,我需要应用以下逻辑来总结用户驱动器级别的权限。
- 如果用户属于对驱动器具有拒绝权限的安全组,则无论其他用户组是否授予他们对同一驱动器的读取或编辑权限,他们的权限级别都是拒绝。
- 如果用户属于对驱动器具有编辑权限的安全组,则无论其他用户组是否授予他们对同一驱动器的读取权限,他们的权限级别都是编辑。
- 如果用户属于对驱动器具有读取权限的安全组,则其权限级别为读取。
对于最终输出:
Fullname_CLEAN Drive Permissions
Smith, John L Drive Deny
Smith, John M Drive Deny
Smith, John Q Drive Deny
Smith, John U Drive 2 Edit
现在,我意识到,由于我的排序和纯 ABC 巧合,我可以在分组名称和驱动器号之后取“聚合列的最小值”,因为D eny 出现在 E dit 之前,而E dit 出现在R读取之前,这将反映我的条件。但是,我希望学习“正确”的方法来做到这一点。