Condividi tramite


JOIN dei dati di riferimento (Analisi di flusso di Azure)

Uno scenario comune prevede l'uso di un motore di elaborazione di eventi per calcolare i dati di streaming con latenza molto bassa. In molti casi gli utenti devono correlare dati cronologici persistenti o un set di dati che cambia lentamente (chiamati anche dati di riferimento) al flusso di eventi in tempo reale, in modo da adottare decisioni più intelligenti sul sistema. Ad esempio, si potrebbe eseguire il join di un flusso di eventi a un set di dati statico che esegue il mapping di indirizzi IP a località. Questa è l'unica operazione JOIN supportata in Analisi di flusso in cui non è necessaria un'associazione temporale. I dati di riferimento possono essere usati anche per avere valori soglia specifici del dispositivo.

Esempio

Se un veicolo commerciale è registrato presso la società Toll Company, può attraversare il casello senza essere fermato per l'ispezione. Verrà usata una tabella di ricerca delle registrazioni dei veicoli commerciali per identificare tutti i veicoli la cui registrazione è scaduta.

SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId  
FROM Input1 I1 TIMESTAMP BY EntryTime  
JOIN Registration R  
ON I1.LicensePlate = R.LicensePlate  
WHERE R.Expired = '1'

Particolarità del join dati di riferimento

  • L'uso di JOIN dei dati di riferimento richiede la definizione di un'origine di input per i dati di riferimento.
  • I dati di riferimento JOIN sono supportati per inner JOIN (impostazione predefinita) e left outer JOIN, con dati di riferimento sul lato destro dell'operatore JOIN.
  • I tipi di dati sono un aspetto importante nella valutazione del predicato di join (ON clausola). I valori simili in tipi di dati diversi (1.0 e "1") potrebbero non essere corrispondenti. È consigliabile convertire esplicitamente le chiavi in un tipo comune.
  • I dati di riferimento possono essere statici (caricati una sola volta) o dinamici (aggiornati regolarmente). Tuttavia, anche nel caso dinamico, i dati di riferimento non apportano lo stato di avanzamento del tempo in modo che il flusso sul lato sinistro debba ottenere nuovi eventi per produrre output. Per altre informazioni, vedere anche l'avanzamento del tempo nell'analisi di flusso di Azure .

Considerazioni sulle prestazioni

Per evitare la riduzione delle prestazioni, è necessario definire predicati di join di riferimento (ON clausola) tramite semplici equalità chiave (ON s.myKey = r.myKey). L'uso di espressioni complesse o disuguaglianze comporta internamente un cross join seguito da filtri (analisi completa e ricerca), che possono influire negativamente sulla latenza complessiva.

Se possibile, spostare queste espressioni complesse nella WHERE clausola del passaggio di query o aggiungere più volte gli stessi dati di riferimento a ognuna con condizioni più semplici.

Vedere anche