powerbi - 基于用户的多次查找
问题描述
我正在尝试显示在系统中违反规则的用户列表。我正在处理的数据结构如下:
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
尝试过滤和查找值,但还没有找到解决方案。任何帮助表示赞赏!
解决方案
好的,这就是我对您的请求的解释:所有“规则”都由两个特权组成。在规则中查找与这两种权限相关联的所有用户。
我使用 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"
作为应用步骤:
- 创建 User_Rule 作为对 Rule 的引用
- 对 RULE.PRIVILEGE_1 和 USER.PRIVILEGE 上的用户执行合并查询。在这里使用左连接。
- 从合并表中展开“用户”列
- 重新排序列
- 对用户进行另一个合并查询。请注意,此联接在两个字段上,它是内部联接,而不是左联接。按住 [ctrl] 键可从合并查询对话框中选择多个字段。确保以相同的顺序选择字段(小数字 1 和 2 将出现在列标题中以指示顺序)。
- 删除不必要的字段。
希望能帮助到你!
推荐阅读
- java - 检查根目录下的文件是否以可移植方式命名
- c++ - C++ 是否保证 std::placeholders::_N 的最小数量?
- node.js - AWS Cloudwatch 警报问题
- c# - 关闭子页面后父页面中的Gridview不刷新 - ASP.NET WEB APP
- python - 尝试使用没有 null=True 或默认设置的外键迁移模型时出现 Django 错误
- android - Jetpack 撰写项目高度优先 - 文本换行内容和图像填充剩余空间
- google-apps-script - 尝试触发加载项时,Google 表格宏返回错误
- postgresql - postgresql groupby 计数日期之间的位置
- c++ - 分段错误(核心转储) - C++ 错误
- jenkins - 与 OKTA 集成时无法访问 jenkins 服务器