powerbi - Power Query (PowerBI) 解决多对多关系
问题描述
我有两个来自两个来源的联系人表,我需要关联:
ID | 电子邮件 | 姓 | 给定的名称 |
---|---|---|---|
0 | 愤怒@mad.com | 汤普森 | 苏珊 |
1 | 愤怒@mad.com | 汤普森 | 苏珊娜 |
2 | 高兴@mad.com | 麦克尼尔 | 乔治 |
3 | 快乐@sad.com | 汤普森 | 苏珊娜 |
代码 | 姓 | 给定的名称 | 开始日期 |
---|---|---|---|
65432 | 汤普森 | 苏珊 | 2020/01/01 |
65432 | 汤普森 | 2019/01/01 | |
65432 | 苏珊 | 2018/01/01 | |
65432 | 2017/01/01 | ||
65432 | 汤普森 | 苏珊娜 | 2016/01/01 |
45678 | 麦克尼尔 | 乔治 | 2020/06/20 |
45678 | 麦克尼尔 | 2019/06/20 | |
45678 | 乔治 | 2018/06/20 | |
45678 | 2017/06/20 | ||
25581 | 汤普森 | 苏珊娜 | 2020/01/01 |
我需要一种方法将表 1 中的 ID 链接到表 2 中的代码。但是,两个表之间唯一的共同点是员工的姓名,这是多对多的关系,我无法知道哪个员工是哪个。
这两个表都容易出现人为错误,其中同一个人出现多个姓名拼写或遗漏。但是,可以确定,在表 1 中,电子邮件地址对每个人都是唯一的(ID 0 和 1 是同一个人,因为他们使用相同的电子邮件地址),而在表 2 中,代码对每个人都是唯一的(所有代码为 65432 的条目都是同一个人,等等)
但是对于如何为每个表创建将它们链接在一起所需的唯一键,我完全不知所措。
我在想,对于表 1,可以制作一个由姓名 + 电子邮件地址组成的唯一键,但我被困在那里。
有任何想法吗?
解决方案
在表 1 中:您可以考虑按电子邮件分组,并保留其他列的 MIN/MAX 值。请记住,这将为您提供一些接近正确的结果,但并非每次都正确。但是这样一来,您最终将在每行中拥有 1 个电子邮件和 id/姓氏/名字。
在表 2 中:您可以在 Code 列上应用与上述相同的 Group by。这也将移动一些冗余数据(lofically)并以更好的方式为您提供数据。
在表 2 中:您还需要首先决定要保留哪个日期,每个代码的 MAX 还是 MIN?
最后,一个大问题,你想如何连接表 1 和表 2。唯一的选择是我可以看到 First name 和 Last name 列。但不能保证您可以完全加入,因为名称拼写存在人为错误。
推荐阅读
- reactjs - 反应,错误的父状态
- vue.js - 在使用 yarn 工作区和 lerna 为 vue 和 nuxt 设置前端 monorepo 时需要帮助
- image-processing - 从 USB 摄像头读取嵌入式人脸检测数据
- java - 需要在children实体中定义command handler和EventSourcingHandler
- mysql - 如何在 mysql tableTHEN 限制中对所有列进行排序
- java - 当我使用 Epsilon GC 时,我无法使用 Flight Recorder
- javascript - 使用 require 在另一个文件中访问 Node.js 中立即调用的函数表达式变量
- python - 如何根据空值在python中删除行
- javascript - Collapsible 或 Accordion 哪个更适合隐藏答案?
- php - 数组到字符串的转换 SOAP