Partager via


Transformer des données dans un pipeline de processeur de données

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.

Vous devrez déployer une nouvelle installation d’Azure IoT Operations lorsqu’une version en disponibilité générale est mise à disposition, vous ne pourrez pas mettre à niveau une installation en préversion.

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 :

  • Instance déployée du processeur de données qui inclut le composant facultatif du processeur de données.
  • 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
    }
  }
}