Introduktion till Stream Analytics fönsterfunktioner

I tidsströmningsscenarier är det vanligt att utföra åtgärder på data som finns i tidsbaserade fönster. Stream Analytics har inbyggt stöd för fönsterfunktioner, vilket gör det möjligt för utvecklare att skapa komplexa dataströmbearbetningsjobb med minimal ansträngning.

Det finns fem typer av tidsfönster att välja mellan: fönsterför rullande fönster, hoppandefönster, glidandefönster, sessioner och ögonblicksbilder. Du använder fönsterfunktionerna i GROUP BY-satsen i frågesyntaxen i dina Stream Analytics jobb. Du kan också aggregera händelser över flera fönster med hjälp av Windows()-funktionen.

Alla fönsteråtgärders utdataresultat i slutet av fönstret. Observera att när du startar ett Stream Analytics-jobb kan du ange starttiden för jobbutdata så hämtar systemet automatiskt tidigare händelser i inkommande dataströmmar för att mata ut det första fönstret vid den angivna tiden. När du till exempel börjar med alternativet Nu börjar den generera data omedelbart. Utdata från fönstret är en enskild händelse baserat på den mängdfunktion som används. Utdatahändelsen har tidsstämpeln i slutet av fönstret och alla fönsterfunktioner definieras med en fast längd.

Stream Analytics för fönsterfunktioner

Rullande fönster

Funktioner för rullande fönster används för att segmentera en dataström i distinkta tidssegment och utföra en funktion mot dem, till exempel exemplet nedan. Viktiga egenskaper i ett rullande fönster är att de upprepas i stället för att överlappa varandra, samt att en händelse inte kan tillhöra mer än ett rullande fönster.

Stream Analytics rullande fönster

Med följande indata (visas ovan):

Stämpel CreatedAt TimeZone
1 2021-10-26T10:15:01 PST
5 2021-10-26T10:15:03 PST
4 2021-10-26T10:15:06 PST
... ... ...

Följande fråga:

SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)

Returnerar:

WindowEndTime TimeZone Antal
2021-10-26T10:15:10 PST 5
2021-10-26T10:15:20 PST 2
2021-10-26T10:15:30 PST 4

Hoppande fönster

Hoppande fönsterfunktioner hoppar framåt i tiden med en fast period. Det kan vara lätt att tänka på dem som rullande fönster som kan överlappa och genereras oftare än fönsterstorleken. Händelser kan tillhöra mer än en resultatuppsättning för hoppande fönster. Om du vill göra ett hoppande fönster detsamma som ett rullande fönster anger du att hoppstorleken ska vara samma som fönsterstorleken.

Stream Analytics hoppande fönster

Med följande indata (visas ovan):

Stämpel CreatedAt Avsnitt
1 2021-10-26T10:15:01 Strömning
5 2021-10-26T10:15:03 Strömning
4 2021-10-26T10:15:06 Strömning
... ... ...

Följande fråga:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)

Returnerar:

WindowEndTime Avsnitt Antal
2021-10-26T10:15:10 Strömning 5
2021-10-26T10:15:15 Strömning 3
2021-10-26T10:15:20 Strömning 2
2021-10-26T10:15:25 Strömning 4
2021-10-26T10:15:30 Strömning 4

Skjutfönster

Skjutfönster, till skillnad från rullande fönster eller hoppande fönster, matar endast ut händelser för tidpunkter när innehållet i fönstret faktiskt ändras. Det vill säga när en händelse kommer in i eller lämnar fönstret. Varje fönster har alltså minst en händelse. Händelser kan tillhöra fler än ett skjutfönster, ungefär som hoppande fönster.

Stream Analytics skjutfönster på 10 sekunder

Med följande indata (visas ovan):

Stämpel CreatedAt Avsnitt
1 2021-10-26T10:15:10 Strömning
5 2021-10-26T10:15:12 Strömning
9 2021-10-26T10:15:15 Strömning
7 2021-10-26T10:15:15 Strömning
8 2021-10-26T10:15:27 Strömning

Följande fråga:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3

Returnerar:

WindowEndTime Avsnitt Antal
2021-10-26T10:15:15 Strömning 4
2021-10-26T10:15:20 Strömning 3

Sessionsfönster

Sessionsfönstrets funktioner grupperar händelser som tas emot vid liknande tidpunkter och filtrerar bort tidsperioder där det inte finns några data. Den har tre huvudsakliga parametrar: timeout, maximal tidslängd och partitioneringsnyckel (valfritt).

Stream Analytics sessionsfönster

Ett sessionsfönster börjar när den första händelsen inträffar. Om en annan händelse inträffar inom den angivna tidsgränsen från den senast ingestade händelsen utökas fönstret med den nya händelsen. Om inga händelser inträffar inom tidsgränsen stängs fönstret vid tidsgränsen.

Om händelser fortsätter att inträffa inom den angivna tidsgränsen fortsätter sessionsfönstret att utökas tills den maximala varaktigheten nås. Intervallen för kontroll av maximal varaktighet anges till samma storlek som den angivna maximala varaktigheten. Om den maximala varaktigheten till exempel är 10 kontrolleras om perioden överskrider den maximala varaktigheten vid t = 0, 10, 20, 30 osv.

När en partitionsnyckel anges grupperas händelserna tillsammans med nyckeln och sessionsfönstret tillämpas på varje grupp oberoende av varandra. Den här partitionering är användbar för fall där du behöver olika sessionsfönster för olika användare eller enheter.

Med följande indata (visas ovan):

Stämpel CreatedAt Avsnitt
1 2021-10-26T10:15:01 Strömning
2 2021-10-26T10:15:04 Strömning
3 2021-10-26T10:15:13 Strömning
... ... ...

Följande fråga:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)

Returnerar:

WindowEndTime Avsnitt Antal
2021-10-26T10:15:09 Strömning 2
2021-10-26T10:15:24 Strömning 4
2021-10-26T10:15:31 Strömning 2
2021-10-26T10:15:39 Strömning 1

Fönstret Ögonblicksbild

Ögonblicksbilder av Windows-grupphändelser som har samma tidsstämpel. Till skillnad från andra fönstertyper som kräver en specifik fönsterfunktion (till exempel SessionWindow()kan du tillämpa ett ögonblicksbildsfönster genom att lägga till System.Timestamp() till GROUP BY-satsen.

Stream Analytics för ögonblicksbild

Med följande indata (visas ovan):

Stämpel CreatedAt Avsnitt
1 2021-10-26T10:15:04 Strömning
2 2021-10-26T10:15:04 Strömning
3 2021-10-26T10:15:04 Strömning
... ... ...

Följande fråga:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()

Returnerar:

WindowEndTime Avsnitt Antal
2021-10-26T10:15:04 Strömning 4
2021-10-26T10:15:10 Strömning 2
2021-10-26T10:15:13 Strömning 1
2021-10-26T10:15:22 Strömning 2

Nästa steg