Benutzerdefinierte Funktionen in Azure Stream Analytics

Die SQL-ähnliche Abfragesprache in Azure Stream Analytics erleichtert die Implementierung von Echtzeitanalyselogik für Streamingdaten. Stream Analytics bietet zusätzliche Flexibilität durch benutzerdefinierte Funktionen, die in Ihrer Abfrage aufgerufen werden. Das folgende Codebeispiel ist eine UDF namens sampleFunction, die einen Parameter akzeptiert und für jeden Eingabedatensatz, den der Auftrag empfängt, das Ergebnis in die Ausgabe als sampleResult schreibt.

SELECT 
    UDF.sampleFunction(InputStream) AS sampleResult 
INTO 
    output 
FROM 
    InputStream 

Funktionstypen

Azure Stream Analytics unterstützt die folgenden vier Funktionstypen:

  • Benutzerdefinierte JavaScript-Funktionen
  • Benutzerdefinierte JavaScript-Aggregate
  • Benutzerdefinierte C#-Funktionen (mit Visual Studio)
  • Azure Machine Learning

Sie können diese Funktionen für Szenarien wie die Echtzeitbewertung mithilfe von Machine Learning-Modellen, Zeichenfolgenmanipulationen, komplexen mathematischen Berechnungen, Codieren und Decodieren von Daten verwenden.

Von Bedeutung

Benutzerdefinierte C#-Funktionen für Azure Stream Analytics werden am 30. September 2024 eingestellt. Nach diesem Datum ist es nicht möglich, das Feature zu verwenden.

Einschränkungen

Benutzerdefinierte Funktionen sind zustandslos, und der Rückgabewert kann nur ein skalarer Wert sein. Sie können externe REST-Endpunkte von diesen benutzerdefinierten Funktionen nicht aufrufen, da sich dies wahrscheinlich auf die Leistung Ihres Auftrags auswirkt.

Azure Stream Analytics zeichnet nicht alle Funktionsaufrufe und zurückgegebenen Ergebnisse auf. Um eine Wiederholbarkeit zu garantieren – sodass beispielsweise die erneute Ausführung eines Auftrags mit einem älteren Zeitstempel die gleichen Ergebnisse liefert – sollten Sie keine Funktionen wie Date.GetData() oder Math.random() verwenden, da diese Funktionen nicht bei jedem Aufruf dasselbe Ergebnis liefern.

Ressourcenprotokolle

Laufzeitfehler werden als schwerwiegend betrachtet und werden über Aktivitäts- und Ressourcenprotokolle angezeigt. Es wird empfohlen, dass Ihre Funktion alle Ausnahmen und Fehler behandelt und ein gültiges Ergebnis an Ihre Abfrage zurückgibt. Dadurch wird verhindert, dass Ihr Auftrag in den Status "Fehlgeschlagen" wechselt.

Ausnahmenbehandlung

Jede Ausnahme während der Datenverarbeitung wird als katastrophaler Fehler beim Verwenden von Daten in Azure Stream Analytics betrachtet. Benutzerdefinierte Funktionen haben ein höheres Potenzial, Ausnahmen auszulösen und dazu zu führen, dass die Verarbeitung beendet wird. Um dieses Problem zu vermeiden, verwenden Sie einen Try-Catch-Block in JavaScript oder C#, um Ausnahmen während der Codeausführung abzufangen. Ausnahmen, die abgefangen werden, können protokolliert und behandelt werden, ohne dass ein Systemfehler verursacht wird. Es wird empfohlen, den benutzerdefinierten Code immer in einen try-catch-Block einzuschließen, damit keine unerwarteten Ausnahmen für das Verarbeitungsmodul ausgelöst werden.

Nächste Schritte