Skip To Content

Процессор Сопоставление полей

Краткая информация

Процессор Сопоставление полей может быть использован для перевода (или сопоставления) данных из одной схемы записи событий в другую схему записи событий или в структуру. Процессор Сопоставление полей имеет пять основных целей применения:

  • Выравнивание иерархических или многокомпонентных структур перед маршрутизацией записи события в выходные данные объекта добавления или обновления.
  • Выполнение необходимых изменений имен полей атрибутов и/или заглавных букв. Например, приведение названия TrackID к виду track_id.
  • Выборочное сопоставление интересующих полей с новыми полями для упрощения записи события.
  • Добавление новых полей атрибутов в схему записи события, позволяющую другим процессорам, таким как Обогащение поля (сервис объектов) / Обогащение поля (файл), выполнять запись в существующие поля, а не в новые.
  • Для выполнения отдельных преобразований типов данных, таких как string в long integer или наоборот.
  • Для выполнения вычислений полей (аналогично Процессору Калькулятора поля) при сопоставлении значений полей источника входящего события с полями назначения.

Все данные событий, поступающие в GeoEvent Server, должны иметь соответствующее определение GeoEvent, описывающее имена полей атрибутов, типы данных и общую структуру данных. Процессор Сопоставление полей может использоваться для сопоставления одного определения GeoEvent с другим.

Примеры

  • Процессор Сопоставление полей может применяться для выполнения необходимых изменений имен полей атрибутов и/или заглавных букв. Например, данные, полученные с именами атрибутивных полей, такими как ReportedDateTime, могут быть повторно сопоставлены для передачи значений данных в атрибутивное поле с именем reported_dt. Это часто необходимо, когда имена полей атрибутов в полученной схеме не соответствуют требованиям внутренней РСУБД, чтобы имена полей были либо все прописные, либо все строчные.
  • Процессор можно использовать для выборочного сопоставления интересующих полей с новыми полями, чтобы целевая структура событий имела меньше атрибутивных полей, чем исходная. Например, если вы настраиваете входные данные для построения геометрии из полученных значений координат, процессор сопоставления полей может использоваться для удаления значений координат из структуры записи события перед маршрутизацией данных в выходные данные. Он также может использоваться для анонимизации данных о событиях путем удаления имени и адреса клиента, сохраняя при этом название города, штата или другую общую информацию.
  • Процессор можно использовать для добавления дополнительных полей в структуру событий. Это полезно при использовании Процессора Обогащение поля (сервис объектов), поскольку он позволяет процессору писать в существующие поля, а не создавать новые. Использование процессора перед этими другими процессорами позволяет добавлять поля в структуру событий, чтобы процессоры, расположенные далее, могли записывать данные в новые поля.
  • Отдельные записи текстового исходного поля допускают вычисления полей, такие как Процессор Калькулятор поля. Это позволяет использовать несколько значений полей вместе со встроенными функциями для создания сложных сопоставлений значений. Например, значение строкового поля speed “12.1 kph” можно преобразовать в мили в час с помощью формулы toInteger(replace(' kph',''))*0.6214.
  • Процессор может использоваться для выполнения отдельных преобразований типов данных, таких как string в long (например, “3201” в 3201) и long в string (например, 3201 в “3201”). Поскольку GeoEvent Server обрабатывает значения дат в формате long integer, измеренные в миллисекундах эпохи, можно привести дату к формату long, но нельзя использовать процессор сопоставления полей для преобразования date в string или string в date. Вместо него используйте функцию toString( ) в процессоре Калькулятор поля, чтобы конвертировать данные из формата date в string.
  • Процессор может быть использован для выравнивания многокомпонентной или иерархической структуры событий. Обычно это делается перед маршрутизацией записей событий в выходные данные объектов добавления или обновления; записи объектов в базе геоданных не поддерживают иерархические группы или многокомпонентные списки значений данных. Например, ниже показан сценарий, в котором три значения данных (pressure, temperature и humidity) группируются под родительским элементом с именем data. Процессор можно использовать для выравнивания иерархии записей событий путем сопоставления атрибутов сгруппированных ниже данных data с одноранговыми данными, наряду с атрибутами id, status и calibrated.

    Пример иерархии записей событий, сглаженной с помощью Процессора Сопоставление полей

  • При сопоставлении значений, организованных внутри группы, иерархической структуры, используйте при записи точку (.) для доступа к вложенным полям. Например, чтобы отобразить поле pressure, вложенное под группирующим полем data, сопоставьте data.pressure с полем под именем pressure.

    Пример использования точки (.) для доступа к вложенным полям в свойствах Процессора Сопоставление полей

  • При сопоставлении значений, организованных в массиве или списке, или многокомпонентной структуре, используйте индексные обозначения, общие для таких языков программирования, как C# и Java. Например, при наличии списка значений с именем observations для сопоставления третьего значения из списка с новым атрибутом third необходимо сопоставить observations[2] с полем third. Массивы в программировании почти всегда основаны на нуле, то есть индекс первого элемента в массиве равен нулю.
  • Дополнительные сведения см. в разделе Accessing data values в JSON Data Structures - Working with Hierarchy and Multi-cardinality блога GeoNet для примеров иерархических и многокомпонентных данных.

Примечания по использованию

  • При настройке процессора Сопоставление полей выберите исходное определение GeoEvent и целевое определение GeoEvent. Поля из целевого определения GeoEvent появляются справа, с ниспадающими списками доступными из исходного определения GeoEvent, что позволяет вам выбрать нужные поля для сопоставления. Для каждого поля отображается тип данных, чтобы помочь идентифицировать соответствующие сопоставления для каждого поля.
  • Определение GeoEvent для записей событий на одном этапе обработки в реальном времени, может не быть согласованным со схемой опубликованного сервиса объектов. Запись события должна быть обработана процессором Сопоставление полей, чтобы согласовать схему каждой записи события со схемой целевых объектов перед тем, как сервис GeoEvent будет обновлять объекты в сервисе объектов. Например, многие каналы данных реального времени (особенно те, которые предоставляют общий JSON) часто предоставляют структуры данных с данными, организованными в виде групп или списков с несколькими значениями. Такие структуры данных не совпадают со схемами сервисов объектов, структуры данных которых являются плоскими и ожидают дискретных типов данных (date, string, long и так далее). Процессор может использоваться для отображения данных из иерархических и / или многокомпонентных структур данных для создания более простой, плоской структуры данных, такой как определение GeoEvent, импортированное из сервиса объектов.
  • Ниспадающий список, доступный для исходного определения GeoEvent, можно перезаписать, введя текст в текстовое поле. Формулы, идентичные тем, которые используются в Процессоре Калькулятора Поля, теперь можно использовать в каждом текстовом поле выбора исходного поля. Ссылка на исходное поле в формуле осуществляется путем указания имени исходного поля с учетом регистра.
  • Если вы обновляете объекты в опубликованном сервисе пространственных объектов и не хотите, чтобы одно или несколько полей существующих объектов были изменены, и оставляете эти поля несопоставленными в процессоре, то это приведет к записи нулевых значений в несопоставленные атрибуты записей объектов. Вместо того, чтобы оставлять несопоставленные поля в процессоре, просто удалите поля, которые не должны обновляться. Подробнее см. блог Using a partial GeoEvent Definition to update feature records в GeoNet.

Параметры

ПараметрОписание

Имя

Описательное имя процессора, используемое для справочной информации в GeoEvent Manager.

Процессор

Имя выбранного процессора.

Определение GeoEvent источника

Имя определения GeoEvent, из которого будут взяты значения атрибутов.

Примечание:

При сопоставлении значений, организованных внутри группы или иерархической структуры, используйте при записи точку (.) для доступа к вложенным полям. Используйте обозначения индексов массивов, общие для языков программирования, таких как C# и Java, при сопоставлении значений, организованных в виде списка или многокомпонентной структуры.

При использовании формул для вычисления значения целевого поля используйте ту же нотацию, которая используется для поля Expression в Процессоре Калькулятора Поля.

Целевое определение GeoEvent

Имя определения GeoEvent, атрибутивные поля которого будут получать значения из исходной структуры данных.

Советы и ограничения

  • Если процессор Сопоставление полей не сможет завершить преобразование типов данных, то в отображаемом поле будет записано нулевое значение. Примером может служить сопоставление атрибутивного с типом данных string, с атрибутивным полем, типом данных которого является double. Процессор не может преобразовать буквенное строковое значение двенадцать в числовое значение, поэтому он записывает нулевое значение в целевое поле.
  • Процессор выборочно относится к данным о событиях, которые он получает. Например, предположим, что процессор сконфигурирован для сопоставления записей событий, связанных с определением GeoEvent Car, со структурой, описанной определением GeoEvent Vehicle. Если процессор получает запись события с атрибутивными данными для судна, он будет считать, что другой процессор ожидает записи событий, структура данных которых соответствует определению GeoEvent Vessel, и позволит записи событий проходить через процессор без изменений.
  • Процессор не будет пропускать или очищать записи событий, если сопоставление полей между исходным и целевым определениями GeoEvent неверно. Записи событий будут по-прежнему обрабатываться с использованием исходной схемы определения GeoEvent, а целевое определение GeoEvent будет игнорироваться. Например, если предполагается сопоставить поле из исходной схемы с именем TrackID с полем в целевой схеме с именем track_id и сделать опечатку, чтобы исходное поле было указано как TrackIDs, процессор не будет сопоставлять ни одно из полей. Вместо этого процессор будет проходить через исходную запись события, используя определение GeoEvent источника. Это также происходит, если запись с использованием точки или индексов была выполнена некорректно.