我正在尝试显示系统中违反规则的用户列表。 我正在处理的数据的结构如下:
TABLE_1:
USER | PRIVILEGE
A | 1
A | 2
A | 3
B | 1
B | 3
C | 2
C | 3
C | 4
TABLE_2:
RULE_ID | PRIVILEGE_1 | PRIVILEGE_2
1 | 1 | 3
2 | 2 | 3
目标是从TABLE_2中查找同时拥有PRIVILEGE_1和PRIVILEGE_2的用户,并将它们返回到带有“ USER”和“ RULE_ID”列的新表中,以显示他们违反了哪些规则。例如...
TABLE_3:
USER | RULE_ID
A | 1
A | 2
B | 1
C | 2
尝试过滤和查找值,但尚未找到解决方案。任何帮助表示赞赏!
答案 0 :(得分:0)
好的,这就是我对您的要求的解释:所有“规则”都由两个特权组成。查找与规则中的两个特权都关联的所有用户。
我使用Power Query解决了这个问题。
我使用了示例数据(我将Table1命名为“ User”,将Table2命名为“ Rule”),并创建了结果表User_Rule。这是来自高级编辑器的最终M查询。
let
Source = Rule,
#"Merged Queries" = Table.NestedJoin(Source, {"PRIVILEGE_1"}, User, {"PRIVILEGE"}, "User", JoinKind.LeftOuter),
#"Expanded User" = Table.ExpandTableColumn(#"Merged Queries", "User", {"USER"}, {"USER"}),
#"Reordered Columns" = Table.ReorderColumns(#"Expanded User",{"USER", "RULE_ID", "PRIVILEGE_1", "PRIVILEGE_2"}),
#"Merged Queries1" = Table.NestedJoin(#"Reordered Columns", {"PRIVILEGE_2", "USER"}, User, {"PRIVILEGE", "USER"}, "User", JoinKind.Inner),
#"Removed Columns" = Table.RemoveColumns(#"Merged Queries1",{"PRIVILEGE_1", "PRIVILEGE_2", "User"})
in
#"Removed Columns"
作为应用步骤:
希望有帮助!