Sdílet prostřednictvím


ISFIRST (Azure Stream Analytics)

Vrátí hodnotu 1, pokud je událost první událostí v daném pevném intervalu, nebo 0 v opačném případě. Intervaly jsou zarovnané stejně jako přeskakující okna (viz Přeskakující okno). Funkce ISFIRST není ovlivněna predikáty v klauzuli WHERE, podmínkami spojení v klauzuli JOIN nebo seskupováním výrazů v klauzuli GROUP BY aktuálního dotazu. ).

Syntaxe

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

Argumenty

timeunit

Je jednotka času pro dobu trvání. Následující tabulka uvádí všechny platné hodnoty časových jednotek --- plné
v dotazu lze použít názvy a zkratky.

Časová nit Zkratky
day dd, d
hour hh
minute mi, n
second ss, s
Milisekund Paní
mikrosekundy Mcs

Doba trvání

Velké celé číslo, které určuje počet časových intervalů. Příklad:
Funkce ISFIRST(minuta; 15) se podívá na 15minutové intervaly. Počáteční časy intervalů jsou
zarovnané stejným způsobem jako v přeskakovaných oknech (viz Přeskakující okno (Azure Stream Analytics)).

[ OVER ( partition_by_clause [when_clause]) ]

Klauzule OVER určuje podmnožinu událostí, mezi které je tato událost zařazena:

KLAUZULE PARTITION BY partition_by_expression vyděluje sadu výsledků vygenerované parametrem FROM.
do oddílů, na které je funkce použita. Jinými slovy, každá událost se porovnává
pouze k takovým jiným událostem, které sdílejí její hodnotu partition_by_expression. Pokud není zadáno, každý
událost je seřazena s ohledem na všechny ostatní události v časovém intervalu.

KDYŽ when_expression klauzule určuje logickou podmínku pro události, které se mají vzít v úvahu.
Jinými slovy, každá událost je seřazena pouze ve srovnání s jinými událostmi, které vyhovují
when_expression. Pokud samotná událost nevyhovuje when_expression, vrátí funkce hodnotu 0.
Klauzule WHEN je volitelná.

Návratové typy

bigint (buď "1", nebo "0" představující "true" nebo "false")

Obecné poznámky

ISFIRST je nedeterministický. Události se zpracovávají v dočasném pořadí. Pokud existuje několik událostí se stejným časovým razítkem, události se zpracovávají v pořadí doručení.

Použití funkce ISFIRST na sadu výsledků funkce oken může vést k neočekávaným výsledkům . Funkce oken mění časové razítko událostí, protože každá operace okna vypíše událost na konci okna. Aktuální časové razítko události je přístupné pomocí system.timestamp() a po operaci okna se bude lišit od původního atributu času události. Pokud ISFIRST nejde přesunout před operací okna, zvažte použití Funkce CollectTop a řazení podle původního času události.

Příklady

Určete, jestli je událost čtení senzoru první během 10minutových intervalů přeskakování:

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

Určete, jestli je událost první během 10minutových intervalů přeskakování podle id zařízení:

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

Určení, jestli je událost první událostí s hodnotou větší než 50 během 10minutových intervalů přeskakování
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'

Viz také

LAG (Azure Stream Analytics)
LAST (Azure Stream Analytics)