Condividi tramite


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. - lkv1
Descrizione Descrizione definita dall'utente per la fase. No - lkv1
Percorso di input proprietà > Percorso della chiave da tenere traccia. - .payload.temperature
Percorso di output delle proprietà > Percorso del percorso nel messaggio di output per scrivere l'LKV. - .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 
    } 
}