在 Power BI 中使用条件查询共享驱动器权限层次结构
Querying Shared Drive Permissions Hierarchy with Conditons in PowerBI
我原来的数据结构是这样的:
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 巧合,我可以在将名称和驱动器号分组后直接使用 "min of an aggregated column",因为 Deny 来了在 Edit 之前,在 Read 之前,这将反映我的情况。但是,我希望学习 "right" 方法。
就我个人而言,对于这种情况,我会将其留给 ABC 排序,因为有一组固定的输入,并且它们已经按要求排序。
如果您正在想象不同的场景或不同的输入,那么我会添加一个 Custom/Calculated 列,其中包含一个 "if ... then ... else if ..." 声明 returns 数字等价物,例如
= if [Permissions] = "Deny" then 0 else if [Permissions] = "Edit" then 1 else if [Permissions] = "Read" then 2 else 999
我原来的数据结构是这样的:
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 巧合,我可以在将名称和驱动器号分组后直接使用 "min of an aggregated column",因为 Deny 来了在 Edit 之前,在 Read 之前,这将反映我的情况。但是,我希望学习 "right" 方法。
就我个人而言,对于这种情况,我会将其留给 ABC 排序,因为有一组固定的输入,并且它们已经按要求排序。
如果您正在想象不同的场景或不同的输入,那么我会添加一个 Custom/Calculated 列,其中包含一个 "if ... then ... else if ..." 声明 returns 数字等价物,例如
= if [Permissions] = "Deny" then 0 else if [Permissions] = "Edit" then 1 else if [Permissions] = "Read" then 2 else 999