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.
Ein SQL-Operator (Vorschau), auch als SQL-Code-Editor bezeichnet, ist eine neue Datentransformationsfunktion in Microsoft Fabric Eventstreams. SQL-Operatoren bieten eine Codebearbeitungsumgebung, in der Sie ihre eigene benutzerdefinierte Datentransformationslogik ganz einfach mithilfe einfacher SQL-Ausdrücke definieren können. In diesem Artikel wird beschrieben, wie Sie einen SQL-Operator für Datentransformationen in einem Eventstream verwenden.
Note
Namen von Ereignisstream-Artefakten, die einen Unterstrich (_) oder Punkt (.) enthalten, sind nicht mit SQL-Operatoren kompatibel. Um eine optimale Erfahrung zu erzielen, erstellen Sie einen neuen Ereignisstream, ohne Unterstriche oder Punkte im Artefaktnamen zu verwenden.
Prerequisites
- Zugriff auf einen Arbeitsbereich im Modus der Fabric-Kapazitätslizenz oder im Modus der Testlizenz mit Berechtigungen als Beitragende oder höher.
Hinzufügen eines SQL-Operators zu einem Ereignisstream
Um Datenstromverarbeitungsvorgänge für Ihre Datenströme mithilfe eines SQL-Operators auszuführen, fügen Sie ihrem Eventstream mithilfe der folgenden Anweisungen einen SQL-Operator hinzu:
Erstellen Sie einen neuen Eventstream. Fügen Sie dann einen SQL-Operator hinzu, indem Sie eine der folgenden Optionen verwenden:
Ihrem Eventstream wird ein neuer SQL-Knoten hinzugefügt. Wählen Sie das Bleistiftsymbol aus, um die Einrichtung des SQL-Operators fortzusetzen.
Geben Sie im SQL-Codebereich einen eindeutigen Namen für den SQL-Operatorknoten im Eventstream an.
Bearbeiten Sie die Abfrage im Abfragebereich, oder wählen Sie "Abfrage bearbeiten " aus, um die Vollbild-Code-Editor-Ansicht einzugeben.
Der Vollbild-Code-Editor-Modus verfügt über einen Eingabe-/Ausgabe-Explorer-Bereich auf der linken Seite. Der Code-Editor-Abschnitt ist anpassbar, sodass Sie die Größe entsprechend Ihren Wünschen ändern können. Im Vorschauabschnitt unten können Sie sowohl Die Eingabedaten als auch das Testergebnis Ihrer Abfrage anzeigen.
Markieren Sie den Text im Ausgabeabschnitt , und geben Sie dann einen Namen für den Zielknoten ein. Der SQL-Operator unterstützt alle Real-Time Intelligence-Ziele, einschließlich eines Eventhouses, eines Lakehouse, eines Aktivators oder eines Datenstroms.
Geben Sie einen Alias oder Namen für das Ausgabeziel an, in dem die über den SQL-Operator verarbeiteten Daten geschrieben werden.
Fügen Sie sql-Abfrage für die erforderliche Datentransformation hinzu.
Ein Eventstream basiert auf Azure Stream Analytics und unterstützt die gleiche Abfragesemantik der Stream Analytics-Abfragesprache. Weitere Informationen zur Syntax und Verwendung finden Sie unter Azure Stream Analytics und Eventstream Query Language Reference.
Hier ist die grundlegende Abfragestruktur:
SELECT column1, column2, ... INTO [output alias] FROM [input alias]Dieses Abfragebeispiel zeigt die Erkennung von hohen Temperaturen in einem Raum jede Minute:
SELECT System.Timestamp AS WindowEnd, roomId, AVG(temperature) AS AvgTemp INTO output FROM input GROUP BY roomId, TumblingWindow(minute, 1) HAVING AVG(temperature) > 75Dieses Abfragebeispiel zeigt eine
CASEAnweisung zum Kategorisieren der Temperatur:SELECT deviceId, temperature, CASE WHEN temperature > 85 THEN 'High' WHEN temperature BETWEEN 60 AND 85 THEN 'Normal' ELSE 'Low' END AS TempCategory INTO CategorizedTempOutput FROM SensorInputVerwenden Sie im Menüband den Befehl " Abfrage testen ", um die Transformationslogik zu überprüfen. Testabfrageergebnisse werden auf der Registerkarte " Testergebnis " angezeigt.
Wenn Sie mit dem Testen fertig sind, wählen Sie "Im Menüband speichern " aus, um zum Eventstream-Zeichenbereich zurückzukehren.
Wenn die Schaltfläche "Speichern" aktiviert ist, wählen Sie im BEREICH "SQL Code" die Option aus, um die Einstellungen zu speichern.
Konfigurieren Sie das Ziel.
Weitere Beispiele
Die folgenden Beispiele zeigen allgemeine Echtzeitanalyseszenarien, die Sie mit dem SQL-Operator implementieren können.
Aggregation von Stadtverkäufen pro Minute – Wird TumblingWindow verwendet, um feste, nicht überlappende Gesamtumsätze pro Minute nach Ort gruppiert zu berechnen:
SELECT
System.Timestamp AS WindowEnd,
city,
SUM(salesAmount) AS TotalSales
INTO
output
FROM
input
GROUP BY
city,
TumblingWindow(minute, 1)
Burst- und Bot-Erkennung – Wird verwendet HoppingWindow , um Benutzer zu erkennen, die eine ungewöhnlich hohe Anzahl von Aufträgen innerhalb eines fünfminütigen Rollfensters platzieren, die jede Minute ausgewertet werden:
SELECT
System.Timestamp AS WindowEnd,
userId,
COUNT(*) AS OrderCount
INTO
output
FROM
input
GROUP BY
userId,
HoppingWindow(minute, 5, 1)
HAVING
COUNT(*) > 10
Anomaliekennzeichnung gegen eine rollierende Basislinie – Verwenden Sie HoppingWindow, um einen gleitenden Durchschnitt zu berechnen und Geräte zu markieren, deren maximaler Metrikwert den doppelten Durchschnitt innerhalb des Fensters überschreitet, was auf eine potenzielle Anomalie hinweist:
SELECT
System.Timestamp AS WindowEnd,
deviceId,
AVG(metricValue) AS RollingAvg,
MAX(metricValue) AS CurrentMax
INTO
output
FROM
input
GROUP BY
deviceId,
HoppingWindow(minute, 10, 1)
HAVING
MAX(metricValue) > 2 * AVG(metricValue)
Schreiben Sie ausgehend von einem einzelnen SQL-Operator in mehrere Ziele
Mit dem SQL-Operator können Sie Daten an mehrere Ausgabesenken oder Ziele senden, indem Sie ihrer SQL-Abfrage mehrere INTO Klauseln hinzufügen und mehrere Ausgaben definieren.
Definieren mehrerer Ausgaben im Abfrage-Editor
Wählen Sie im SQL-Operatorknoten "Bearbeiten " (Bleistiftsymbol) aus, um den SQL-Codebereich zu öffnen.
Wählen Sie im BEREICH "SQL-Code " die Option "Abfrage bearbeiten" aus, um den Vollbild-Code-Editor zu öffnen.
Wählen Sie im Vollbild-Code-Editor im Abschnitt + die Option aus, um eine neue Ausgabe hinzuzufügen. Wählen Sie den Ausgabetyp Ihrer Wahl aus. Er erstellt einen Alias der Ausgabe, den Sie in einer Abfrage verwenden können. Wählen Sie den Namen der erstellten Ausgabe aus, und geben Sie einen Namen Ihrer Wahl ein.
Verwenden Sie mehrere SELECT INTO-Anweisungen
Jede SELECT Anweisung kann in eine andere Ausgabe schreiben. Fügen Sie die Abfrage hinzu, um die Ausgabe in mehrere Zielorte zu schreiben.
Im folgenden Abfragebeispiel schreibt die erste SELECT Anweisung in eine Ausgabe namens RawArchive (Typ: Lakehouse), und die zweite SELECT Anweisung schreibt in eine Ausgabe namens AggregationResults (Typ: Eventhouse).
-- Query 1: Archive all data to Lakehouse
SELECT *
INTO [RawArchive]
FROM [SQLDemoES-stream]
-- Query 2: Aggregate and filter data to create a real time dashboard to an Eventhouse
SELECT System.Timestamp() AS EventTime, COUNT(*) AS EventCount
INTO [AggregationResults]
FROM [SQLDemoES-stream]
GROUP BY TumblingWindow(minute, 1)
HAVING COUNT(*) > 100
Wiederverwendung von Zwischenlogik (bewährte Methode)
Wenn Sie das Duplizieren von Logik vermeiden möchten, verwenden Sie eine WITH-Klausel und verzweigen Sie sich von dort zu mehreren Ausgaben. Im folgenden Beispiel wird der InputStream allgemeine Tabellenausdruck (CTE) so definiert, dass er einmal aus dem Eingabestream gelesen wird, und dann verweisen die beiden SELECT Anweisungen auf das InputStream CTE, um in verschiedene Ausgabeziele zu schreiben. Dieser Ansatz ist effizienter, da das Lesen aus dem Eingabedatenstrom mehrmals vermieden wird.
Geben Sie die folgende Abfrage im SQL-Code-Editor ein, um einmal aus dem Eingabedatenstrom zu lesen und in mehrere Ausgaben zu schreiben.
--Base query: Reading input stream once With InputStream AS( SELECT * FROM [SQLDemoES-stream] ) -- Query 1: Archive all data to Lakehouse SELECT * INTO [RawArchive] FROM InputStream -- Query 2: Aggregate and filter data to create a real time dashboard to an Eventhouse SELECT System.Timestamp() AS EventTime, COUNT(*) AS EventCount INTO [AggregationResults] FROM InputStream GROUP BY TumblingWindow(minute, 1) HAVING COUNT(*) > 100Wählen Sie "Testabfrage" aus, um das Abfrageergebnis zu überprüfen. Jede in der Abfrage definierte Ausgabe verfügt über eine separate Registerkarte im Bereich " Testergebnisse ".
Wählen Sie "Speichern" aus, um die Abfrage zu speichern und den Editor zu beenden.
Wählen Sie " Speichern" im SQL-Editorbereich erneut aus.
Wählen Sie jeden zielknoten aus, der vom SQL-Operator erstellt wurde, und konfigurieren Sie dann die Zieleinstellungen für jeden dieser Knoten.
Nachdem Sie die Konfiguration abgeschlossen haben, sollte Ihr Eventstream wie im folgenden Beispiel aussehen, wobei der SQL-Operatorknoten zwei Ausgabeziele aufweist.
Konfigurieren von Ereignisbestellungsrichtlinien im SQL-Operator
Mit dem SQL-Operator können Sie Daten mithilfe von Ereignis- oder Anwendungszeit verarbeiten. Standardmäßig verwendet Eventstream die Ankunftszeit. Zur Verarbeitung nach Ereigniszeit müssen Sie sie explizit in TIMESTAMP BY Ihrer Abfrage konfigurieren.
Beispieleingabe
{
"deviceId": "device123",
"temperature": 72,
"eventTime": "2024-01-01T12:00:00Z"
}
Beispielabfrage mit Ereigniszeit
SELECT
deviceId,
temperature,
System.Timestamp() AS EventTimestamp
INTO
Output
FROM
Input
TIMESTAMP BY eventTime;
Sie können auch Schwellenwerte für verspätete Ankunfts- und außerhalb der Reihenfolge auftretende Ereignisse in den erweiterten Einstellungen des SQL-Operators hinzufügen.
Limitations
Der SQL-Operator ist so konzipiert, dass alle Transformationslogiken zentralisiert werden. Daher können Sie sie nicht zusammen mit anderen integrierten Operatoren innerhalb desselben Verarbeitungspfads verwenden. Das Verketten mehrerer SQL-Operatoren in einem einzigen Pfad wird ebenfalls nicht unterstützt.
Der SQL-Operator kann Ausgabedaten nur an den Zielknoten in der Topologie senden.
Derzeit werden Ereignisstreamtopologien nur über die Benutzeroberfläche unterstützt. DIE REST-API-Unterstützung für den SQL-Operator ist noch nicht verfügbar.