Quali sono i modelli di configurazione nel responsabile del trattamento dei 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.
Diversi tipi di configurazione sono comuni a più fasi della pipeline. Questo articolo descrive i modelli di configurazione di percorso, batch, modelli, tentativi e durata .
Percorso
Diverse fasi della pipeline usano un percorso per identificare una posizione nel messaggio in cui i dati devono essere letti o scritti. Per definire queste posizioni, usare un Path
campo che usa la sintassi jq:
- Un percorso viene definito come stringa nell'interfaccia utente e usa la sintassi jq .
- Un percorso viene definito in relazione alla radice del messaggio del responsabile del trattamento dei dati. Il percorso
.
fa riferimento all'intero messaggio. - Tutti i percorsi iniziano con
.
. - Ogni segmento di percorso può essere:
.<identifier>
per una chiave dell'oggetto alfanumerico,.topic
ad esempio .."<identifier>"
per una chiave di oggetto arbitraria, ad."asset-id"
esempio .["<identifier>"]
per una chiave di oggetto arbitraria, ad["asset-id"]
esempio .[<index>]
per un indice di matrice,[2]
ad esempio .
- I segmenti possono essere concatenati per formare percorsi complessi.
I singoli segmenti di percorso devono essere conformi alle espressioni regolari seguenti:
Modello | Regex | Esempio |
---|---|---|
.<identifier> |
\.[a-zA-Z_][a-zA-Z0-9_]* |
.topic |
."<identifier>" |
\."(\\"\|[^"])*" |
."asset-id" |
["<identifier>"] |
\["(\\"\|[^"])*"\] |
["asset-id"] |
[<index>] |
\[-?[0-9]+\] |
[2] |
Per altre informazioni, vedere Percorsi nella guida di jq.
Esempi di percorso
I percorsi seguenti sono esempi basati sulla struttura dei messaggi del responsabile del trattamento dei dati standard:
.systemProperties
rendiconto:{ "partitionKey": "foo", "partitionId": 5, "timestamp": "2023-01-11T10:02:07Z" }
.payload.humidity
rendiconto:10
.userProperties[0]
rendiconto:{ "key": "prop1", "value": "value1" }
.userProperties[0].value
rendiconto:value1
Durata
Diverse fasi richiedono la definizione di una durata intervallo di tempo . Ad esempio, le finestre in una fase di aggregazione e i timeout in una fase di chiamata. Queste fasi usano un Duration
campo per rappresentare questo valore.
Diverse fasi della pipeline usano una durata di intervallo di tempo . Ad esempio, la fase di aggregazione ha una proprietà windows e le fasi di chiamata hanno una proprietà timeouts. Per definire questi intervalli di tempo, usare un Duration
campo:
Duration è un valore stringa con il formato <number><char><number><char>
seguente in cui 'char'' può essere:
h
:oram
:minutos
:secondoms
:millisecondous
,µs
: microsecondons
:nanosecondo
Esempi di durata
2h
1h10m30s
3m9ms400ns
Modelli
Diverse fasi richiedono di definire una stringa con una combinazione di valori dinamici e statici. Queste fasi usano valori di modello .
I modelli del processore di dati usano la sintassi Mustache per definire valori dinamici nelle stringhe.
I valori di sistema dinamici disponibili per l'uso nei modelli sono:
instanceId
: ID istanza del responsabile del trattamento dei dati.pipelineId
: l'ID della pipeline di cui fa parte la fase.YYYY
: l'anno corrente.MM
: mese corrente.DD
: data corrente.HH
: ora corrente.mm
: minuto corrente.
Attualmente, è possibile usare i modelli per definire i percorsi di file in una fase di destinazione.
Campi statici e dinamici
Alcune fasi richiedono la definizione di valori che possono essere stringhe statiche o un valore dinamico derivato da in Path
un messaggio. Per definire questi valori, è possibile usare campi statici o dinamici .
Un campo statico o dinamico viene sempre scritto come oggetto con un type
campo con uno dei due valori: static
o dynamic
. Lo schema varia in base a type
.
Campi statici
La definizione statica è un valore fisso per type
è static
. Il valore effettivo viene mantenuto in value
.
Campo | Tipo | Descrizione | Richiesto | Valore predefinito | Esempio |
---|---|---|---|---|---|
type | stringa const | Tipo del campo. | Sì | - | static |
value | qualsiasi | Valore statico da usare per la configurazione (in genere una stringa). | Sì | - | "static" |
Gli esempi seguenti mostrano alcune definizioni di campo statico:
{
"some-field": {
"type": "static",
"value": "some-static-value"
}
}
{
"some-boolean-field": {
"type": "static",
"value": true
}
}
{
"some-complex-field": {
"type": "static",
"value": {
"some": [
"nested",
"data"
]
}
}
}
Campi dinamici
Il valore fisso per type
è dynamic
. Il valore è un percorso jq.
Campo | Tipo | Descrizione | Richiesto | Valore predefinito | Esempio |
---|---|---|---|---|---|
type | stringa const | Tipo di campo. | Sì | - | dynamic |
value | Percorso | Percorso in ogni messaggio in cui è possibile recuperare dinamicamente un valore per il campo. | Sì | - | .systemProperties.partitionKey |
L'esempio seguente mostra una definizione di campo dinamico:
{
"some-field": {
"type": "dynamic",
"value": ".systemProperties.topic"
}
}
Riprova
Le fasi che chiamano i servizi esterni possono usare i tentativi per gestire gli errori temporanei e migliorare l'affidabilità. È possibile eseguire l'override dei criteri di ripetizione dei tentativi predefiniti quando si configura una fase.
Esistono quattro possibili criteri di ripetizione dei tentativi:
default
: il criterio di ripetizione dei tentativi predefinito consiste nell'usare un nuovo tentativo di backoff esponenziale con tre tentativi e un intervallo di ripetizione iniziale di 500 ms.none
: non vengono eseguiti nuovi tentativi.fixed
: un criterio di ripetizione dei tentativi fisso ritenta un numero fisso di volte con un intervallo fisso tra ogni tentativo.exponential
: un criterio di ripetizione esponenziale dei tentativi ritenta un numero fisso di volte con un intervallo in aumento esponenziale tra ogni tentativo.
Se si sceglie default
o none
, non è necessario fornire altre configurazioni. Se si sceglie fixed
o exponential
, è necessario fornire più configurazione:
Fisso
Campo | Tipo | Description | Obbligatorio? | Predefiniti | Esempio |
---|---|---|---|---|---|
type |
string | Nome del tipo di tentativo: fixed |
Sì | N/D | fixed |
interval |
Durata | Periodo di tempo iniziale tra ogni tentativo. | No | 500ms |
2s |
maxRetries |
int | Numero di tentativi, da 1 a 20 |
No | 3 |
20 |
Esponenziale
Campo | Tipo | Description | Obbligatorio? | Predefiniti | Esempio |
---|---|---|---|---|---|
type |
string | Nome del tipo di tentativo: exponential |
Sì | N/D | exponential |
interval |
Durata | Periodo di tempo iniziale tra ogni tentativo. | No | 500ms |
2s |
maxRetries |
int | Numero di tentativi, da 1 a 20 |
No | 3 |
20 |
maxInterval |
Durata | Periodo di tempo massimo tra ogni tentativo. | No | None | 100s |
I tempi di ripetizione esponenziale vengono calcolati nel modo seguente: se l'intervallo inizia con 500ms
, i successivi intervalli di ripetizione dei tentativi sono randInt(500ms, 500ms * 2^1)
, randInt(500ms, 500ms * 2^2)
, ..., randInt(500ms, 500ms * 2^maxRetries)
.
Batch
Diverse destinazioni nella fase di output consentono di inviare in batch i messaggi prima di scrivere nella destinazione. Queste destinazioni usano batch per definire i parametri di invio in batch.
Attualmente, è possibile definire batch in base al tempo. Per definire l'invio in batch, è necessario specificare l'intervallo di tempo e un percorso. Path
definisce la parte del messaggio in arrivo da includere nell'output in batch.
Campo | Tipo | Descrizione | Richiesto | Valore predefinito | Esempio |
---|---|---|---|---|---|
Time | Durata | Durata del batch dei dati | No | 60s (Nelle destinazioni in cui viene applicata l'invio in batch) |
120s |
Percorso | Percorso | Percorso del valore in ogni messaggio da includere nell'output. | No | .payload |
.payload.output |