Azure Data Lake には U-SQL 言語が用意されています。 U-SQL は、宣言型 SQL と命令型 C# を組み合わせて、任意の規模でデータを処理します。 このドキュメントでは、U-SQL および拡張 C# ユーザー定義演算子 (UDO) コードのテスト ケースを作成する方法について説明します。
重要
Azure Data Lake Analytics は 2024 年 2 月 29 日に廃止されました。 このお知らせで詳細を学びましょう。
データ分析の場合、組織は Azure Synapse Analytics または Microsoft Fabric を使用できます。
U-SQL スクリプトをテストする
U-SQL スクリプトはコンパイルされ、実行可能コードが Azure またはローカル コンピューターで実行されるように最適化されています。 コンパイルと最適化プロセスでは、U-SQL スクリプト全体が全体として扱われます。 すべてのステートメントに対して従来の単体テストを実行することはできません。 ただし、U-SQL テスト SDK とローカル実行 SDK を使用すると、スクリプト レベルのテストを実行できます。
U-SQL スクリプトのテスト ケースを作成する
Azure Data Lake Tools for Visual Studio を使用すると、U-SQL スクリプトのテスト ケースを作成できます。
ソリューション エクスプローラーで U-SQL スクリプトを右クリックし、[ 単体テストの作成] を選択します。
新しいテスト プロジェクトを作成するか、既存のテスト プロジェクトにテスト ケースを挿入します。
テスト データ ソースを管理する
U-SQL スクリプトをテストする場合は、テスト入力ファイルが必要です。 テスト データを管理するには、 ソリューション エクスプローラーで U-SQL プロジェクトを右クリックし、[プロパティ] を選択 します。 ソースはテスト データ ソースに入力できます。
U-SQL テスト SDK で Initialize()
インターフェイスを呼び出すと、テスト プロジェクトの作業ディレクトリの下に一時的なローカル データ ルート フォルダーが作成されます。 U-SQL スクリプトのテスト ケースを実行する前に、テスト データ ソース フォルダー内のすべてのファイルとフォルダーが一時ローカル データ ルート フォルダーにコピーされます。 テスト データ フォルダーのパスをセミコロンで分割することで、テスト データ ソース フォルダーをさらに追加できます。
テスト用のデータベース環境を管理する
U-SQL スクリプトで U-SQL データベース オブジェクトを使用またはクエリする場合は、U-SQL テスト ケースを実行する前にデータベース環境を初期化する必要があります。 この方法は、ストアド プロシージャを呼び出すときに必要になる場合があります。 U-SQL テスト SDK の Initialize()
インターフェイスを使用すると、U-SQL プロジェクトによって参照されるすべてのデータベースを、テスト プロジェクトの作業ディレクトリ内の一時ローカル データ ルート フォルダーにデプロイできます。
U-SQL プロジェクトの U-SQL データベース プロジェクト参照を管理する方法の詳細については、「 U-SQL データベース プロジェクトの参照」を参照してください。
テスト結果を確認する
Run()
インターフェイスは、ジョブの実行結果を返します。
0 は成功を意味し、 1 は失敗を意味します。 C# アサート関数を使用して出力を確認することもできます。
Visual Studio でテスト ケースを実行する
U-SQL スクリプト テスト プロジェクトは、C# 単体テスト フレームワークの上に構築されています。 プロジェクトをビルドした後、 Test>Windows>Test Explorer を選択します。 テスト エクスプローラーからテスト ケースを実行できます。 または、単体テストで.cs ファイルを右クリックし、[テストの実行] を選択 します。
C# の UDO をテストする
C# UDO のテスト ケースを作成する
C# 単体テスト フレームワークを使用して、C# ユーザー定義演算子 (UDO) をテストできます。 UDO をテストするときは、対応する IRowset オブジェクトを入力として準備する必要があります。
IRowset オブジェクトを作成するには、次の 2 つの方法があります。
ファイルからデータを読み込んで IRowset を作成します。
//Schema: "a:int, b:int" USqlColumn<int> col1 = new USqlColumn<int>("a"); USqlColumn<int> col2 = new USqlColumn<int>("b"); List<IColumn> columns = new List<IColumn> { col1, col2 }; USqlSchema schema = new USqlSchema(columns); //Generate one row with default values IUpdatableRow output = new USqlRow(schema, null).AsUpdatable(); //Get data from file IRowset rowset = UnitTestHelper.GetRowsetFromFile(@"processor.txt", schema, output.AsReadOnly(), discardAdditionalColumns: true, rowDelimiter: null, columnSeparator: '\t');
データ コレクションのデータを使用して IRowset を作成する:
//Schema: "a:int, b:int" USqlSchema schema = new USqlSchema( new USqlColumn<int>("a"), new USqlColumn<int>("b") ); IUpdatableRow output = new USqlRow(schema, null).AsUpdatable(); //Generate Rowset with specified values List<object[]> values = new List<object[]>{ new object[2] { 2, 3 }, new object[2] { 10, 20 } }; IEnumerable<IRow> rows = UnitTestHelper.CreateRowsFromValues(schema, values); IRowset rowset = UnitTestHelper.GetRowsetFromCollection(rows, output.AsReadOnly());
テスト結果を確認する
UDO 関数を呼び出した後は、C# アサート関数を使用して、スキーマと行セット値の検証を使用して結果を検証できます。 U-SQL C# UDO 単体テスト プロジェクトをソリューションに追加できます。 これを行うには、Visual Studio で [ファイル] > [新しい > プロジェクト ] を選択します。
Visual Studio でテスト ケースを実行する
プロジェクトをビルドした後、 Test>Windows>Test Explorer を選択します。 テスト エクスプローラーからテスト ケースを実行できます。 または、単体テストで.cs ファイルを右クリックし、[テストの実行] を選択 します。
Azure Pipelines でテスト ケースを実行する
U-SQL スクリプト テスト プロジェクトと C# UDO テスト プロジェクトはどちらも、C# 単体テスト プロジェクトを継承します。 Azure Pipelines の Visual Studio テスト タスク では、これらのテスト ケースを実行できます。
Azure Pipelines で U-SQL テスト ケースを実行する
U-SQL テストの場合は、ビルド コンピューターに CPPSDK
を読み込み、 CPPSDK
パスを USqlScriptTestRunner(cppSdkFolderFullPath: @"")
に渡してください。
CPPSDK とは
CPPSDK は、Microsoft Visual C++ 14 と Windows SDK 10.0.10240.0 を含むパッケージです。 このパッケージには、U-SQL ランタイムに必要な環境が含まれています。 このパッケージは、Azure Data Lake Tools for Visual Studio のインストール フォルダーの下に取得できます。
- Visual Studio 2015 の場合、
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Microsoft Azure Data Lake Tools for Visual Studio 2015\X.X.XXXX.X\CppSDK
の下にあります。 - Visual Studio 2017 の場合、それは
C:\Program Files (x86)\Microsoft Visual Studio\2017\<Visual Studio Edition>\SDK\ScopeCppSDK
の下にあります。 - Visual Studio 2019 の場合、それは
C:\Program Files (x86)\Microsoft Visual Studio\2019\<Visual Studio Edition>\SDK\ScopeCppSDK
の下にあります。
Azure Pipelines ビルド エージェントで CPPSDK を準備する
Azure Pipelines で CPPSDK 依存関係を準備する最も一般的な方法は次のとおりです。
CPPSDK ライブラリを含むフォルダーを zip 圧縮します。
.zip ファイルをソース管理システムにチェックインします。 .zip ファイルを使用すると、
.gitignore
ファイルが原因でファイルが無視されないように、CPPSDK フォルダーのすべてのライブラリをチェックインできます。ビルド パイプラインで .zip ファイルを解凍します。
USqlScriptTestRunner
ビルド コンピューター上のこの解凍されたフォルダーをポイントします。
Azure Pipelines で C# UDO テスト ケースを実行する
C# UDO テストの場合は、UDO に必要な次のアセンブリを参照してください。
- Microsoft.Analytics.Interfaces
- Microsoft.Analytics.Types
- Microsoft.Analytics.UnitTest(マイクロソフト アナリティクス ユニットテスト)
NuGet パッケージ Microsoft.Azure.DataLake.USQL.Interfaces を使用して参照する場合は、ビルド パイプラインに NuGet 復元タスクを追加してください。