Condividi tramite


Trasformare i dati in una pipeline di anteprima del processore di dati IoT di Azure

Importante

Anteprima delle operazioni di Azure IoT: abilitata da Azure Arc è attualmente disponibile in ANTEPRIMA. Non è consigliabile usare questo software di anteprima negli ambienti di produzione.

Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.

Usare la fase di trasformazione per eseguire trasformazioni strutturali sui messaggi in una pipeline, ad esempio:

  • Rinominare tag e proprietà
  • Annullare il recupero dei dati
  • Aggiungere nuove proprietà
  • Aggiungere valori calcolati

La fase di trasformazione usa jq per supportare la trasformazione dei dati:

  • Ogni partizione della pipeline trasforma i messaggi indipendentemente l'uno dall'altro.
  • La fase restituisce un messaggio trasformato in base all'espressione jq specificata.
  • Creare un'espressione jq per trasformare un messaggio in base alla struttura del messaggio in arrivo nella fase.

Prerequisiti

Per configurare e usare una fase della pipeline di trasformazione, è necessario:

  • Istanza distribuita di Azure IoT Data Processor Preview che include il componente facoltativo responsabile del trattamento dei dati.
  • Conoscenza delle espressioni jq.

Configurare la fase

La configurazione JSON della fase di trasformazione definisce i dettagli della fase. Per creare la fase, è possibile interagire con l'interfaccia utente basata su form o specificare la configurazione JSON nella scheda Avanzate :

Nome Valore Obbligatorio Esempio
Nome Nome da visualizzare nell'interfaccia utente del responsabile del trattamento dei dati. Transform1
Descrizione Descrizione intuitiva delle operazioni della fase di trasformazione. No Rename Tags
Query Espressione jq di trasformazione. .payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)

Configurazione di esempio

L'esempio di trasformazione seguente converte la matrice di tag nel messaggio di input in un oggetto contenente tutti i tag e i relativi valori:

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

L'output della fase di trasformazione è simile all'esempio seguente:

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