Usare gli ultimi valori noti in una 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.
Usare l'ultima fase di valore noto (LKV) in una pipeline del processore di dati per mantenere un record aggiornato e completo dei dati. La fase LKV tiene traccia dei valori più recenti delle coppie chiave-valore per i messaggi nella pipeline. La fase può quindi arricchire i messaggi usando i valori LKV rilevati. Il rilevamento e l'arricchimento dell'ultimo valore noto sono importanti per i processi downstream che si basano su:
- Più punti dati di serie temporali in corrispondenza di un timestamp specifico.
- Payload che hanno sempre un valore per una chiave specifica.
In una pipeline di elaborazione dati la fase LKV è una fase facoltativa. Quando si usa la fase LKV, è possibile:
- Aggiungere più fasi LKV a una pipeline. Ogni fase LKV può tenere traccia di più valori.
- Arricchire i messaggi con i valori LKV archiviati, assicurandosi che i dati rimangano completi e completi.
- Mantenere aggiornati automaticamente i LKV con i valori più recenti dei messaggi in arrivo.
- Tenere traccia separatamente delle LKV per ogni partizione logica. La fase LKV opera in modo indipendente in ogni partizione logica.
- Configurare l'ora di scadenza per ogni LKV monitorato per gestire la durata per la quale rimane valida. Questo controllo consente di garantire che i messaggi non siano arricchiti con valori non aggiornati.
La fase LKV mantiene l'integrità cronologica dei dati. La fase garantisce che i messaggi con timestamp precedenti non eseseguono l'override o sostituiscono gli LKV con messaggi con timestamp successivi.
La fase LKV arricchisce i messaggi in arrivo con gli ultimi valori noti che tiene traccia. Questi valori arricchiti rappresentano dati registrati in precedenza e non sono necessariamente i valori correnti in tempo reale. Assicurarsi che questo comportamento sia allineato alle aspettative di elaborazione dei dati.
Prerequisiti
Per configurare e usare una fase di pipeline di aggregazione, è necessaria un'istanza distribuita del responsabile del trattamento dei dati che include il componente facoltativo del processore di dati.
Configurare la fase
La configurazione JSON della fase LKV 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 :
Campo | Descrizione | Richiesto | Valore predefinito | Esempio |
---|---|---|---|---|
Nome | Nome definito dall'utente per la fase. | Sì | - | lkv1 |
Descrizione | Descrizione definita dall'utente per la fase. | No | - | lkv1 |
Percorso di input proprietà > | Percorso della chiave da tenere traccia. | Sì | - | .payload.temperature |
Percorso di output delle proprietà > | Percorso del percorso nel messaggio di output per scrivere l'LKV. | Sì | - | .payload.temperature_lkv |
Ora di scadenza delle proprietà > | I LKV rilevati sono validi solo per l'intervallo di tempo definito dall'utente, dopo il quale il messaggio di output non viene arricchito con il valore archiviato. La scadenza viene rilevata per ogni chiave LKV. | No | - | 10h |
Percorso timestamp proprietà > | Percorso del percorso nel messaggio di output per scrivere il timestamp di quando l'ultima versione LKV è stata aggiornata. | No | Falso | - |
Se si include il percorso timestamp, consente di comprendere esattamente quando sono stati registrati i LKV e migliora la trasparenza e la tracciabilità.
inputPath
Uguale outputPath
Il messaggio in uscita è il valore effettivo del messaggio o LKV se la chiave rilevata non è presente nel payload del messaggio. Qualsiasi valore in ingresso ha priorità e la fase non ne esegue l'override con un LKV. Per identificare se il valore del messaggio è un valore LKV, usare il percorso timestamp. Il percorso timestamp è incluso nel messaggio in uscita solo se il valore nel messaggio è l'LKV rilevato.
inputPath
non è uguale a outputPath
La fase scrive LKV in outputPath
per tutti i messaggi in arrivo. Usare questa configurazione per tenere traccia della differenza tra i valori nei payload dei messaggi successivi.
Configurazione di esempio
L'esempio seguente mostra un messaggio di esempio per la fase LKV con il messaggio che arriva alle 10:02 e con un payload che contiene il valore LKV rilevato .payload.temperature
:
{
{
"systemProperties":{
"partitionKey":"pump",
"partitionId":5,
"timestamp":"2023-01-11T10:02:07Z"
},
"qos":1,
"topic":"/assets/pump/#"
},
"payload":{
"humidity": 10,
"temperature":250,
"pressure":30,
"runningState": true
}
}
Configurazione LKV:
Campo | valore |
---|---|
Percorso di input* | .payload.temperature |
Percorso output | .payload.lkvtemperature |
Ora di scadenza | 10h |
Percorso timestamp | .payload.lkvtemperature_timestamp |
I valori LKV rilevati sono:
.payload.temperature
è 250.- Timestamp dell'LKV è
2023-01-11T10:02:07Z
Per un messaggio che arriva alle 11:05 con un payload che non ha la proprietà temperature, la fase LKV arricchisce il messaggio con i valori rilevati:
Input di esempio per la fase LKV alle 11:05:
{
"systemProperties":{
"partitionKey":"pump",
"partitionId":5,
"timestamp":"2023-01-11T11:05:00Z"
},
"qos":1,
"topic":"/assets/pump/#"
},
"payload":{
"runningState": true
}
}
Output di esempio dalla fase LKV alle 11:05:
{
"systemProperties":{
"partitionKey":"pump",
"partitionId":5,
"timestamp":"2023-01-11T11:05:00Z"
},
"qos":1,
"topic":"/assets/pump/#"
},
"payload":{
"lkvtemperature":250,
"lkvtemperature_timestamp"":"2023-01-11T10:02:07Z"
"runningState": true
}
}