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


ISFIRST

✅ Azure Stream Analytics ✅ Fabric Eventstream

1 értéket 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 lévő csoportosítási kifejezések. ).

Szemantika

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

Érvek

timeunit

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

Timeunit Rövidítések
nap dd, d
óra Hh
perc mi, n
második 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 csapóablakokban (lásd: Átfedésmentes ablak).

[ OVER ( partition_by_clause [when_clause]) ]

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

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

A WHEN when_expression záradék logikai feltételt ad meg a figyelembe venni kívánt eseményekhez.
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 megadása 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 nemdeterminista. Az események időbeli sorrendben vannak feldolgozva. Ha több, azonos időbélyeggel rendelkező eseményt is feldolgozunk érkezési sorrendben.

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 lévő eseményt adja ki. Egy esemény aktuális időbélyege a system.timestamp() használatával érhető el, egy 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

Jelezze, 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 az első-e 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  

Annak jelzése, hogy az esemény az első olyan esemény-e, 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:

LEMARADÁS
UTOLSÓ