用户权限数据转换为用户组列表(2/3) - Power Query

29 篇文章 6 订阅
6 篇文章 0 订阅

实例需求:如下是AD用户的列表,每个用户拥有该应用程序的只读或读写权限,现在需要创建新的AD用户组,并根据用户当前的权限,将这些用户添加到相应的组中。

当前数据集:

SafeUserNameRead permissionsRW permissions
Safe1User1YesYes
Safe1User2YesNo
Safe1User3YesYes
Safe1User4YesNo
Safe2User1YesYes
Safe2User2YesNo
Safe2User3YesYes
Safe2User4YesNo

整理后输出数据集:

SafeADGroup Userlist
Safe1Safe1-ReadGroupUser1,User2,User3,User4
Safe1Safe1-RWGroupUser1,User3
Safe2Safe2-ReadGroupUser1,User2,User3,User4
Safe2Safe2-RWGroupUser1,User3
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    AddedRG = Table.AddColumn(Source, "ReadGroup", each if [Read permissions] = "Yes" then [UserName] else null),
    AddedRWG = Table.AddColumn(AddedRG, "RWGroup", each if [RW permissions] = "Yes" then [UserName] else null),
    RemovedColumns = Table.RemoveColumns(AddedRWG,{"UserName", "Read permissions", "RW permissions"}),
    GroupedRG = Table.Group(RemovedColumns, {"Safe"}, {{"UserList", each Text.Combine([ReadGroup], ","), type text}}),
    GroupedRGCol =  Table.AddColumn(GroupedRG, "AD Group", each [Safe] & "-ReadGroup"),
    GroupedRWG = Table.Group(RemovedColumns, {"Safe"}, {{"UserList", each Text.Combine([RWGroup], ","), type text}}),
    GroupedRWGCol =  Table.AddColumn(GroupedRWG, "AD Group", each [Safe] & "-RWGroup"),
    AppendedTable = Table.Combine({GroupedRGCol, GroupedRWGCol}),
    Output = Table.ReorderColumns(AppendedTable,{"Safe", "AD Group", "UserList"})
in
    Output

【代码解析】
第2行代码加载Excel表Table1作为源数据。
第3行代码基于读取权限添加新列ReadGroup,用户名赋值,否则为空。
第4行代码基于写权限添加新列RWGroup,用户名赋值,否则为空。
第5行代码删除不需要的原始数据列。
第6行代码基于Safe列分组,生成读取权限用户列表。
第7行代码添加新列作为读取权限用户组名称。
第8行代码基于Safe列分组,生成写权限用户列表。
第9行代码添加新列作为写权限用户组名称。
第10行代码合并读取权限和写权限两个表。
第11行代码重新排列列顺序。
第13行代码输出最后的结果表。


小结:
可以利用Power Query的表处理能力,同样实现按权限分组的转换需求,使用Group和Combine可以方便地进行分组和合并。


相关系列博文链接:

用户权限数据转换为用户组列表(1/3) - VBA
用户权限数据转换为用户组列表(2/3) - Power Query
用户权限数据转换为用户组列表(3/3) - Excel PY公式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值