共用方式為


Azure Stream Analytics 中的自訂函式

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 區塊包裝自訂程式碼,以避免將意外的例外拋出給處理引擎。

下一步