Condividi tramite


Filtrare i dati in una pipeline di anteprima del processore di dati IoT di Azure

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.

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 una fase di filtro per filtrare i messaggi che non sono necessari per un'ulteriore elaborazione nella pipeline. La fase genera il messaggio originale alla fase di filtro invariato se vengono soddisfatti i criteri di filtro; in caso contrario, la fase elimina il messaggio dalla pipeline.

  • Ogni partizione della pipeline filtra i messaggi indipendentemente dalle altre partizioni.
  • L'output della fase di filtro è il messaggio originale se la fase non la filtra.

Prerequisiti

Per configurare e usare una fase della pipeline di filtro, è necessaria un'istanza distribuita di Anteprima del processore di dati di Azure IoT che include il componente facoltativo responsabile del trattamento dei dati.

Configurare la fase

La configurazione JSON della fase del filtro 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 :

Nome Valore Richiesto Valore predefinito Esempio
Nome visualizzato Nome da visualizzare nell'interfaccia utente del responsabile del trattamento dei dati. - Filter1
Descrizione Descrizione intuitiva delle operazioni della fase di filtro. No - Filter out anomalies
Query Espressione jq - .payload.temperature > 0 and .payload.pressure < 50

espressione jq

Le query di filtro in Data Processor usano il linguaggio jq per definire la condizione di filtro:

  • Il jq fornito nella query deve essere sintatticamente valido.
  • Il risultato della query di filtro deve essere un valore booleano.
  • I messaggi che restituiscono true vengono generati senza modifiche dalla fase di filtro alle fasi successive per un'ulteriore elaborazione. I messaggi che restituiscono false vengono eliminati dalla pipeline.
  • Tutti i messaggi per i quali il filtro non restituisce un risultato booleano vengono considerati come un caso di errore ed eliminati dalla pipeline.
  • La fase di filtro rispetta la stessa restrizione sull'utilizzo di jq, come definito nella guida alle espressioni jq.

Quando si crea una query di filtro da usare nella fase di filtro:

  • Testare la query di filtro con i messaggi per assicurarsi che venga restituito un risultato booleano.
  • Configurare la query di filtro in base alla modalità di arrivo del messaggio nella fase di filtro.
  • Per altre informazioni sulla creazione delle espressioni di filtro, vedere la guida alleespressioni jq.

Configurazione di esempio

L'esempio JSON seguente mostra una configurazione completa della fase di filtro:

{ 
    "displayName": "Filter name", 
    "description": "Filter description", 
    "query": "(.properties.responseTopic | contains(\"bar\")) or (.properties.responseTopic | contains(\"baz\")) and (.payload | has(\"temperature\")) and (.payload.temperature > 0)"
}

Questo filtro verifica la presenza di messaggi in cui contiene o e il payload del messaggio ha una proprietà denominata temperature con un valore maggiore di 0.bazbar.properties.responseTopic