Partager via


Transformer des données dans un pipeline Azure IoT Data Processor (préversion)

Important

Opérations Azure IoT (préversion) – activé parc Azure Arc est actuellement en PRÉVERSION. Vous ne devez pas utiliser ce logiciel en préversion dans des environnements de production.

Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.

Utilisez l’index de transformation pour effectuer des transformations structurelles sur les messages d’un pipeline, par exemple :

  • Renommer des balises et des propriétés
  • Séparer des données
  • Ajouter de nouvelles propriétés
  • Ajouter des valeurs calculées

L’index de transformation utilise jq pour soutenir la transformation des données :

  • Chaque partition de pipeline transforme les messages de manière indépendante.
  • L’index génère un message transformé basé sur l’expression jq que vous fournissez.
  • Créez une expression jq pour transformer un message en fonction de la structure du message entrant par rapport à l’index.

Prérequis

Pour configurer et utiliser un index de pipeline de transformation, vous avez besoin des éléments suivants :

  • Une instance déployée d’Azure IoT Data Processor (préversion) qui inclut le composant Data Processor facultatif.
  • Une compréhension des expressions jq.

Configurer l’index

La configuration JSON de l’index de transformation définit les détails de l’index. Pour créer l’index, vous pouvez interagir avec l’interface utilisateur basée sur le formulaire ou fournir la configuration JSON sous l’onglet Avancé :

Nom Valeur Requis Exemple
Nom Nom à afficher dans l’interface utilisateur du processeur de données. Oui Transform1
Description Une description conviviale de l’action réalisée par l’index de transformation. Non Rename Tags
Requête La transformation expression jq. Oui .payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)

Exemple de configuration

L’exemple de transformation suivant convertit le tableau des balises dans le message d’entrée en objet qui contient toutes les balises et leurs valeurs :

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

La sortie de l’index de transformation est similaire à l’exemple ci-dessous :

{
  "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
    }
  }
}