汇总
字段映射器处理器可用于将一个事件记录方案或结构中的数据转换(或映射)到另一个事件记录方案或结构中。 字段映射器处理器有五个主要用途:
- 在将事件记录路由到添加或更新要素输出之前,将层次结构或多基数结构展平。
- 处理属性字段名称和/或大小写的必要更改。 例如,将 TrackID 映射至 track_id。
- 将感兴趣的字段选择性地映射到新字段,以简化事件记录。
- 向事件记录方案添加新属性字段,以允许其他处理器(例如字段丰富器(要素服务)/字段丰富器(文件))写入到现有字段而不是新字段。
- 执行显式数据类型转换,例如将字符串转换为长整数,反之亦然。
- 在将传入事件源字段值映射到目标字段时执行字段计算(类似于字段计算器处理器)。
添加到 GeoEvent Server 的所有事件数据应该具有关联的 GeoEvent 定义,其中 GeoEvent 定义用于定义属性字段名称、数据类型和整体数据结构。 字段映射器处理器可用于将一个 GeoEvent 定义映射到另一个 GeoEvent 定义。
示例
- 字段映射器处理器可用于处理属性字段名称和/或大小写的必要更改。 例如,可重新映射已添加到属性字段名称的数据(如 ReportedDateTime),以将数据值传输到名为 reported_dt 的属性字段。 当接收到的方案中的属性字段名称不符合后端 RDMS 要求,即字段名称全部大写或全部小写时,通常需要使用此处理器。
- 处理器可用于将感兴趣的字段选择性地映射到新字段,因此目标事件结构比源事件结构的属性字段少。 例如,如果将输入配置为根据接收到的坐标值构造几何,则可以使用字段映射器处理器在将数据路由到输出之前从事件记录结构中删除坐标值。 字段映射器处理器还可以通过删除客户的姓名和街道地址,而保留城市、州或其他常规信息的名称来对事件数据进行匿名处理。
- 处理器可用于将其他字段添加到事件结构。 这在使用字段丰富器(要素服务)处理器时非常有用,因为其允许此处理器写入现有字段,而不是新建字段。 在其他处理器之前使用该处理器可允许您将字段添加到事件结构中,从而允许下游处理器将数据写入新字段。
- 单个源字段文本框条目接受字段计算,例如字段计算器处理器。 这允许将多个字段值与内置函数结合使用,以创建复杂的值映射。 例如,可以使用公式 toInteger(replace(' kph',''))*0.6214 将字符串字段 speed 值“12.1 kph”转换为英里/小时。
- 处理器可用于执行显式数据类型转换,例如将字符串转换为长整型(如 “3201” 转换为 3201),以及将长整型转换为字符串(如 3201 转换为 “3201”)。 由于 GeoEvent Server 将日期值处理为以新纪元毫秒为单位的长整数,因此,可以将日期显式转换为长整数,但是不能使用字段映射器处理器将日期转换为字符串或将字符串转换为日期。 但是,可以使用字段映射器处理器中的 toString( ) 函数将日期转换为字符串。
- 处理器可用于展平多基数或层次结构的事件结构。 通常,展平操作需要在将事件记录路由到添加或更新要素输出之前完成。地理数据库中的要素记录不支持层次结构组或多基数数据值列表。 如下所示,三个数据值(pressure、temperature 和 humidity)分组在名为 data 的父元素下。 可以使用处理器来展平事件记录的层次结构,方法是映射 data 下分组的属性,以使其与属性 id、status 和 calibrated 一同显示。
- 当映射在组内、层次结构中组织的值时,请使用点 (.) 符号来访问嵌套字段。 例如,要映射分组 data 字段下嵌套的 pressure 字段,可将 data.pressure 映射到名为 pressure 的字段。
- 当映射在数组、列表或多基数结构内组织的值时,请使用诸如 C# 以及 Java 等编程语言中的通用索引符号。 例如,给定一个名为 observations 的值列表,要将列表中的第三个值映射到名为 third 新属性,则需要将 observations[2] 映射到名为 third 的字段。 在编程中,数组几乎总是从零开始,这意味着数组中第一个元素的索引为零。
- 有关详细信息,请参阅有关 GeoNet 的博客 JSON 数据结构 - 使用层次结构和多基数中的访问数据值部分,以了解层次结构和多基数数据的示例。
用法说明
- 配置字段映射器处理器时,请选择一个源 GeoEvent 定义和目标 GeoEvent 定义。 目标 GeoEvent 定义中的字段显示在右侧,可通过源 GeoEvent 定义中的下拉列表选择适当的映射字段。 系统将显示每个字段的数据类型,以帮助识别每个字段的适当映射。
- 某个实时处理阶段中事件记录的 GeoEvent 定义可能与已发布要素服务的方案不一致。 事件记录将需要由字段映射器处理器进行处理,以在 GeoEvent 服务能够更新要素服务中的要素前转换所有事件记录的方案,使其与目标要素的方案相匹配。 例如,许多实时数据源(尤其是提供通用 JSON 的数据源)经常提供的数据结构为以组或列表形式组织的具有多个值的数据。 此类数据结构与数据结构是平面的要素服务方案不一致,需要离散数据类型(日期、字符串、长整型等)。 处理器可用于映射来自层次结构和/或多基数数据结构的数据,以创建更简单的平面数据结构,例如从要素服务导入的 GeoEvent 定义。
- 可通过在文本框中键入内容来覆盖可用于源 GeoEvent 定义的下拉列表。 现在,可以在每个源字段选择文本框中使用与字段计算器处理器中使用的公式相同的公式。 通过提供源字段的区分大小写的名称,可以在公式中引用源字段。
- 如要在已发布的要素服务中更新要素,并且不想修改现有要素的一个或多个字段,那么在处理器中不映射这些字段,将导致在要素记录的未映射属性中写入空值。 为了不在处理器留下未映射字段,只需清除不应更新的字段。 有关详细信息,请参阅有关 GeoNet 的博客使用部分 GeoEvent 定义更新要素记录。
参数
参数 | 说明 |
---|---|
Name | 用于在 GeoEvent Manager 中引用的处理器的描述性名称。 |
处理器 | 所选处理器的名称。 |
源 GeoEvent 定义 | 将从中获取属性值 GeoEvent 定义的名称。 注:当映射在组内或层次结构中组织的值时,请使用点 (.) 符号来访问嵌套字段。 当映射在列表或多基数结构中组织的值时,请使用 C# 和 Java 等编程语言中通用的数组索引符号。 在使用公式计算目标字段的值时,使用与Expression字段计算器处理器中的 字段相同的注记。 |
目标 GeoEvent 定义 | 对于从源数据结构接收值的属性字段,其 GeoEvent 定义的名称。 |
注意事项和限制
- 如果字段映射器处理器无法完成数据类型转换,则映射字段中将写入空值。 例如,将数据类型为字符串的属性字段映射到数据类型为双精度的属性字段时。 处理器无法将文字字符串值 twelve 转换为数值,因此它会在目标字段中写入空值。
- 处理器对于其接收到的事件数据特别挑剔。 例如,假设处理器已配置为将与汽车 GeoEvent 定义相关的事件记录映射到由车辆 GeoEvent 定义描述的结构。 如果处理器接收到包含船只属性数据的事件记录,则它将假定下游的另一个处理器正在期待其数据结构与船只 GeoEvent 定义相匹配的事件记录,并会允许事件记录通过未经修改的处理器。
- 如果源 GeoEvent 定义和目标 GeoEvent 定义之间的字段映射不正确,处理器将不会删除或放弃事件记录。 事件记录将继续使用源 GeoEvent 定义方案进行处理,而目标 GeoEvent 定义将被忽略。 例如,如果目的是将源方案中名为 TrackID 的字段映射到目标方案中名为 track_id 的字段,但因输入错误将源字段指定为 TrackIDs,则处理器将不会映射任何字段。 相反,处理器将通过使用源 GeoEvent 定义的原始事件记录。 如果错误地指定了用于引用层次结构值的点或索引符号,也会如此。