Azure Stream Analytics のユーザー定義関数

Azure Stream Analytics の SQL に似たクエリ言語を使用すると、ストリーミング データにリアルタイム分析ロジックを簡単に実装できます。 Stream Analytics は、クエリで呼び出されるカスタム関数を通じて柔軟性を高めます。 次のコード例は、1 つのパラメーターを受け取り、ジョブが受け取る各入力レコードを受け取り、結果がsampleFunctionとして出力に書き込まれる、sampleResultという UDF です。

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

関数の種類

Azure Stream Analytics では、次の 4 つの関数の種類がサポートされています。

  • JavaScript ユーザー定義関数
  • JavaScript ユーザー定義集計
  • C# ユーザー定義関数 (Visual Studio を使用)
  • Azure Machine Learning

これらの関数は、機械学習モデルを使用したリアルタイム スコアリング、文字列操作、複雑な数学的計算、データのエンコードとデコードなどのシナリオに使用できます。

Important

Azure Stream Analytics の C# ユーザー定義関数は、2024 年 9 月 30 日に廃止されます。 その日付を過ぎると、この機能を使用できなくなります。

制限事項

ユーザー定義関数はステートレスであり、戻り値にはスカラー値のみを指定できます。 これらのユーザー定義関数から外部 REST エンドポイントを呼び出すことはできません。これは、ジョブのパフォーマンスに影響を与える可能性があるためです。

Azure Stream Analytics では、すべての関数呼び出しと返された結果の記録は保持されません。 繰り返し可能性を保証するために (たとえば、古いタイムスタンプからジョブを再実行すると同じ結果が再度生成されます)、これらの関数は呼び出しごとに同じ結果を返さないので、 Date.GetData()Math.random()などの関数を使用しないでください。

リソース ログ

ランタイム エラーは致命的と見なされ、アクティビティ ログとリソース ログによって表示されます。 関数がすべての例外とエラーを処理し、クエリに有効な結果を返すようにすることをお勧めします。 これにより、ジョブが 失敗状態になるのを防ぐことができます。

例外処理

データ処理中の例外は、Azure Stream Analytics でデータを使用するときの致命的なエラーと見なされます。 ユーザー定義関数は、例外をスローし、処理を停止させる可能性が高くなります。 この問題を回避するには、JavaScript または C# で try-catch ブロックを使用して、コードの実行中に例外をキャッチします。 キャッチされた例外は、システム障害を引き起こさずにログに記録および処理できます。 処理エンジンに対して予期しない例外がスローされるのを防ぐために、カスタム コードは常に try-catch ブロック内にラップすることをお勧めします。

次のステップ