Freigeben über


Einführung in Stream Analytics-Fensterfunktionen

In Zeitstreamingszenarien besteht ein gängiges Muster darin, Vorgänge für die Daten auszuführen, die in zeitlichen Fenstern enthalten sind. Stream Analytics verfügt über systemeigene Unterstützung für Fensterfunktionen, sodass Sie komplexe Datenstromverarbeitungsaufträge mit minimalem Aufwand erstellen können.

Es gibt fünf Arten von zeitlichen Fenstern:

Verwenden Sie die Fensterfunktionen in der GROUP BY-Klausel der Abfragesyntax in Ihren Stream Analytics-Aufträgen. Sie können Ereignisse auch über mehrere Fenster mithilfe der Windows() -Funktion aggregieren.

Alle Windowing-Operationen geben Ergebnisse am Ende des Fensters aus. Wenn Sie einen Datenstromanalyseauftrag starten, können Sie die Startzeit des Auftrags angeben. Das System ruft automatisch vorherige Ereignisse in den eingehenden Datenströmen ab, um das erste Fenster zum angegebenen Zeitpunkt auszugeben. Wenn Sie beispielsweise mit der Option "Jetzt " beginnen, beginnt sie sofort mit dem Ausgeben von Daten. Die Ausgabe des Fensters ist ein einzelnes Ereignis, das auf der verwendeten Aggregatfunktion basiert. Das Ausgabeereignis hat den Zeitstempel des Endes des Fensters, und alle Fensterfunktionen werden mit einer festen Länge definiert.

Diagramm, das das Konzept der Stream Analytics-Fensterfunktionen zeigt.

Rollierendes Fenster

Verwenden Sie Tumbling-Fensterfunktionen , um einen Datenstrom in unterschiedliche Zeitsegmente zu segmentieren und eine Funktion dafür auszuführen.

Die wichtigsten Unterscheidungsmerkmale eines Sturzfensters sind:

  • Sie wiederholen sich nicht.
  • Sie überschneiden sich nicht.
  • Ein Ereignis darf nicht zu mehr als einem rollierendem Fenster gehören.

Diagramm, das ein Beispiel für ein Stream Analytics-Tumbling-Fenster zeigt.

Hier sind die Eingabedaten für das Beispiel:

Briefmarke CreatedAt TimeZone
1 2021-10-26T10:15:01 Pazifische Standardzeit (PST)
5 2021-10-26T10:15:03 PST
4 2021-10-26T10:15:06 Pazifische Standardzeit (PST)
... ... ...

Hier ist die Beispielabfrage:

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

Hier ist die Beispielausgabe:

WindowEndTime (FensterEndzeit) TimeZone Count
2021-10-26T10:15:10 PST 5
2021-10-26T10:15:20 Pazifische Standardzeit (PST) 2
2021-10-26T10:15:30 PST 4

Springendes Fenster

Springende Fensterfunktionen springen in der Zeit um eine feste Periode vorwärts. Sie können sie sich wie rollierende Fenster vorstellen, die sich überlappen können und häufiger als die Fenstergröße ausgegeben werden. Ereignisse können zu Resultsets von mehr als einem springenden Fenstern gehören. Um ein Hopping-Fenster wie ein Tumbling-Fenster zu gestalten, geben Sie die Sprunggröße an, sodass sie mit der Fenstergröße identisch ist.

Diagramm, das ein Beispiel für das Hopping-Fenster zeigt.

Hier sind die Beispieldaten:

Briefmarke CreatedAt Thema
1 2021-10-26T10:15:01 Streamen
5 2021-10-26T10:15:03 Streamen
4 2021-10-26T10:15:06 Streamen
... ... ...

Hier ist die Beispielabfrage:

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

Hier ist die Beispielausgabe:

WindowEndTime (FensterEndzeit) Thema Count
2021-10-26T10:15:10 Streamen 5
2021-10-26T10:15:15 Streamen 3
2021-10-26T10:15:20 Streamen 2
2021-10-26T10:15:25 Streamen 4
2021-10-26T10:15:30 Streamen 4

Gleitendes Fenster

Gleitende Fenster, im Gegensatz zu kippenden oder springenden Fenstern, geben Ereignisse nur zu Zeitpunkten aus, an denen sich der Inhalt des Fensters tatsächlich ändert. Mit anderen Worten, wenn ein Ereignis in das Fenster eintritt oder es verlässt. Jedes Fenster verfügt also über mindestens ein Ereignis. Ähnlich wie bei springenden Fenstern können Ereignisse zu mehr als einem gleitenden Fenster gehören.

Diagramm, das ein Beispiel für ein Gleitfenster zeigt.

Hier sind die Beispieleingabedaten:

Briefmarke CreatedAt Thema
1 2021-10-26T10:15:10 Streamen
5 2021-10-26T10:15:12 Streamen
9 2021-10-26T10:15:15 Streamen
7 2021-10-26T10:15:15 Streamen
8 2021-10-26T10:15:27 Streamen

Hier ist die Beispielabfrage:

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

Ausgabe:

WindowEndTime (FensterEndzeit) Thema Count
2021-10-26T10:15:15 Streamen 4
2021-10-26T10:15:20 Streamen 3

Sitzungsfenster

Sitzungsfensterfunktionen gruppieren Ereignisse, die zu ähnlichen Zeiten eingehen. Sie filtern Zeiträume heraus, in denen keine Daten vorhanden sind. Die Sitzungsfensterfunktion weist drei Hauptparameter auf:

  • Zeitlimit
  • Maximale Dauer
  • Partitionierungsschlüssel (optional).

Diagramm, das ein Stream Analytics-Beispielsitzungsfenster zeigt.

Ein Sitzungsfenster beginnt, wenn das erste Ereignis auftritt. Wenn ein anderes Ereignis innerhalb des angegebenen Timeouts vom letzten aufgenommenen Ereignis auftritt, wird das Fenster erweitert, um das neue Ereignis einzuschließen. Andernfalls wird das Fenster beim Timeout geschlossen, wenn innerhalb des Timeouts keine Ereignisse auftreten.

Wenn Ereignisse innerhalb des angegebenen Timeouts weiterhin auftreten, verlängert sich das Sitzungsfenster so lange, bis die maximale Dauer erreicht ist. Die maximalen Prüfintervalle haben die gleiche Größe wie die angegebene maximale Dauer. Wenn die maximale Dauer beispielsweise 10 beträgt, wird geprüft, ob das Fenster die maximale Dauer überschreitet, und zwar bei t = 0, 10, 20, 30 usw.

Wenn Sie einen Partitionsschlüssel bereitstellen, gruppiert die Funktion die Ereignisse nach dem Schlüssel und wendet das Sitzungsfenster unabhängig voneinander auf jede Gruppe an. Diese Partitionierung ist nützlich für Fälle, in denen Sie unterschiedliche Sitzungsfenster für unterschiedliche Benutzer oder Geräte benötigen.

Hier sind die Beispieleingabedaten:

Briefmarke CreatedAt Thema
1 2021-10-26T10:15:01 Streamen
2 2021-10-26T10:15:04 Streamen
3 2021-10-26T10:15:13 Streamen
... ... ...

Hier ist die Beispielabfrage:

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

Ausgabe:

WindowEndTime (FensterEndzeit) Thema Count
2021-10-26T10:15:09 Streamen 2
2021-10-26T10:15:24 Streamen 4
2021-10-26T10:15:31 Streamen 2
2021-10-26T10:15:39 Streamen 1

Momentaufnahmefenster

Snapshot gruppiert Fensterereignisse, die denselben Zeitstempel haben. Im Gegensatz zu anderen Fenstertypen, die eine bestimmte Fensterfunktion erfordern (z. B. SessionWindow()), können Sie ein Momentaufnahmefenster anwenden, indem Sie der System.Timestamp() Klausel hinzufügenGROUP BY.

Diagramm, das ein Beispielfenster für Steam Analytics-Momentaufnahmen zeigt.

Hier sind die Beispieleingabedaten:

Briefmarke CreatedAt Thema
1 2021-10-26T10:15:04 Streamen
2 2021-10-26T10:15:04 Streamen
3 2021-10-26T10:15:04 Streamen
... ... ...

Hier ist die Beispielabfrage:

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

Hier ist die Beispielausgabe:

WindowEndTime (FensterEndzeit) Thema Count
2021-10-26T10:15:04 Streamen 4
2021-10-26T10:15:10 Streamen 2
2021-10-26T10:15:13 Streamen 1
2021-10-26T10:15:22 Streamen 2

Nächste Schritte

Weitere Informationen finden Sie in folgenden Artikeln: