測試 Azure Data Lake Analytics 程式碼
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# 單元測試架構之上。 在建置專案之後,選取 [測試]>[Windows]>[測試總管]。 您可以從 [測試總管] 執行測試案例。 或者,以滑鼠右鍵按一下單元測試中的 .cs 檔案,然後選取 [執行測試]。
測試 C# UDO
為 C# UDO 建立測試案例
您可以使用 C# 單元測試架構來測試 C# 使用者定義運算子 (UDO)。 在測試 UDO 時,需要準備對應的 IRowset 物件作為輸入。
有兩種方式可以建立 IRowset 物件:
從檔案載入資料來建立 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 中執行測試案例
在建置專案之後,選取 [測試]>[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
最常用來在 Azure Pipelines 中準備 CPPSDK 相依性的方法如下:
將包含 CPPSDK 程式庫的資料夾壓縮成 ZIP 檔案。
將 .zip 檔案簽入您的來源控制系統中。 .zip 檔案可確保您會簽入 CPPSDK 資料夾下的所有程式庫,以便由於
.gitignore
檔案而不會忽略這些檔案。在組建管線中解壓縮 .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 還原工作。