安全软件亚搏在线博客
作者:
爱尔兰马克

谷歌
获取博客新闻稿

交付通过饲料燃烧器

关于FMEγ1月31日,二千零一十九γ爱尔兰马克

upserts and dog walking:FME 2019中变化检测的新功能

我讨论了数据库更新最近,并提到有两个一般的场景。

一种方法是当您收到一个变更日志(要进行的更新列表)并将其应用到您的控制数据库时。这很简单,因为您提前知道哪些功能发生了变化,因此哪些功能需要更新。

第二种更新方法是当您收到一个全新的数据集时,没有新的或改变的迹象。为此你需要做的是变更检测.以前是一个名为更新检测器是常用的。但是在2019年,我们有了变换检测器变形金刚,从现在开始你应该去变形金刚…

变化检测:有什么新功能?

2018早些时候,changedetector transformer将“原始”数据集与“修订”版本进行了比较,并将这些特性分为added,删除,不变。

  • 补充:修订数据集中的记录不在原始数据集中
  • 删除:原始数据集中不在修订数据集中的记录
  • 不变:修订数据集中与原始数据集中的功能匹配的记录

然而,它做了什么 Do是识别已更改的记录。如果原始记录和修订记录都存在,但是它的一个属性现在是一个不同的值,然后,这算是一个新的(添加的)特性。这使得执行“upserts”(数据库更新,记录已经存在)变得困难,因为很难判断某个特性是否是真正的新特性。

2019,然而,变压器能够处理更新的记录。事实上,新的变压器设计通过更新的输出端口显示了这一点:

所以这是非常重要的。它极大地扩大了这种变压器的变化检测范围。

然而,有一个问题是将原始特征与其修改后的对应特征相匹配。FME无法决定修订记录是否已更新,没有可比较的原始记录。这是使用键属性值完成的,也就是说,2019年的变更检测器有新的参数来处理:

变化检测器变压器的差异有助于2019年的变化检测。

我们稍后将查看一个示例。现在只需注意参数对话框中有一个称为更新检测键属性的参数,通过它选择一个ID或键值。

不管怎样,如果这个功能听起来很熟悉,这可能是因为我们已经将它包含在一个名为更新检测器的FME集线器变压器中了…

更换FME集线器更新检测器

更新检测器是为了填补changedetector功能中的空白而创建的。从下载的数量来看,它是非常流行的变压器。但现在在FME集线器上已弃用:

更新检测器变压器用于变化检测,但现在,变化检测器是首选。

新的变化检测器不仅取代了这个集线器变压器,它在功能和性能上都超过了它。更新检测器仍将在现有工作区中工作,但是我们建议你换一个新的检测仪。

现在让我们来看一个新的changedetector如何工作的例子…

变更检测器示例

假设我有一个地址数据库:

此外,我还得到了一个新版本的数据。我现在必须确定哪些地址记录已经更改,以便将这些更改推送到数据库中。我只需为每个数据集添加一个读卡器,把它传递给一个变化检测器:

FME 2019中的变更检测

从这里我可以看到35条记录在原始数据集和修订数据集之间发生了变化,增加了2个新的。修订版中还缺少原始数据中的13条记录。大多数记录是不变的。让我们看看我使用的参数:

  1. globalid是更新检测密钥。这是告诉FME如何将原始数据中的记录与修订数据中的记录匹配的属性。
  2. 所选属性是我正在检查更改的属性。即其中两个记录具有匹配的globalid,检查这些属性是否存在差异。
  3. 此标志指示转换器还检查空间数据集中的几何图形。一些高级参数控制这些精确检查(见下文)。
  4. 此参数定义一个列表,其中存储发生的更改;例如,哪些属性值不同以及如何不同。

正如参数有点不同,所以输出可以是…

新的变化检测输出

因为changedetector transformer现在检查匹配项——但不一定是在每个属性上——原始的和修订的可能算作匹配项,但并非完全相同。例如,属性,和C是一场比赛,但是D是不同的。但是,这些功能仍然是匹配的,因为您没有选择D在选定的属性中。

要处理该场景,参数允许您输出匹配功能的一个或两个:

如果同时输出这两个功能,然后添加匹配ID属性,这样,您就可以确定哪些功能被算作匹配项。

此外,通过设置列表名称,输出特性记录原始和修订的差异。此记录(例如)有两个不同之处:

列表告诉我两个属性(ownernm1和ownernm2)被新值修改了,鉴于此列表:

…告诉我该功能的几何图形已修改。

而且,正如更新检测器所做的那样,这个转换器设置故障模式与后果分析属性。以下是删除记录的示例(在原始记录中,但不是修订版):

这意味着我可以简单地将特性传递给数据库编写器,指定功能操作(故障模式与后果分析)和匹配列(这里再次全球化)

…我的地址数据库会自动进行更新,添加物,必要时删除。

新的公差算法

您可能注意到一个高级几何参数矢量公差

尽管有这个名字,这和我之前讨论过的公差设置FME 2018。为什么这种容忍度不同?因为它不想找出两条线相交的地方,也不想调整现有的点。相反,它发现两个特征是否在公差范围内,使用一种叫做fr_chet距离.

fr_chet距离是利用两个特征之间的距离得出的两个空间特征(通常为“曲线”)相似性的度量。

常见而简单的解释是遛狗。比如说你牵着狗走在小路上。你走的是一条相对直线(红线,A下面)但是你的狗会左右移动,为了闻树(蓝线,b):

用弗雷切特距离检测几何变化

问题是,你们每个人走各自的路需要多长时间?在上图中,狗和步行者之间的最大间隙被标记出来。f.如果我的狗至少是f长度,这样我们就可以走各自的路,而不必互相推挤。

这个概念为变更检测提供了一个很好的解决方案。在FME术语中,如果原始和修订之间的fr_chet距离小于规定的公差值,则特征不变。

我们觉得这个算法比以前的方法有了改进。它适用于更多的几何图形,也允许在宽松的匹配模式下应用公差,以前是不可能的。

弗莱切特?哪一个?

如果您不了解计算几何,请随意跳过此部分。然而,对于你的鉴赏家来说, 距离,你会注意到这是一个真弗雷切特,不是离散fr_chet(仅计算顶点之间的距离)。还有一个弱弗雷切特当宽松几何匹配参数激活时,FME使用:

虚弱的fr_chet是指当你说步行者或狗被允许倒退他们的步伐时。在一个真正的fr_chet中,每个人都必须继续前进。

在这个例子中,遛狗者(A)一直沿着直线行走。狗一开始直着走B1)然后转向右边B2)他们仍在沿着自己的道路前进,但他们的发展方向不同:

在一个真正的fr_chet中,步行者不能逆转他们的路径来解释这个偏差。他们能做的最多的就是停在当前位置。例如,在这里,步行者通过在A1点停车等待来最小化导程长度,当狗沿着它们蜿蜒的路径行走时:

那,也许,这是一个比较容易被打破的地方。预先知道路径,计算氟利昂距离,然而,在现实生活中,不可能知道狗会走哪条路!

不管怎样,在一个虚弱的fr_chet,步行者可以改变路线。当狗从b1到b2开始前进时,步行者可以折回说A2,为了缩短fr_chet:

如果你不明白,你真的不应该担心。只需看看这两条路径,并记住,宽松的匹配选项意味着两个特性更可能被归类为匹配。

更多更改检测信息

上面的例子研究了新的变更检测行为。然而,在某些情况下,您可能希望执行与旧的changedetector相同的添加/删除/更改过程。即您不必查找修改过的记录。

如果是这样的话,然后只需将更新检测密钥参数保留为空:

然后将您的功能分配给插入或删除,根据它们是原始输入还是修订输入:

当然,如果你没有2019年,然后你仍然可以下载更新检测器。术语“更新检测器”现在只作为changedetector的别名出现在工作台中;通过FME集线器接入变压器,确保在接口中选中“显示已弃用”选项。

此外,这个匹配器变压器在2019年进行了一次小改造。它的参数对话框被刷新,得到了与变化检测器相同的公差参数和算法。

总结

所以这就是变化检测的发展方向。现在您已经阅读了这篇文章,当您升级到FME2019时,您不会惊讶地看到全新的changedetector对话框。

我相信这是一个非常有用的更新,我期待着使用它。哦,以防你在挣扎!以下是对犬斑差异图像的回答:

幸福快乐,