也没想好说点什么,就随便聊聊了。 这已经是随便谈一谈第三弹了,哈哈! 恰好想起来前几天的数据交流群里有人问数据匹配的问题,今天就以此为例,来聊一聊数据之间的融合。
我认为,数据之间最美的关系就是关联!通过关联,可以实现多源数据的融合! 关联可以有多种表现形式! 基于属性关联
这两个数据,就可以基于ID进行关联。没办法,俺就是喜欢吃烩面! 基于空间关联 可以基于属性,也可以基于空间像这样的点与面,可以直接根据空间关系进行彼此之间信息的关联!
通过这样的关联,可以让数据拥有更多维度的属性信息。 在接下来的内容中,将着重介绍如何基于属性进行关联
什么是强关联? 像上文我列出的烩面,如果可以通过ID直接进行关联,两张表进行关联的话,就类似于SQL的Join操作,两张有不同内容的表,可以基于ID直接关联到一起,经过这样的关联,数据表就有了更多的信息! 我们以FME为例,来演示下如何进行数据的关联,其中重点转换器是FeatureMerger!
通过上述操作,我给Sheet1挂接上了更多的属性,并且几何信息也挂接上了!实现了数据的融合!
有上面那种可以直接用来进行关联的数据,就有一些需要经过些许处理才能进行融合的数据。比如我某天遇到的问题,它长这样:
像这种A-B和B-A类型的数据,你直接关联的话,是肯定关联不起来的!这时候就需要使用一些特殊的处理来进行数据的融合了。那这种不能进行直接关联的数据,我把这种关系,称为:弱关联关系。 与强关联那种可以直接基于某一字段进行关联不同,弱关联的情况要复杂很多。每种不同情况,都要采取不同的处理方式。但大多数时候,我们可以使用模糊匹配的方式对弱关联数据进行关联!
关于模糊匹配,及其实现方式,可以参考这篇推送:如何进行模糊匹配 我也曾经做过一个模糊匹配的后台服务,感兴趣的可以看下这篇推送:模糊匹配后台
我认为模糊匹配在很多时候,结果都是不可预测的,模糊匹配得到什么结果,是个概率性问题。尤其在数据生产的过程中,少了交互式的验证,模糊匹配的准确度往往不能得到保证。强大如百度高德的api接口,也不能保证每次匹配的都是正确的结果。 就我经验而言,多数时候的模糊匹配,都可以通过改进生产工艺来达到类似的效果。举个例子:杭州市下城区有两个兰园:三塘兰园与绿城兰园,纯模糊匹配,无法确定是哪个兰园,必须再结合其他信息来进行辅助判断。而怎么结合,如何结合,这需要对整个生产工艺、流程进行改进!
模糊匹配有不足,但并不是说模糊匹配一无是处,恰恰相反,模糊匹配是非常有用的技术。生产工艺的改进与完善,需要长时间的尝试与积累,而模糊匹配是一种在没有更好的解决方案时依然能够提供最接近正确答案的一种技术。并且我认为,完善整个生产工艺,本身就应该包含对模糊匹配精度的提升!
我手动创建了两张sheet,来还原匹配场景!
数据中的ID列,有些完全一样,另外有些内容虽然一致,但顺序稍有不同。 针对这样的数据,如果想要实现两张表的融合,除了使用模糊匹配,还有更好的技术方案可以选择。
通过对数据的观察与分析,这种数据的融合,有多种方案,我以其中一种为例进行说明。 本次选取的软件为:FME,版本为:2019,小版本号:build19825。 实现思路: 1、对ID列进行拆分(可用正则,或者直接split,正则与split的区别可参考这篇推送:使用FME查找顺序码的漏编和重复 | 直播作业); 2、对列表进行排序(可用ListSorter转换器完成); 3、重新组织列表(使用ListConcatenator将列表进行连接); 4、数据融合(祭出FeatureMerger,融合数据); 模板运行动图:
源数据及结果展示: Sheet1:
Sheet2:
1与2融合后形成的Sheet:
融合后的数据,拥有了更多维度的属性! 至此,融合完成,齐活!