ISFIRST (Analisi dei flussi di Azure)

Restituisce 1 se l'evento è il primo evento entro un determinato intervallo fisso o 0 in caso contrario. Gli intervalli sono allineati allo stesso modo delle finestre a cascata (vedere Tumbling Window). ISFIRST non è interessato dai predicati nella clausola WHERE, dalle condizioni di join nella clausola JOIN o dalle espressioni di raggruppamento nella clausola GROUP BY della query corrente. ).

Sintassi

ISFIRST ( timeunit  , duration )   
    [ OVER ( [PARTITION BY partition_by_expression] [WHEN when_expression]) ]  
  

Argomenti

timeunit

Unità di tempo per la durata dell'intervallo. La tabella seguente elenca tutti i valori dell'unità temporale validi --- entrambi completi
i nomi e le abbreviazioni possono essere usati nella query.

Timeunit Abbreviazioni
day dd, d
hour hh
minute mi, n
second ss, s
millisecondo ms
microsecondo mcs

duration

Intero grande che specifica il numero di timeunits nell'intervallo. Ad esempio,
ISFIRST(minute, 15) esaminerà gli intervalli di 15 minuti. Gli orari di inizio degli intervalli sono
allineato allo stesso modo di nelle finestre a cascata (vedere Tumbling Window (Analisi di flusso di Azure) .

[ OVER ( partition_by_clause [when_clause]) ]

La clausola OVER specifica il subset degli eventi tra i quali viene classificato questo evento:

La clausola PARTITION BY partition_by_expression divide il set di risultati prodotto da FROM
clausola in partizioni a cui viene applicata la funzione. In altre parole, ogni evento viene confrontato
solo ad altri eventi che condividono il valore di partition_by_expression. Se non specificato, ogni
l'evento viene classificato rispetto a tutti gli altri eventi entro l'intervallo di tempo.

LA clausola WHEN when_expression specifica una condizione booleana da considerare per gli eventi.
In altre parole, ogni evento viene classificato solo rispetto ad altri eventi che soddisfano
when_expression. Se l'evento stesso non soddisfa when_expression, la funzione restituisce 0.
La clausola WHEN è facoltativa.

Tipi restituiti

bigint (rispettivamente '1' o '0' che rappresenta 'true' o 'false')

Osservazioni generali

ISFIRST è non deterministico. Gli eventi vengono elaborati in ordine temporale. Se sono presenti più eventi con lo stesso timestamp, tali eventi vengono elaborati nell'ordine di arrivo.

L'applicazione di ISFIRST nel set di risultati di una funzione di finestra può produrre risultati imprevisti. Le funzioni di finestra modificano il timestamp degli eventi, poiché ogni evento dell'operazione finestra restituisce l'evento alla fine della finestra. Il timestamp corrente di un evento può essere accessibile con system.timestamp(), dopo un'operazione di finestra diversa dall'attributo ora dell'evento originale. Se ISFIRST non può essere spostato prima dell'operazione della finestra, prendere in considerazione l'uso di CollectTop, ordinando in base all'ora dell'evento originale.

Esempio

Indica se un evento di lettura del sensore è il primo all'interno di intervalli di 10 minuti:

SELECT  
       reading,  
       ISFIRST(mi, 10) as first  
FROM Input  

Indica se un evento è il primo all'interno di intervalli di 10 minuti per dispositivoid:

SELECT  
       deviceid,  
       reading,  
       ISFIRST(mi, 10) OVER (PARTITION BY deviceid) as first  
FROM Input  

Indica se un evento è il primo evento con valore maggiore di 50 entro 10 minuti
per deviceid:

SELECT
       deviceid,
       reading,
       ISFIRST(mi, 10) OVER (PARTITION BY deviceid WHEN reading > 50 AND devicetype = 'thermostat') as firstAbove,
       ISFIRST(mi, 10) OVER (PARTITION BY deviceid WHEN reading < 50 AND devicetype = 'thermostat') as firstUnder
FROM Input
WHERE
       devicetype = 'thermostat'

Vedere anche

LAG (Analisi di flusso di Azure)
LAST (Analisi di flusso di Azure)