原文链接:
https://blog.safe.com/2019/01/change-detection-2019-fmeevangelist184/
最近我讨论了关于数据库的更新,提到有两个常见的场景。
一种是你收到更新日志——要更新的列表——将它们应用到你的控制数据库。这是简单的一种情况,因为你提前知道变化的内容以及需要更新的要素。
第二种更新是你收到一个完整的新数据集,没有任何提示告知哪些是新增的或更新的。这种情况就需要你进行变化检测。这之前,我们经常使用FME Hub转换器的一个叫做UpdataDetector的转换器。但是在2019中,我们对ChangeDetector转换器做了很好的更新升级,从现在开始,它应该成为你的首选转换器。
一、变化检测: 有什么新的功能?
在2018及之前的版本中,ChangeDetector转换器将“original”端口的数据集与“revised”端口的进行比较,然后将要素分别输出到Added,Deleted和Unchanged端口。
- Added: 在修订(revised端)数据集中存在,而原始数据集中不存在的记录
- Deleted: 在原始数据集中存在,而修订(revised)数据集中不存在的记录
- Unchanged: 修订(revised)数据集中与原始数据集中匹配的记录
但是,它无法识别更改的记录。如果一个记录在修订数据和原始数据中都存在,但是现在它的属性值不同,那么将被当作一个新的要素(从Added输出)。这使得执行“更新”(记录已经存在时,进行数据库更新)变得困难,因为很难判断某个要素是否是真正的新要素。
在2019中,这个转换器能够处理更新记录。新转换器的设计将更新的要素通过Updated输出端口输出:
所以这是非常重要的。它极大的拓宽了这个转换器的变化检测范围。
但是,存在原始要素与修订要素进行匹配时的问题。没有原始记录进行比较,FME无法判断修订要素是否被更新。这个通过关键属性值来完成,意味着2019中ChangeDetector具有新的参数: