c# - usql 应用程序和脚本的单元测试

标签 c# azure-data-lake u-sql

我有一个自定义的 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\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 工具中的设置选项相同。 -CppSDK“您复制 CppSDK 文件的位置” 该工具将在错误(编译或运行)时返回 -1,在成功时返回 0。

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

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

相关文章:

c# - 第二个 Console.Read();被忽略

c# - Azure 数据湖分析 : Combine overlapping time duration using U-SQL

amazon-web-services - 将 Power BI 连接到 S3 存储桶

azure - 如何将数据附加到现有的Azure数据湖文件中?

azure - Azure Data Lake 中的增量负载

azure-data-lake - 从 api/app 调用 u-sql 脚本的最佳方法(如rest api、wpf app)

c# - 我如何在 Kitematic Boot2docker linux 上安装东西?

c# - 如何使用 Linq 在字符串中搜索列表的任何项目

c# - 如果我有两个接口(interface),一个类可以继承两者吗?

azure - U-SQL 根据文件中的不同值将 CSV 文件拆分为多个文件