Arricchire i dati usando flussi di dati

Importante

Anteprima delle operazioni di Azure IoT: abilitata da Azure Arc è attualmente 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.

È possibile arricchire i dati usando la funzione set di dati di contestualizzazione. Quando vengono elaborati i record in ingresso, è possibile eseguire query su questi set di dati in base alle condizioni correlate ai campi del record in ingresso. Questa funzionalità consente interazioni dinamiche. I dati di questi set di dati possono essere usati per integrare informazioni nei campi di output e partecipare a calcoli complessi durante il processo di mapping.

Ad esempio, considerare il set di dati seguente con alcuni record, rappresentati come record JSON:

{
  "Position": "Analyst",
  "BaseSalary": 70000,
  "WorkingHours": "Regular"
},
{
  "Position": "Receptionist",
  "BaseSalary": 43000,
  "WorkingHours": "Regular"
}

Il mapper accede al set di dati di riferimento archiviato nell'archivio stati distribuito delle operazioni IoT di Azure usando un valore della chiave in base a una condizione specificata nella configurazione del mapping. I nomi delle chiavi nel DSS corrispondono a un set di dati nella configurazione del flusso di dati.

datasets:
- key: position
  inputs:
    - $source.Position # - $1
    - $context.Position # -$2
  expression: $1 == $2

Quando viene elaborato un nuovo record, il mapper esegue i passaggi seguenti:

  • Richiesta di dati: il mapper invia una richiesta al DSS per recuperare il set di dati archiviato nella chiave Position.
  • Corrispondenza record: il mapper esegue quindi una query su questo set di dati per trovare il primo record in cui il Position campo nel set di dati corrisponde al Position campo del record in ingresso.
- inputs:
  - $context(position).WorkingHours #  - $1 
  output: WorkingHours

- inputs:
  - BaseSalary   # - - - - - - - - - - - $1
  - $context(position).BaseSalary #  - - $2 
  output: BaseSalary
  expression: if($1 == (), $2, $1)

In questo esempio, il WorkingHours campo viene aggiunto al record di output, mentre BaseSalary viene usato in modo condizionale solo quando il record in ingresso non contiene il BaseSalary campo (o il valore è null se si tratta di un campo nullable). La richiesta per i dati di contestualizzazione non si verifica con ogni record in ingresso. Il mapper effettua la richiesta al set di dati, quindi riceve notifiche da DSS sulle modifiche, mentre usa una versione memorizzata nella cache del set di dati.

È possibile usare più set di dati:

datasets:
- key: position
  inputs:
    - $source.Position  # - $1
    - $context.Position # - $2
  expression: $1 == $2

- key: permissions
  inputs:
    - $source.Position  # - $1
    - $context.Position # - $2
  expression: $1 == $2

Quindi usare i riferimenti combinati:

- inputs:
  - $context(position).WorkingHours  #    - - $1
  - $context(permission).NightShift  #    - - $2

I riferimenti di input usano la chiave del set di dati, ad esempio position o permission. Se la chiave in DSS non è utile, è possibile definire un alias:

datasets:
  - key: datasets.parag10.rule42 as position
    inputs:
      - $source.Position  # - $1
      - $context.Position # - $2
    expression: $1 == $2

La configurazione rinomina il set di dati con la chiave datasets.parag10.rule42 in position.