Condividi tramite


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, .topicad 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:ora
  • m:minuto
  • s:secondo
  • ms:millisecondo
  • us, µs: microsecondo
  • ns: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. - static
value qualsiasi Valore statico da usare per la configurazione (in genere una stringa). - "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. - dynamic
value Percorso Percorso in ogni messaggio in cui è possibile recuperare dinamicamente un valore per il campo. - .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 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 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