Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
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.
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.
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.
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).
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.
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: