OVER (Azure Stream Analytics)
Voor elke rij bepaalt de component OVER de groepering van rijen voordat een bijbehorende statistische of analytische functie wordt toegepast.
U kunt de component OVER overal gebruiken waar een scalaire functie is toegestaan. U kunt bijvoorbeeld de component OVER gebruiken in de componenten SELECT, WHERE, JOIN of GROUP BY.
De COMPONENT OVER groepeert rijen rechtstreeks vanuit de queryinvoer. Dit wordt niet beïnvloed door predicaten in de WHERE-component, joinvoorwaarden in de JOIN-component of groepeervoorwaarden in de GROUP BY-component.
Op dit moment worden de volgende statistische functies ondersteund met de COMPONENT OVER:
- SUM
- AVG
- MIN
- MAX
Syntaxis
OVER ([<PARTITION BY clause>] <LIMIT DURATION clause> [<WHEN clause>])
<PARTITION BY clause> ::== PARTITION BY partition_key, ... [n]
<LIMIT DURATION clause> ::== LIMIT DURATION (unit, length)
<WHEN clause> ::== WHEN boolean_expression
Argumenten
<PARTITION BY-component>
Hiermee geeft u op dat alleen de rijen met dezelfde <partition_key> in aanmerking komen voor de statistische of analytische functie.
<COMPONENT LIMIT DURATION>
Hiermee geeft u op hoeveel geschiedenis van de huidige rij wordt opgenomen in de groep. Zie DATEDIFF voor een gedetailleerde beschrijving van ondersteunde eenheden en hun afkortingen.
<WHEN-COMPONENT>
Hiermee geeft u de booleaanse voorwaarde voor de rijen moeten worden opgenomen in de groep.
Algemene opmerkingen
Het toepassen van een statistische of analytische functie met OVER 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.
Voorbeelden
Bereken de gemiddelde temperatuur van de afgelopen 5 minuten per sensor:
SELECT AVG(temperature) OVER (PARTITION BY id LIMIT DURATION (minute, 5))
FROM input
Een waarschuwing geven als de resource het afgelopen uur een slechte status heeft gehad:
SELECT 1 AS alert
FROM input
WHERE MAX(healthy) OVER (PARTITION BY id LIMIT DURATION (hour, 1)) = 0