Condividi tramite


Arricchire i dati usando i flussi di dati

Importante

Questa pagina include istruzioni per la gestione dei componenti di Operazioni IoT di Azure usando i manifesti di distribuzione kubernetes, disponibile in anteprima. Questa funzionalità viene fornita con diverse limitazioni e non deve essere usata per i carichi di lavoro 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.

È 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.

Per caricare dati di esempio nell'archivio stati, usare l'interfaccia della riga di comando dell'archivio stati.

Si consideri ad esempio il set di dati seguente con alcuni record, usando il formato delle righe 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 operazioni IoT di Azure usando un valore della chiave in base a una condizione specificata nella configurazione del mapping. I nomi delle chiavi nell'archivio stati 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 all'archivio stati 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 richiede il set di dati e quindi riceve le notifiche dall'archivio stati relative alle 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(permissions).NightShift' // - $2
]

I riferimenti di input usano la chiave del set di dati, ad esempio position o permission. Se la chiave nell'archivio stati 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.