Azure Stream Analytics中的用户定义的函数

Azure Stream Analytics中类似于 SQL 的查询语言可以轻松地在流式处理数据上实现实时分析逻辑。 流分析通过查询中调用的自定义函数提供额外的灵活性。 下面的代码示例是一个名为sampleFunction的 UDF,它接受作为参数的每个作业接收的输入记录,并将结果写入输出sampleResult

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

函数类型

Azure Stream Analytics支持以下四种函数类型:

  • JavaScript 用户定义的函数
  • JavaScript 用户定义的聚合
  • C# 用户定义的函数(使用Visual Studio)
  • Azure 机器学习

对于使用机器学习模型、字符串操作、复杂的数学计算、编码和解码数据等方案,可以使用这些函数进行实时评分。

重要

Azure Stream Analytics的 C# 用户定义函数将于 2024 年 9 月 30 日停用。 在该日期之后,无法使用该功能。

局限性

用户定义的函数是无状态的,返回值只能是标量值。 无法从这些用户定义的函数中调用外部 REST 终结点,因为这可能会影响作业的性能。

Azure Stream Analytics不保留所有函数调用和返回结果的记录。 为了保证可重复性(例如,从较旧的时间戳重新运行作业会再次生成相同的结果),请不要使用诸如Date.GetData()Math.random()的函数,因为这些函数不会为每次调用返回相同的结果。

资源日志

任何运行时错误都被视为致命错误,并通过活动和资源日志浮出水面。 建议您的函数处理所有异常和错误,并向查询返回有效结果。 这将防止作业进入失败状态

异常处理

在数据处理期间,在Azure Stream Analytics中使用数据时,任何异常都被视为灾难性故障。 用户定义的函数具有更高的可能引发异常并导致处理停止。 若要避免此问题,请在 JavaScript 或 C# 中使用 try-catch 块在代码执行期间捕获异常。 可以记录和处理捕获的异常,而不会导致系统故障。 建议始终将自定义代码包装在 try-catch 块中,以避免向处理引擎引发意外异常。

后续步骤