Бөлісу құралы:


Преобразование данных в конвейере обработчика данных

Внимание

Предварительная версия операций Интернета вещей Azure, включенная Azure Arc в настоящее время находится в предварительной версии. Не следует использовать это программное обеспечение предварительной версии в рабочих средах.

Вам потребуется развернуть новую установку Операций Интернета вещей Azure, когда общедоступная версия станет доступной, вы не сможете обновить предварительную установку.

Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.

Используйте этап преобразования для выполнения структурных преобразований в сообщениях в конвейере, например:

  • Переименование тегов и свойств
  • Отмена обработки данных
  • Добавление новых свойств
  • Добавление вычисляемых значений

Этап преобразования использует jq для поддержки преобразования данных:

  • Каждая секция конвейера преобразует сообщения независимо друг от друга.
  • Этап выводит преобразованное сообщение на основе предоставленного выражения jq.
  • Создайте выражение jq для преобразования сообщения на основе структуры входящего сообщения на этап.

Необходимые компоненты

Чтобы настроить и использовать этап конвейера преобразования, вам потребуется:

  • Развернутый экземпляр обработчика данных, который включает необязательный компонент обработчика данных.
  • Понимание выражений jq.

Настройка этапа

Конфигурация JSON этапа преобразования определяет сведения о стадии. Чтобы создать этап, вы можете взаимодействовать с пользовательским интерфейсом на основе форм или предоставить конфигурацию JSON на вкладке "Дополнительно ":

Имя. Значение Обязательное поле Пример
Имя. Имя, отображаемое в пользовательском интерфейсе обработчика данных. Да Transform1
Description Понятное описание того, что выполняет этап преобразования. No Rename Tags
Query Выражение jq преобразования. Да .payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)

Пример конфигурации

В следующем примере преобразования массив тегов в входном сообщении преобразуется в объект, содержащий все теги и их значения:

{
    "displayName": "TransformInput", 
    "description": "Make array of tags into one object", 
    "query": ".payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)"
}

Выходные данные этапа преобразования выглядят следующим образом:

{
  "systemProperties": {
    "partitionKey": "foo",
    "partitionId": 5,
    "timestamp": "2023-01-11T10:02:07Z"
  },
  "qos": 1,
  "topic": "/assets/foo/tags/bar",
  "properties": {
    "responseTopic": "outputs/foo/tags/bar",
    "contentType": "application/json",
    "payloadFormat": 1,
    "correlationData": "base64::Zm9v",
    "messageExpiry": 412
  },
  "userProperties": [
    {
      "key": "prop1",
      "value": "value1"
    },
    {
      "key": "prop2",
      "value": "value2"
    }
  ],
  "payload": {
    "values": {
      "temperature": 250,
      "pressure": 30,
      "humidity": 10,
      "runningStatus": true
    }
  }
}