使用 .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 以编程方式运行流分析转换查询的主要内容,如果未能解决你的问题,请参考以下文章
Azure 流分析 CreateOrReplace 转换冲突或错误请求