西班牙
斯潘4
注:内容已更新为FME 2018.1,但视频仍显示2016.1,示例略有不同。
存储在数据库中的信息不可能保持不变。当这些更改的源是其他地方的数据集时,必须进行批量更新。
此示例执行更新的混合操作-首先是插入,然后是更新和删除操作-筛选数据以确定要执行的操作。
注意:虽然本例使用postgis数据库,但同样的技术也适用于其他数据库。
源数据是温哥华市公园的数据集:
瓷砖由地图查询
第一个任务是把市区的公园装进邮政地理信息系统。第二个任务是根据最近公园重建的信息更新该表。
1.创建数据库连接
如果尚未准备好数据库连接(如本教程中的其他几个练习中所使用的),则必须立即创建它。
启动FME工作台。从菜单栏中选择工具>FME选项,然后从选项列表中选择数据库连接。
如果已经有一个名为postgis training database的连接,则可以跳到步骤2。否则,请单击+按钮添加新连接:
在打开的对话框中,输入连接参数:
…然后单击“保存”以保存新连接。
2.生成工作区
使用“生成”选项(快捷键ctrl+g)生成新工作空间。使用以下参数:
单击“确定”关闭对话框并生成工作空间。
三。增加测试变压器
这个数据集包含了所有的公园特色,但我们只需要在市中心地区的公园。因此,在reader和writer特性类型对象之间的工作区中添加一个tester转换器:
确保tester:passed端口是连接到parks表的端口。
现在打开测试仪参数,并将其设置为测试邻域字段的值是否为“市区”
四。检查表参数
现在查看名为Parks的编写器要素类型的参数(单击齿轮图标)。
将表名更改为市中心公园并将表限定符设置为弗梅德莫是的。确保功能操作设置为插入表处理设置为删除并创建:
注:如果本教程的另一个用户已经创建了表,我们将在本练习中使用drop和create。否则,如果需要,我们可以使用create。
单击“确定”关闭对话框。
5个。运行工作区
现在保存工作区,然后运行它。1个9个功能将通过测试并写入数据库表:
检查输出以证明翻译正确。记下每个公园有多少棵树,并在地图上找到门户公园(稍后我们将利用这些信息)。
需要注意的是,如果重新运行工作区,每次都会删除并重新创建表。这意味着您不是添加数据,而是覆盖数据。如果源数据在任何时候发生了更改,那么这将是一个有效的过程。
6.过滤和更新数据
现在假设是六个月后。对公园进行了各种真实世界的更新。入口公园因重新发展而暂时关闭,并应移出会议桌。作为植树计划的一部分,所有其他公园都增加了100%的树木。
我们需要编辑工作区来更新数据,并定义应该执行哪些操作。
首先添加第二个测试变压器。设置它来测试PaarkName = Portal Park:
这将数据分成应该删除的记录(测试人员:通过)和需要更新的记录(测试人员:失败)。
第七章。更新树计数
将ExpressionEvaluator转换器连接到测试器:Failed port。将评估模式参数设置为覆盖现有属性,并选择TreeCount作为要更新的属性。
将算术表达式设置为@Value(TreeCount)*2(即使树木数目增加100%):
8个。设置更新类型
因为这里有多个混合操作(一些更新,一些删除),我们必须用其操作分别标记每个特性。
为每组过滤后的数据添加一个AttributeManager转换器,确保两者都连接到写入器特性类型:
检查连接到Tester:Passed的AttributeManager的参数。创建一个名为fme_db_operation的新属性,并给它一个DELETE值:
当您键入属性名和值时,FME将提供一个下拉式自动完成选项(如果您选择使用该选项)。
现在检查另一个AttributeManager的参数。这一次创建fme_db_operation,但给它一个更新值。
9号。SET WHERE子句
我们现在已经确定了要进行哪些操作。最后一步是告诉FME操作应该应用于数据库中的哪些特性。
再次打开Writer特性类型(表)的参数。
设置特征操作为fme_db_operation并确保将表处理设置为使用现有(FME应该在您更改功能操作时自动设置)。
对于Match Columns参数,选择字段派克ID:
这意味着parkid用于将传入的特性与表中的记录进行匹配。如果存在匹配,则执行fme_db_operation定义的操作。
10个。检查属性映射并运行工作区
在运行工作区之前进行最后一次检查。确保所有属性都正确地从AttributeManager转换映射到特性类型。如果没有连接,则会出现黄色的连接箭头(如果没有连接,则会出现红色的特征类型箭头):
这可以通过右键点击连接线和选择自动连接属性来简单地修复:
一次二者都属性集已被检查/映射,保存并重新运行工作区。再次检查结果。
这次应该有18个公园特色。所有的TreeCount属性都将是以前的两倍,门户公园应该不存在。
上述过程在PostGIS上进行了演示。然而,同样的过程也适用于大多数主要的数据库格式协调的是的。
如果您的数据库格式具有不协调的接口,则必须应用以下内容。
fme_where属性相当于在协调的GUI中设置匹配列参数。它的格式应该是[数据库字段][操作符][属性](即数据库字段应该放在前面)。操作符通常是一个equals操作(=)。
如果工作空间在更新中失败,那么修复错误并重新运行工作空间将比通常更困难,因为数据库现在已经部分更新了。
第一步是重置它。使用FME最简单的方法是将表参数更改回Insert(用于功能操作),Drop和Create(用于表处理)。然后重定向第一个测试器:通过端口直接返回到表中(绕过其他转换器):
确保正确地映射属性(必要时使用Auto Connect属性)并重新运行工作区。现在您将回到您开始应用更新的地方,并且可以将工作区更改回来(重新连接Tester到Tester并再次设置更新的表参数)。
要修复更新过程中的问题,请检查以下内容:
检查模式映射是很重要的,因为如果没有将传入属性映射到parkid,那么FME将不知道如何根据记录匹配特性以进行更新。
这里使用的数据来源于不列颠哥伦比亚省温哥华市(data.vancover.ca.温哥华)。它包含在开放政府许可下的信息-温哥华。
?2019安全亚搏在线软件公司|合法的