次の方法で共有


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

Important

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を取得。

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

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

  • CodeBehind を使用して 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] を選択します。

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

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

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

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

  3. User-Defined コード構成セクションを展開し、構成に次の推奨値を入力します。

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

CodeBehind を使用して C# UDF を記述する

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

  1. ソリューション エクスプローラーでScript.asql を展開し、CodeBehind ファイル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] を右クリックし、[ローカル入力の追加] を選択します。

    Visual Studio で Stream Analytics ジョブにローカル入力を追加する

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

    Visual Studio での Stream Analytics ジョブのローカル入力構成

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

    Visual Studio を使用して Azure Stream Analytics ジョブをローカルで実行する

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

    Visual Studio を使用してローカル Azure Stream Analytics ジョブの結果を表示する

UDF をデバッグする

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

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

    Visual Studio で Stream Analytics ユーザー定義関数にブレークポイントを追加する

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

    Stream Analytics ユーザー定義関数のデバッグ結果を表示する

ジョブを Azure に発行する

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

Visual Studio から Stream Analytics Edge ジョブを Azure に送信する

IoT Edge デバイスへのデプロイ

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

次のステップ

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

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