Condividi tramite


Formati di serializzazione e deserializzazione nelle pipeline del processore di dati

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.

Sarà necessario distribuire una nuova installazione di Azure IoT Operations quando viene resa disponibile una versione disponibile a livello generale, non sarà possibile aggiornare un'installazione di anteprima.

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.

Il responsabile del trattamento dei dati è una piattaforma indipendente dai dati. Il responsabile del trattamento dei dati può inserire, elaborare e scrivere dati in qualsiasi formato.

Tuttavia, per usare espressioni di percorso jq in alcune fasi della pipeline, i dati devono essere in un formato strutturato all'interno di una pipeline. Potrebbe essere necessario deserializzare i dati per ottenerli in un formato strutturato appropriato.

Alcune destinazioni della pipeline o chiamate da fasi possono richiedere che i dati siano in un formato specifico. Potrebbe essere necessario serializzare i dati in un formato appropriato per la destinazione.

Deserializzare i messaggi

Il responsabile del trattamento dei dati supporta in modo nativo la deserializzazione di vari formati sia nella fase dell'origine dati che nelle fasi di chiamata in cui la pipeline legge i dati esterni:

  • La fase di origine può deserializzare i dati in ingresso.
  • Le fasi di chiamata possono deserializzare la risposta dell'API.

Potrebbe non essere necessario deserializzare i dati in ingresso se:

  • Non si usano le fasi che richiedono dati deserializzati.
  • Si stanno elaborando solo i metadati.
  • I dati in ingresso sono già in un formato coerente con le fasi usate.

Nella tabella seguente sono elencati i formati per i quali è supportata la deserializzazione e le fasi corrispondenti.

Formato Origine dati Call out
Raw Supportata HTTP
JSON Supportata HTTP
Protobuf Supportata Tutti (HTTP e gRPC)
CSV Supportata HTTP
MessagePack Supportata HTTP
CBOR Supportata HTTP

Suggerimento

Selezionare Raw quando non è necessaria la deserializzazione. L'opzione Raw passa i dati nel formato corrente.

Serializzare i messaggi

Il responsabile del trattamento dei dati supporta in modo nativo la serializzazione in vari formati sia nelle fasi di destinazione che in cui la pipeline scrive dati esterni:

  • La fase di destinazione può serializzare i dati in uscita in un formato appropriato.
  • Le fasi di chiamata possono serializzare i dati inviati in una richiesta API.
Formato Call out Fase di output
Raw HTTP Tutti tranne Microsoft Fabric
JSON HTTP Tutti tranne Microsoft Fabric
Parquet Non supportato Microsoft Fabric
Protobuf Tutte le date Tutti tranne Microsoft Fabric
CSV HTTP Tutti tranne Microsoft Fabric
MessagePack HTTP Tutti tranne Microsoft Fabric
CBOR HTTP Tutti tranne Microsoft Fabric

Suggerimento

Selezionare Raw quando non è necessaria alcuna serializzazione. L'opzione Raw passa i dati nel formato corrente.

Formati di dati Raw/JSON/MessagePack/CBOR

Raw è l'opzione da usare quando non è necessario deserializzare o serializzare i dati. Raw è l'impostazione predefinita nella maggior parte delle fasi in cui la deserializzazione o la serializzazione non viene applicata.

La configurazione di serializzazione o deserializzazione è comune per i Rawformati , JSONMessagePack, e CBOR . Per questi formati, usare le opzioni di configurazione seguenti.

Usare le opzioni di configurazione seguenti per deserializzare i dati:

Campo Tipo Description Obbligatorio? Predefiniti Esempio
type string enum Formato per la deserializzazione No - JSON
path Percorso Percorso della parte del messaggio del responsabile del trattamento dei dati in cui vengono scritti i dati deserializzati. (vedere la nota seguente) .payload .payload.response

Nota

Non è necessario specificare path quando si deserializzano i dati nella fase di origine. I dati deserializzati vengono inseriti automaticamente nella .payload sezione del messaggio.

Usare le opzioni di configurazione seguenti per serializzare i dati:

Campo Tipo Description Obbligatorio? Predefiniti Esempio
type string enum Formato per la serializzazione - JSON
path Percorso Percorso della parte del messaggio del responsabile del trattamento dei dati che deve essere serializzato. (vedere la nota seguente) .payload .payload.response

Nota

Non è necessario specificare path quando si serializzano i dati in batch . Il percorso predefinito è ., che rappresenta l'intero messaggio. Per i dati senzabatched, è necessario specificare path.

L'esempio seguente illustra la configurazione per la serializzazione o la deserializzazione dei dati JSON non intaccati:

{
    "format": {
        "type": "json",
        "path": ".payload"
    }
}

L'esempio seguente illustra la configurazione per deserializzare i dati JSON nella fase di origine o serializzare i dati JSON in batch :

{
    "format": {
        "type": "json"
    }
}

Formato dei dati dei buffer del protocollo

Usare le opzioni di configurazione seguenti per deserializzare i dati dei buffer del protocollo (protobuf):

Campo Tipo Description Obbligatorio? Predefiniti Esempio
type string enum Formato per la deserializzazione - protobuf
descriptor string Descrittore con codifica Base64 per i file di definizione protobuf. - Zm9v..
package string Nome del pacchetto nel descrittore in cui è definito il tipo. - package1..
message string Nome del tipo di messaggio utilizzato per formattare i dati. - message1..
path Percorso Percorso della parte del messaggio del responsabile del trattamento dei dati in cui devono essere scritti i dati deserializzati. (vedere la nota seguente) .payload .payload.gRPCResponse

Nota

Non è necessario specificare path quando si deserializzano i dati nella fase di origine. I dati deserializzati vengono inseriti automaticamente nella .payload sezione del messaggio.

Usare le opzioni di configurazione seguenti per serializzare i dati protobuf:

Campo Tipo Description Obbligatorio? Predefiniti Esempio
type string enum Formato per la serializzazione - protobuf
descriptor string Descrittore con codifica Base64 per i file di definizione protobuf. - Zm9v..
package string Nome del pacchetto nel descrittore in cui è definito il tipo. - package1..
message string Nome del tipo di messaggio utilizzato per formattare i dati. - message1..
path Percorso Percorso della parte del messaggio del responsabile del trattamento dei dati da cui i dati da serializzare vengono letti. (vedere la nota seguente) - .payload.gRPCRequest

Nota

Non è necessario specificare path quando si serializzano i dati in batch . Il percorso predefinito è ., che rappresenta l'intero messaggio.

L'esempio seguente illustra la configurazione per la serializzazione o la deserializzazione dei dati protobuf non memorizzati:

{
    "format": {
        "type": "protobuf",
        "descriptor": "Zm9v..",
        "package": "package1",
        "message": "message1",
        "path": ".payload"
    }
}

L'esempio seguente illustra la configurazione per deserializzare i dati protobuf nella fase di origine o serializzare i dati protobuf in batch :

{
    "format": {
        "type": "protobuf",
        "descriptor": "Zm9v...", // The full descriptor
        "package": "package1",
        "message": "message1"
    }
}

Formato di dati CSV

Usare le opzioni di configurazione seguenti per deserializzare i dati CSV:

Campo Tipo Description Obbligatorio? Predefiniti Esempio
type string enum Formato per la deserializzazione - CSV
header boolean Questo campo indica se i dati di input hanno una riga di intestazione CSV. - true
columns array Definizione dello schema del file CSV da leggere. - (vedere la tabella seguente)
path Percorso Percorso della parte del messaggio del responsabile del trattamento dei dati in cui devono essere scritti i dati deserializzati. (vedere la nota seguente) - .payload

Nota

Non è necessario specificare path quando si deserializzano i dati nella fase di origine. I dati deserializzati vengono inseriti automaticamente nella .payload sezione del messaggio.

Ogni elemento nella matrice di colonne è un oggetto con lo schema seguente:

Campo Tipo Description Obbligatorio? Predefiniti Esempio
name string Nome della colonna visualizzata nell'intestazione CSV. - temperature
type string enum Tipo di dati del responsabile del trattamento dei dati contenuto nella colonna usata per determinare come analizzare i dati. No string integer
path Percorso Posizione all'interno di ogni record dei dati da cui deve essere letto il valore della colonna. No .{{name}} .temperature

Usare le opzioni di configurazione seguenti per serializzare i dati CSV:

Campo Tipo Description Obbligatorio? Predefiniti Esempio
type string enum Formato per la serializzazione - CSV
header boolean Questo campo indica se includere la riga di intestazione con nomi di colonna nel file CSV serializzato. - true
columns array Definizione dello schema del file CSV da scrivere. - (vedere la tabella seguente)
path Percorso Percorso della parte del messaggio del responsabile del trattamento dei dati in cui vengono scritti i dati da serializzare. (vedere la nota seguente) - .payload

Nota

Non è necessario specificare path quando si serializzano i dati in batch . Il percorso predefinito è ., che rappresenta l'intero messaggio.

Campo Tipo Description Obbligatorio? Predefiniti Esempio
name string Nome della colonna come apparirebbe in un'intestazione CSV. - temperature
path Percorso Posizione all'interno di ogni record dei dati in cui deve essere scritto il valore della colonna. No .{{name}} .temperature

Nell'esempio seguente viene illustrata la configurazione per la serializzazione dei dati CSV non memorizzati:

{
    "format": {
        "type": "csv",
        "header": true,
        "columns": [
            {
                "name": "assetId",
                "path": ".assetId"
            },
            {
                "name": "timestamp",
                "path": ".eventTime"
            },
            {
                "name": "temperature",
                // Path is optional, defaults to the name
            }
        ],
        "path": ".payload"
    }
}

L'esempio seguente illustra la configurazione per la serializzazione di dati CSV in batch. Omettere il livello path principale per i dati in batch:

{
    "format": {
        "type": "csv",
        "header": true,
        "columns": [
            {
                "name": "assetId",
                "path": ".assetId"
            },
            {
                "name": "timestamp",
                "path": ".eventTime"
            },
            {
                "name": "temperature",
                // Path is optional, defaults to .temperature
            }
        ]
    }
}

L'esempio seguente illustra la configurazione per deserializzare i dati CSV non memorizzati:

{
    "format": {
        "type": "csv",
        "header": false,
        "columns": [
            {
                "name": "assetId",
                "type": "string",
                "path": ".assetId"
            },
            {
                "name": "timestamp",
                // Type is optional, defaults to string
                "path": ".eventTime"
            },
            {
                "name": "temperature",
                "type": "float"
                // Path is optional, defaults to .temperature
            }
        ],
        "path": ".payload"
    }
}

L'esempio seguente illustra la configurazione per la deserializzazione dei dati CSV in batch nella fase di origine:

{
    "format": {
        "type": "csv",
        "header": false,
        "columns": [
            {
                "name": "assetId",
                "type": "string",
                "path": ".assetId"
            },
            {
                "name": "timestamp",
                // Type is optional, defaults to string
                "path": ".eventTime"
            },
            {
                "name": "temperature",
                "type": "float",
                // Path is optional, defaults to .temperature
            }
        ]
    }
}