Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
✅ Analisi di flusso di Azure
A ogni evento in ogni fase della query in Analisi di flusso di Azure è associato un timestamp. System.Timestamp() è una proprietà di sistema che può essere utilizzata per recuperare il timestamp dell'evento.
Di seguito viene descritto come Analisi di flusso di Azure assegna i timestamp agli eventi.
Timestamp degli eventi di input
Il timestamp dell'evento di input può essere definito dal valore di colonna (o da un'espressione) specificato nella clausola TIMESTAMP BY :
SELECT System.Timestamp() t
FROM input
TIMESTAMP BY MyTimeField
Se non viene specificata una clausola TIMESTAMP BY per un determinato input, l'ora di arrivo dell'evento viene utilizzata come timestamp. Ad esempio, l'ora accodata dell'evento verrà usata in caso di input dell'hub eventi.
Timestamp dell'evento risultante
Quando vengono eseguiti calcoli, il timestamp dell'evento risultante è il tempo logico meno recente in cui è possibile determinare questo risultato.
Si esaminerà ora come le operazioni di query di base in Analisi di flusso di Azure (filtri, proiezioni, aggregazioni e join) generano i timestamp per il risultato.
Projection
SELECT
Prop1,
Prop2,
Prop3 - Prop4 / 12,
System.Timestamp() t
FROM input
Le proiezioni non modificano il timestamp dell'evento, il timestamp del risultato corrisponde al timestamp dell'input.
Filter
SELECT *
FROM input
WHERE prop1 > prop2
I filtri non modificano il timestamp dell'evento. Il timestamp del risultato corrisponde al timestamp dell'input.
GROUP BY nell'intervallo di tempo
SELECT
userId,
AVG(prop1),
SUM(prop2),
System.Timestamp() t
FROM input
GROUP BY TumblingWindow(minute, 1), userId
Il timestamp del risultato dell'aggregazione è la fine dell'intervallo di tempo a cui corrisponde questo risultato. Vedere gli articoli windowing che descrivono diversi tipi di finestra in Analisi di flusso di Azure.
INNER JOIN
SELECT
System.Timestamp()
FROM input1
JOIN input2
ON DATEDIFF(minute, input1, input2) BETWEEN 0 AND 10
Un inner join produce risultati che corrispondono a coppie di eventi corrispondenti da input1 e input2.
L'evento che rappresenta la corrispondenza dell'evento e1 da input1 e e2 da input2 viene timestampato dall'ultimo timestamp di e1 ed e2.
LEFT OUTER JOIN
SELECT
System.Timestamp()
FROM input1
LEFT JOIN input2
ON DATEDIFF(minute, input1, input2) BETWEEN -2 AND 10
Un left-outer join produce risultati di due tipi. Alcuni corrispondono a una coppia di eventi corrispondente da input1 e input2; altri corrispondono solo a un evento di input1 e indicano che non è stato trovato alcun evento corrispondente da input2.
Gli eventi che rappresentano una corrispondenza (con input1 e input2) vengono timestampati dall'ultimo timestamp degli input corrispondenti (come nel caso di INNER JOIN precedente).
Gli eventi che rappresentano corrispondenze non (input2 è NULL) vengono timestampati dall'ora logica più recente in cui potrebbe essersi verificato un evento input2 corrispondente. Ad esempio, nell'esempio precedente, è il timestamp di input1 + 10 minuti.