Azure Stream Analytics 中類似 SQL 的查詢語言,使得對串流資料實作即時分析邏輯變得容易。 Stream Analytics 透過查詢中調用的自訂函數,提供額外的彈性。 以下程式碼範例是一個名為 sampleFunction 的 UDF,該函數接受一個參數,處理作業接收到的每個輸入記錄,並將結果作為 sampleResult 寫入輸出。
SELECT
UDF.sampleFunction(InputStream) AS sampleResult
INTO
output
FROM
InputStream
函式類型
Azure Stream Analytics 支援以下四種功能類型:
- JavaScript 使用者自訂函式
- JavaScript 使用者自訂聚合
- C# 使用者定義函式(使用 Visual Studio)
- Azure Machine Learning
你可以將這些函式用於使用機器學習模型進行即時計分、字串操作、複雜數學計算、資料編碼與解碼等情境。
這很重要
Azure Stream Analytics 的 C# 使用者自訂函式將於 2024 年 9 月 30 日退休。 超過那個日期後,就無法使用這個功能了。
局限性
使用者自訂函數為無狀態,回傳值只能是純量值。 你無法從這些使用者定義函式呼叫外部 REST 端點,因為這很可能會影響你的工作效能。
Azure Stream Analytics 不會記錄所有函式調用和回傳結果。 為了確保可重複性——例如,從較舊的時間戳重新執行工作會得到相同的結果——不要使用諸如Date.GetData()或Math.random()這類函式,因為這些函式不會每次呼叫都返回相同的結果。
資源日誌
任何執行時錯誤都被視為致命,並會透過活動日誌和資源日誌顯示。 建議你的函式處理所有例外與錯誤,並回傳有效的查詢結果。 這樣可以防止你的工作變成 失敗狀態。
例外狀況處理
在資料處理過程中出現任何例外,在使用 Azure Stream Analytics 時都被視為災難性失敗。 使用者自訂函式更有可能拋出例外並導致處理中斷。 為避免此問題,請使用 JavaScript 或 C# 中的 try-catch 區塊,在程式碼執行時捕捉異常。 被發現的例外可以被記錄並處理,而不會造成系統故障。 建議你總是用 try-catch 區塊包裝自訂程式碼,以避免將意外的例外拋出給處理引擎。
下一步
- Azure Stream Analytics 中的 JavaScript 使用者定義函數
- Azure Stream Analytics JavaScript 使用者定義彙總
- 開發適用於 Azure Stream Analytics 作業的 .NET Standard 自定義函數
- 將 Azure 串流分析與 Azure Machine Learning 整合