Delen via


ISFIRST

✅ Azure Stream Analytics ✅ Fabric Eventstream

Retourneert 1 als de gebeurtenis de eerste gebeurtenis is binnen een bepaald vast interval, of anders 0. De intervallen worden op dezelfde manier uitgelijnd als tumblingvensters (zie Tumblingvenster). ISFIRST wordt niet beïnvloed door predicaten in 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
dagen dd, d
uur Hh
minuut mi, n
tweede ss, s
milliseconde mevrouw
microseconde Mcs

duur

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

[ OVER ( partition_by_clause [when_clause]) ]

Met de OVER-component wordt de subset opgegeven van de gebeurtenissen waaronder deze gebeurtenis is gerangschikt:

PARTITION BY partition_by_expression component deelt 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. Als dit niet is opgegeven, worden alle
gebeurtenis wordt gerangschikt met betrekking tot alle andere gebeurtenissen binnen het tijdsinterval.

WANNEER when_expression component een Booleaanse voorwaarde opgeeft 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 (respectievelijk '1' of '0' die 'waar' of 'onwaar' vertegenwoordigt)

Algemene opmerkingen

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

Het toepassen van ISFIRST op de resultatenset van een vensterfunctie kan onverwachte resultaten opleveren. Vensterfuncties wijzigen de tijdstempel van gebeurtenissen, omdat elke vensterbewerking de 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 kenmerk van de gebeurtenistijd. Als ISFIRST niet kan worden verplaatst vóór de vensterbewerking, kunt u overwegen CollectTop te gebruiken, te ordenen op basis van de oorspronkelijke gebeurtenistijd.

Voorbeelden

Geef aan of een sensorleesbeurt de eerste binnen 10 minuten tumblingintervallen is:

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

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

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

Geef aan of een gebeurtenis de eerste gebeurtenis is met een waarde groter dan 50 binnen 10 minuten tumblingintervallen
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
LAATSTE