Megosztás a következőn keresztül:


ISFIRST (Azure Stream Analytics)

1-et ad vissza, ha az esemény az első esemény egy adott rögzített intervallumon belül, vagy 0 ellenkező esetben. Az intervallumok ugyanúgy vannak igazítva, mint a ugróablakok (lásd: Átfedésmentes ablak). Az ISFIRST-et nem érintik a WHERE záradék predikátumai, a JOIN záradék illesztési feltételei vagy az aktuális lekérdezés GROUP BY záradékában található csoportosítási kifejezések. ).

Szintaxis

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

Argumentumok

timeunit

Az időtartam időegysége. Az alábbi táblázat felsorolja az összes érvényes időegység-értéket, --- mind a
nevek és rövidítések használhatók a lekérdezésben.

Timeunit Rövidítések
nap dd, d
óra óó
perc mi, n
másodperc ss, s
ezredmásodperc Ms
mikroszekundum Mcs

Időtartam

Egy nagy egész szám, amely az időegységek számát adja meg az intervallumban. Például:
Az ISFIRST(perc, 15) 15 perces időközöket fog vizsgálni. Az intervallumok kezdő időpontjai a következők:
ugyanúgy van igazítva, mint a ugróablakokban (lásd: Átfedésmentes ablak (Azure Stream Analytics)).

[ OVER ( partition_by_clause [when_clause]) ]

Az OVER záradék határozza meg azoknak az eseményeknek a részhalmazát, amelyek között ez az esemény van rangsorolva:

A PARTITION BY partition_by_expression záradék elosztja a FROM által előállított eredményhalmazt
záradékot azokra a partíciókra, amelyekre a függvényt alkalmazza. Más szóval minden eseményt összehasonlítunk
csak az olyan egyéb eseményekre, amelyek a partition_by_expression értékét osztják meg. Ha nincs megadva, mindegyik
az esemény az időintervallumon belüli összes többi eseményre vonatkozóan van rangsorolva.

A WHEN when_expression záradék a figyelembe venni kívánt események logikai feltételét adja meg.
Más szóval minden esemény csak azokhoz az eseményekhez képest van rangsorolva, amelyek megfelelnek a
when_expression. Ha maga az esemény nem felel meg when_expression, a függvény 0 értéket ad vissza.
A WHEN záradék nem kötelező.

Visszatérési típusok

bigint (az "1" vagy a "0" az "igaz" vagy a "hamis" értéket jelöli)

Általános megjegyzések

Az ISFIRST nemdeterminisztikus. Az események időbeli sorrendben vannak feldolgozva. Ha több, azonos időbélyeggel rendelkező esemény is van, a rendszer az érkezés sorrendjében dolgozza fel az eseményeket.

Az ISFIRST alkalmazása egy ablakfüggvény eredményhalmazára váratlan eredményeket eredményezhet. Az ablakfüggvények megváltoztatják az események időbélyegét, mivel minden ablakművelet az ablak végén kimeneteli az eseményt. Egy esemény aktuális időbélyege a system.timestamp() használatával érhető el, az ablakművelet után az eltér az eredeti eseményidő attribútumtól. Ha az ISFIRST nem helyezhető át az ablakművelet előtt, fontolja meg a CollectTop használatát, és rendeljen az eredeti eseményidő szerint.

Példák

Annak jelzése, hogy az érzékelő olvasási eseménye az első 10 perces ugróintervallumon belül:

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

Adja meg, hogy egy esemény-e az első az eszközazonosítónkénti 10 perces ugróintervallumon belül:

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

Azt jelzi, hogy az esemény-e az első olyan esemény, amelynek értéke 50-nél nagyobb 10 perces ugróintervallumon belül
eszközazonosítónként:

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'

Lásd még:

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