Azure Data Lake Analytics コードのテスト
Azure Data Lake には、U-SQL 言語が用意されています。 U-SQL では、あらゆる規模のデータの処理を可能にするために、宣言型の SQL と命令型の C# が組み合わされています。 このドキュメントでは、U-SQL および拡張 C# ユーザー定義演算子 (UDO) コードのテスト ケースを作成する方法について説明します。
重要
Azure Data Lake Analytics 2024 年 2 月 29 日に廃止されました。 詳細については、このお知らせを参照してください。
データ分析の場合、organizationでは 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 スクリプトを右クリックし、[Create Unit Test](単体テストの作成) を選択します。
新しいテスト プロジェクトを作成するか、既存のテスト プロジェクトにテスト ケースを挿入します。
テスト データ ソースの管理
U-SQL スクリプトをテストするときは、テスト入力ファイルが必要です。 テスト データを管理するには、ソリューション エクスプローラーで、U-SQL プロジェクトを右クリックし、[プロパティ] を選択します。 [Test Data Source](テスト データ ソース) にソースを入力できます。
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# Assert 関数を使用して出力を検証することもできます。
Visual Studio でのテスト ケースの実行
U-SQL スクリプトのテスト プロジェクトは、C# 単体テスト フレームワークの上に構築されます。 プロジェクトをビルドしたら、 [テスト]>[Windows]>[テスト エクスプローラー] の順に選択します。 テスト エクスプローラーからテスト ケースを実行できます。 または、単体テスト内で .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# assert 関数を使用したスキーマおよび Rowset 値検証によって結果を検証することができます。 U-SQL C# UDO 単体テスト プロジェクトをソリューションに追加することができます。 これを行うには、Visual Studio で[ファイル] > [新規作成] > [プロジェクト] を選択します。
Visual Studio でのテスト ケースの実行
プロジェクトをビルドしたら、 [テスト]>[Windows]>[テスト エクスプローラー] の順に選択します。 テスト エクスプローラーからテスト ケースを実行できます。 または、単体テスト内で .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 を準備する
CPPSDK の依存関係を Azure Pipelines で準備する最も一般的な方法は次のとおりです。
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 復元タスクを追加してください。