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 Raw
formati , JSON
MessagePack
, 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 | Sì | - | 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 | Sì | - | protobuf |
descriptor |
string |
Descrittore con codifica Base64 per i file di definizione protobuf. | Sì | - | Zm9v.. |
package |
string |
Nome del pacchetto nel descrittore in cui è definito il tipo. | Sì | - | package1.. |
message |
string |
Nome del tipo di messaggio utilizzato per formattare i dati. | Sì | - | 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 | Sì | - | protobuf |
descriptor |
string |
Descrittore con codifica Base64 per i file di definizione protobuf. | Sì | - | Zm9v.. |
package |
string |
Nome del pacchetto nel descrittore in cui è definito il tipo. | Sì | - | package1.. |
message |
string |
Nome del tipo di messaggio utilizzato per formattare i dati. | Sì | - | 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 | Sì | - | CSV |
header |
boolean |
Questo campo indica se i dati di input hanno una riga di intestazione CSV. | Sì | - | true |
columns |
array |
Definizione dello schema del file CSV da leggere. | Sì | - | (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. | Sì | - | 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 | Sì | - | CSV |
header |
boolean |
Questo campo indica se includere la riga di intestazione con nomi di colonna nel file CSV serializzato. | Sì | - | true |
columns |
array |
Definizione dello schema del file CSV da scrivere. | Sì | - | (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. | Sì | - | 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
}
]
}
}