Delen via


ISFIRST (Azure Stream Analytics)

Retourneert 1 als de gebeurtenis de eerste gebeurtenis binnen een bepaald vast interval is, of anders 0. De intervallen worden op dezelfde manier uitgelijnd als tumblingvensters (zie Tumblingvenster). ISFIRST wordt niet beïnvloed door predicaten in de WHERE-component, joinvoorwaarden in join-component of groeperingsexpressies in GROUP BY-component van de huidige query. ).

Syntaxis

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

Argumenten

tijdeenheid

Is de tijdseenheid voor de duur. De volgende tabel bevat alle geldige tijdeenheidwaarden --- beide vol
namen en afkortingen kunnen worden gebruikt in de query.

Tijdeenheid Afkortingen
day dd, d
uur hh
minuut mi, n
seconde ss, s
Milliseconde ms
microseconde Mcs

Duur

Een groot geheel getal dat het aantal tijdeenheden in het interval aangeeft. Bijvoorbeeld
ISFIRST (minuut, 15) kijkt naar intervallen van 15 minuten. De begintijden van de intervallen zijn
op dezelfde manier zijn uitgelijnd als in tumblingvensters (zie Tumblingvenster (Azure Stream Analytics)).

[ OVER ( partition_by_clause [when_clause]) ]

De component OVER specificeert de subset van de gebeurtenissen waaronder deze gebeurtenis is gerangschikt:

PARTITION BY partition_by_expression component verdeelt de resultatenset die wordt geproduceerd door de FROM
component in partities waarop de functie wordt toegepast. Met andere woorden, elke gebeurtenis wordt vergeleken
alleen voor dergelijke andere gebeurtenissen die de waarde van partition_by_expression delen. Indien niet opgegeven, elke
gebeurtenis wordt gerangschikt met betrekking tot alle andere gebeurtenissen binnen het tijdsinterval.

WANNEER when_expression component een booleaanse voorwaarde opgeven voor de gebeurtenissen die moeten worden overwogen.
Met andere woorden, elke gebeurtenis wordt alleen gerangschikt in vergelijking met dergelijke andere gebeurtenissen die voldoen aan
when_expression. Als de gebeurtenis zelf niet voldoet aan when_expression, retourneert de functie 0.
De WHEN-component is optioneel.

Retourtypen

bigint (ofwel '1' of '0' die respectievelijk 'waar' of 'onwaar' vertegenwoordigen)

Algemene opmerkingen

ISFIRST is niet-deterministisch. Gebeurtenissen worden verwerkt in tijdelijke volgorde. Als er meerdere gebeurtenissen met dezelfde tijdstempel zijn, worden gebeurtenissen in de volgorde van aankomst verwerkt.

Het toepassen van ISFIRST op de resultatenset van een windowing-functie kan onverwachte resultaten opleveren. Vensterfuncties wijzigen de tijdstempel van gebeurtenissen, omdat elke vensterbewerking gebeurtenis aan het einde van het venster uitvoert. De huidige tijdstempel van een gebeurtenis kan worden geopend met system.timestamp(), na een vensterbewerking verschilt deze van het oorspronkelijke gebeurtenistijdkenmerk. Als ISFIRST niet kan worden verplaatst vóór de vensterbewerking, kunt u overwegen CollectTop te gebruiken en te ordenen op de oorspronkelijke gebeurtenistijd.

Voorbeelden

Geef aan of een sensorleesevenement de eerste tumblingintervallen van 10 minuten is:

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

Geef aan of een gebeurtenis de eerste tumblingintervallen binnen 10 minuten is per deviceid:

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

Aangeven of een gebeurtenis de eerste gebeurtenis is met een waarde groter dan 50 binnen tumblingintervallen van 10 minuten
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'

Zie ook

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