Преобразование данных в конвейере обработчика данных
Внимание
Предварительная версия операций Интернета вещей 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
}
}
}