使用 .NET 以编程方式运行流分析转换查询

Posted

技术标签:

【中文标题】使用 .NET 以编程方式运行流分析转换查询【英文标题】:Run Stream Analytic Transformation Query Programmatically using .NET 【发布时间】:2021-06-10 15:40:35 【问题描述】:

我正在尝试使用 .NET 来自动运行流分析转换查询。 我已经阅读了这两个框架的文档

Microsoft.Azure.Management.StreamAnalytics

Microsoft.Azure.Management.StreamAnalytics.Models

还有 this guide 了解如何使用 .NET 运行流分析作业。

他们解释了如何创建、运行和停止作业,但我需要的有点不同。关于下图

我手动,上传一个json文件(上传图片中的示例输入),测试查询(图片中的测试查询按钮)并下载结果(图片中未显示按钮)。

我想使用 .NET 以编程方式完成所有这些步骤,但不确定我需要使用哪些对象。下面展示了如何创建一个转换,在我的例子中,我有一个并且想要运行它。 (我不想运行作业,因为我没有授权在我的 Azure 订阅中执行此操作,但有权运行查询)。

// Create a transformation
Transformation transformation = new Transformation()

    Query = "Select Id, Name from <your input name>", // '<your input name>' should be replaced with the value you put for the 'inputName' variable above or in a previous step
    StreamingUnits = 1
;
Transformation createTransformationResult = streamAnalyticsManagementClient.Transformations.CreateOrReplace(transformation, resourceGroupName, streamingJobName, transformationName);

ITransformationsOperations Interface 没有任何方法来运行转换。 有没有可能,有大神帮忙吗?

【问题讨论】:

【参考方案1】:

据我所知,SDK 仅允许管理部署在您拥有的订阅中的远程资源。通过门户提供的查询测试体验不是其中的一部分,因为后端是内部服务。

如果您想以编程方式在本地运行查询,可以使用作为CI/CD tooling 一部分的 npm 包。

【讨论】:

非常感谢@Florian,我已经尝试过 npm 包,它似乎正是我需要的工具。很奇怪,在我看来,.NET 中没有这样的库。 我正在使用 azure-streamanalytics-cicd 工具,但它通常工作正常。无论如何,我无法正确配置“ExpectedOutputs”。我的意思是,它可以将生成的输出与预期的输出进行比较吗?将“Required”设置为 true 并传递“FilePath”是否正确?即使根本没有生成输出,我也没有得到任何失败的测试。我错过了什么吗? 嘿 Vinx,如果它比使用这些 cmets 更舒服,您可以开始另一个问题;) 没有更多细节,我不确定出了什么问题。流程是先用addtestcase创建一个测试用例,自己创建一个预期结果文件,在测试用例文件中指向它(required设置为true yes)。然后通过 test 命令运行测试。整件事描述here 谢谢弗洛里安,我想我已经找到了问题所在。为了让工具判断测试是否通过,无论如何您都需要提供预期的输出。即使您不期望输出。我是这样设置的,我的结果是一致的。 我检查了一下,显然 testConfig.json 中的空 ExpectedOutputs.FilePath 将触发“对象引用未设置为对象实例”错误。当不需要输出时,您可以在其中放置任何类型的字符串,它根本不需要是实际的文件路径,它只需要不是空字符串“”。

以上是关于使用 .NET 以编程方式运行流分析转换查询的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式运行 .net 控制台应用程序

Azure 流分析 CreateOrReplace 转换冲突或错误请求

在 .net 中以编程方式解压缩文件

Azure 流分析作业无限运行

如何使用 MDbg 以编程方式枚举正在运行的 .NET 进程中的类型?

如何以编程方式检查(解析)SQL 语句的有效性?