Verweisdaten für JOIN-Vorgänge (Azure Stream Analytics)
In einem üblichen Szenario verwenden wir eine Ereignisverarbeitungs-Engine zum Berechnen von Streamingdaten mit sehr niedriger Latenz. In vielen Fällen müssen Benutzer beständig gespeicherte Verlaufsdaten oder ein sich langsam veränderndes Dataset (d. h. Verweisdaten) mit dem Datenstrom in Echtzeit korrelieren, um intelligentere Entscheidungen zum System zu treffen. Sie können z. B. einen JOIN-Vorgang für den eigenen Ereignisstream mit einem statischen Dataset ausführen, der IP-Adressen zu Standorten zuordnet. Dies ist der einzige in Stream Analytics unterstützte JOIN-Vorgang, bei dem eine zeitliche Begrenzung nicht erforderlich ist. Referenzdaten können auch verwendet werden, um gerätespezifische Schwellenwerte zu haben.
Beispiel
Wenn gewerbliche Fahrzeuge bei der Mautstelle registriert sind, können sie das Mauthäuschen passieren, ohne für eine Überprüfung angehalten zu werden. Wir verwenden eine Nachschlagetabelle für die Registrierung gewerblicher Fahrzeuge, um alle gewerblichen Fahrzeuge mit abgelaufenen Registrierung zu bestimmen.
SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId
FROM Input1 I1 TIMESTAMP BY EntryTime
JOIN Registration R
ON I1.LicensePlate = R.LicensePlate
WHERE R.Expired = '1'
Besonderheiten der Join-Referenzdaten
- Für das Verwenden von "JOIN-Vorgang für Verweisdaten" muss eine Eingabequelle für Verweisdaten definiert sein.
- Verweisdaten-JOIN wird für inneres JOIN (Standard) und linkes äußeres JOIN mit Verweisdaten auf der rechten Seite des JOIN-Operators unterstützt.
- Datentypen sind ein wichtiger Aspekt bei der Auswertung des Join-Prädikats (
ON
-Klausel). Ähnliche Werte für verschiedene Datentypen (1.0
und"1"
) werden möglicherweise nicht übereinstimmen. Die explizite Konvertierung von Schlüsseln in einen allgemeinen Typ wird empfohlen. - Referenzdaten können statisch (nur einmal geladen) oder dynamisch (regelmäßig aktualisiert) sein. Aber auch im dynamischen Fall machen Verweisdaten keinen Zeitfortschritt, sodass der Stream auf der linken Seite neue Ereignisse abrufen muss, um Ausgaben zu erzeugen. Weitere Informationen finden Sie auch unter Fortschritt der Zeit in Azure Stream Analytics .
Überlegungen zur Leistung
Um Leistungseinbußen zu vermeiden, sollten Verweisjoindikate (ON
-Klausel) über einfache Schlüsselgleichheiten (ON s.myKey = r.myKey
) definiert werden. Die Verwendung komplexer Ausdrücke oder Ungleichheiten führt intern zu Kreuzjoins gefolgt von Filtern (vollständige Überprüfung im Vergleich zu Nachschlagevorgängen), was sich erheblich auf die Gesamtlatenz auswirken kann.
Verschieben Sie diese komplexen Ausdrücke nach Möglichkeit in die WHERE
-Klausel des Abfrageschritts, oder fügen Sie die gleichen Verweisdaten mehrmals mit einfacheren Bedingungen zusammen.