usql应用程序和脚本的unit testing

我有一个自定义的USql应用程序,它扩展了IApplier类。

 [SqlUserDefinedApplier] public class CsvApplier : IApplier { public CsvApplier() { //totalcount = count; } public override IEnumerable Apply(IRow input, IUpdatableRow output) { //....custom logic //yield return or yield break } } 

然后从Usql脚本中使用此应用程序

 @log = SELECT t.ultimateID, t.siteID, . . . t.eTime, t.hours FROM @logWithCount CROSS APPLY new BSWBigData.USQLApplier.CsvApplier() AS t(ultimateID string, siteID string, .... , eTime string, hours double, count long?); 

我已经能够为应用程序的解耦部分编写unit testing/ ATP。

如何编写Apply方法的C#代码和依赖于输入/输出的自定义逻辑的测试? 如何使用定义的输入和输出自动测试usql脚本,以便不需要数据湖帐户?

在我们发布独立的U-SQL Localrun SDK软件包之前,请从安装ADLA Tool for VS的位置获取所需的文件。

在VS2015中,本地运行所需的所有依赖项都位于“C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Microsoft Azure Data Lake DRI Tools for Visual Studio 2015 \ 2.0.XXXX”中。 0 \ LocalRunSDK。 您还需要“C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Microsoft Azure Data Lake DRI Tools for Visual Studio 2015 \ 2.0.XXXX.0 \ CppSDK”

只需从这两个文件夹中复制文件并将它们放在以下位置:

C:\ USQLLocalRunSDK

然后,您可以使用“LocalRunHelper.exe”在本地编译和运行您的u-sql脚本。 在编译命令行上,您需要两个选项:-DataRoot“存储本地元数据和数据的位置”,与ADLA Tool中的设置选项相同。 -CppSDK“复制CppSDK文件的位置”该工具在出错(编译或运行)时返回-1,成功时返回0。

只需运行该工具即可查看命令行选项列表。

正如@Michael Rys所提到的,目前可以通过使用U-SQL本地运行来完成,但不一定在Visual Studio中。

我们试图通过为您提供“U-SQL Local Run SDK”来解决这个问题,您可以将其用作在本地运行脚本的方法。 然后,您可以通过编写一些C#unit testing包装器来测试U-SQL脚本,然后在CI系统/构建服务器中运行这些unit testing。

我们正在通过NuGet发布此SDK,但如果您对此感兴趣,可以通过Microsoft dot com的xiaoyzhu向我发送电子邮件,我们可以向您发送我们尝试发布的内容。

谢谢

来自Azure Data Lake Team的Xiaoyong Zhu

VisualStudio的ADL工具具有本地模式,因此您也可以执行UDO的本地执行。 虽然您可能无法在本地获得完整的并行处理,但您应该能够在本地运行中测试代码。