我有一个自定义 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 脚本,从而不需要数据湖帐户?

最佳答案

在我们发布独立的 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\本地运行SDK。您还需要“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 工具中的设置选项相同。
-CppSDK“您复制 CppSDK 文件的位置”
该工具将在错误(编译或运行)时返回 -1,在成功时返回 0。

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

关于c# - usql 应用程序和脚本的单元测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37717821/

10-13 08:03