チュートリアル:Azure Stream Analytics ジョブの C# ユーザー定義関数を記述する (プレビュー)

重要

Azure Stream Analytics 用の .NET Standard ユーザー定義関数は、2024 年 9 月 30 日に廃止されます。 この日付を過ぎると、この機能は使用できなくなります。 Azure Stream Analytics 用の JavaScript ユーザー定義関数に移行してください。

Visual Studio で作成した C# ユーザー定義関数 (UDF) を使用すると、独自の関数で Azure Stream Analytics のクエリ言語を拡張できます。 既存のコード (DLL を含む) を再利用し、算術演算ロジックや複雑なロジックを C# で使用することができます。 UDF は次の 3 つの方法で実装できます。

  • Stream Analytics プロジェクト内の CodeBehind ファイル
  • ローカル C# プロジェクトの UDF
  • ストレージ アカウントの既存パッケージの UDF

このチュートリアルでは、分離コードの方法を使用して、基本的な C# 関数を実装します。 Stream Analytics ジョブの UDF 機能は現在プレビュー段階にあります。運用環境のワークロードでは使用しないでください。

このチュートリアルでは、以下の内容を学習します。

  • 分離コードを使用して C# のユーザー定義関数を作成する。
  • Stream Analytics のジョブをローカルでテストする。
  • ジョブを Azure に発行する。

前提条件

始める前に、以下の前提条件が完了していることを確認してください。

Azure ストレージ アカウントでコンテナーを作成する

作成するコンテナーは、コンパイルされた C# パッケージを格納するために使用されます。 Edge ジョブを作成する場合、このストレージ アカウントは IoT Edge デバイスへのパッケージのデプロイにも使用されます。 Stream Analytics ジョブごとに専用のコンテナーを使用します。 複数の Stream Analytics Edge ジョブに同じコンテナーを再利用することはできません。 既存のコンテナーを含むストレージ アカウントが既にある場合は、それを使用できます。 ない場合は、新しいコンテナーを作成する必要があります。

Visual Studio で Stream Analytics プロジェクトを作成する

  1. Visual Studio を起動します。

  2. [ファイル] > [新規] > [プロジェクト] を選択します。

  3. 左側のテンプレートの一覧で [Stream Analytics] を選択し、 [Azure Stream Analytics Edge アプリケーション] または [Azure Stream Analytics アプリケーション] を選択します。

  4. プロジェクトの名前場所、およびソリューション名を入力し、 [OK] を選択します。

    Create an Azure Stream Analytics Edge project in Visual Studio

アセンブリ パッケージのパスを構成する

  1. Visual Studio を開き、ソリューション エクスプローラーに移動します。

  2. ジョブ構成ファイル JobConfig.json をダブルクリックします。

  3. [User-Defined Code Configuration](ユーザー定義コードの構成) セクションを展開し、構成に次の推奨値を入力します。

    設定 推奨値
    グローバル ストレージ設定のリソース 現在のアカウントからデータ ソースを選択します
    グローバル ストレージ設定のサブスクリプション < お客様のサブスクリプション >
    グローバル ストレージ設定のストレージ アカウント < お客様のストレージ アカウント >
    カスタム コード ストレージ設定のリソース 現在のアカウントからデータ ソースを選択します
    カスタム コード ストレージ設定のストレージ アカウント < お客様のストレージ アカウント >
    カスタム コード ストレージ設定のコンテナー < お客様のストレージ コンテナー >

分離コードを使用して C# の UDF を作成する

分離コード ファイルは、1 つの ASA クエリ スクリプトに関連付けられている C# ファイルです。 Visual Studio ツールによって自動的に CodeBehind ファイルが圧縮され、送信時に Azure ストレージ アカウントにアップロードされます。 すべてのクラスを public として定義し、すべてのオブジェクトを static public として定義する必要があります。

  1. ソリューション エクスプローラーScript.asql を展開し、Script.asaql.cs 分離コード ファイルを探します。

  2. コードを次のサンプルに置き換えます。

        using System; 
        using System.Collections.Generic; 
        using System.IO; 
        using System.Linq; 
        using System.Text; 
    
        namespace ASAEdgeUDFDemo 
        { 
            public class Class1 
            { 
                // Public static function 
                public static Int64 SquareFunction(Int64 a) 
                { 
                    return a * a; 
                } 
            } 
        } 
    

UDF を実装する

  1. ソリューション エクスプローラーで、Script.asaql ファイルを開きます。

  2. 既存のクエリを次のクエリに置き換えます。

        SELECT machine.temperature, udf.ASAEdgeUDFDemo_Class1_SquareFunction(try_cast(machine.temperature as bigint))
        INTO Output
        FROM Input 
    

ローカル テスト

  1. 温度シミュレーター サンプル データ ファイルをダウンロードします。

  2. ソリューション エクスプローラーで、 [入力] を展開し、Input.json を右クリックして、 [ローカル入力の追加] を選択します。

    Add local input to Stream Analytics job in Visual Studio

  3. ダウンロードしたサンプル データのローカル入力ファイル パスを指定し、 [保存] を選択します。

    Local input configuration for Stream Analytics job in Visual Studio

  4. スクリプト エディターで [ローカルで実行] をクリックします。 ローカル実行で出力結果が正常に保存された後、任意のキーを押して、表形式で結果を表示します。

    Run Azure Stream Analytics job locally with Visual Studio

  5. [結果フォルダーを開く] を選択して、JSON および CSV 形式で生ファイルを表示することもできます。

    View results of local Azure Stream Analytics job with Visual Studio

UDF をデバッグする

標準の C# コードをデバッグするのと同じ方法で、C# UDF をローカルにデバッグできます。

  1. C# 関数にブレークポイントを追加します。

    Add breakpoints to Stream Analytics user-defined function in Visual Studio

  2. F5 キーを押してデバッグを開始します。 プログラムは想定どおりにブレークポイントで停止します。

    View Stream Analytics user-defined function debugging results

ジョブを Azure に発行する

ローカルでクエリをテストした後、スクリプト エディターで [Azure に送信] を選択して、ジョブを Azure に発行します。

Submit your Stream Analytics Edge job to Azure from Visual Studio

IoT Edge デバイスにデプロイする

Stream Analytics Edge ジョブを作成することを選択した場合に、ジョブを IoT Edge モジュールとしてデプロイできるようになりました。 IoT Edge クイック スタートに従って、IoT ハブを作成し、IoT Edge デバイスを登録し、デバイスに IoT Edge ランタイムをインストールして開始します。 次に「ジョブのデプロイ」チュートリアルに従って、Stream Analytics ジョブを IoT Edge モジュールとしてデプロイします。

次のステップ

このチュートリアルでは、分離コードを使用して簡単な C# ユーザー定義関数を作成し、ジョブを Azure に発行し、Azure または IoT Edge デバイスにジョブをデプロイしました。

Stream Analytics ジョブで C# のユーザー定義関数を使用する別の方法の詳細については、次の記事をご覧ください。