我有一个自定义的USql应用程序,它扩展了IApplier
类。
[SqlUserDefinedApplier]
public class CsvApplier : IApplier
{
public CsvApplier()
{
//totalcount = count;
}
public override IEnumerable<IRow> 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?);
我已经能够为应用程序的解耦部分编写单元测试/ ATP。
如何编写Apply
方法的C#代码和依赖于输入/输出的自定义逻辑的测试?
如何使用定义的输入和输出自动测试usql脚本,以便不需要数据湖帐户?
答案 0 :(得分:3)
正如@Michael Rys所提到的,目前可以通过使用U-SQL本地运行来完成,但不一定在Visual Studio中。
我们正试图通过为您提供一个&#34; U-SQL Local Run SDK&#34;来解决这个问题,您可以将其用作在本地运行脚本的方法。然后,您可以通过编写一些C#单元测试包装器来测试U-SQL脚本,然后在CI系统/构建服务器中运行这些单元测试。
我们正在通过NuGet发布此SDK,但如果您对此感兴趣,可以通过Microsoft dot com的xiaoyzhu向我发送电子邮件,我们可以向您发送我们尝试发布的内容。
由于
来自Azure Data Lake团队的朱晓勇答案 1 :(得分:3)
在我们发布独立的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。
只需运行该工具即可查看命令行选项列表。
答案 2 :(得分:0)
VisualStudio的ADL工具具有本地模式,因此您也可以执行UDO的本地执行。虽然您可能无法在本地获得完整的并行处理,但您应该能够在本地运行中测试代码。