Azure Data Factory V2:如何使用C#创建ForEach活动?

时间:2018-02-08 01:32:56

标签: azure-data-factory

       int[] mitems = new int[] { 99, 98, 92, 97, 95 };

        //pass the variable as "@item()"
        var forEachActivity = new ForEachActivity()
        {
            Name = "ForEachActivity",
            IsSequential = false,
            Items = mitems,
            Activities = activities
        };

这不编译,在Items = mitems报告错误,期待Expression并且我不确定如何在Expression中提供项目。

3 个答案:

答案 0 :(得分:0)

我从未创建过这种类型的活动,但我可以帮助你解决一些麻烦。如果读取ForEachActivity对象的构造函数方法,则可以看到items参数必须是Expression类的对象。创建表达式时,它会在value参数中使用一个字符串。

文档(这里:https://docs.microsoft.com/en-us/azure/data-factory/control-flow-for-each-activity#type-properties)表示Items是"表达式返回要迭代的JSON数组,这有点奇怪。"所以我的猜测是你必须传递一个带有json格式的String来创建这个Expression对象。

所以你能做的就是用这样的东西替换mitems对象的创建:

Expression mitems = new Expression("{99, 98, 92, 97, 95 }");

希望这有帮助!!

答案 1 :(得分:0)

这对我有用

Items = new Expression {Value =“@Json('[10,20,30,40,50]')”}

答案 2 :(得分:0)

我也在努力解决这个问题,但我想我现在已经开始工作了。 Items属性是一个Expression,它看起来像这样:



new ForEachActivity
{
  Name = "myForEachLoop",
  IsSequential = false,
  Items = new Expression("@pipeline().parameters.foreachFileList"),
  Activities = new List<Activity>
  {
    ...
  }
}
&#13;
&#13;
&#13;

管道参数看起来像这样

&#13;
&#13;
Parameters = new Dictionary<string, ParameterSpecification>
{
  { "foreachFileList", new ParameterSpecification { Type = ParameterType.Array } }
}
&#13;
&#13;
&#13;

最后,将参数传递给您的管道将如下所示:

&#13;
&#13;
Dictionary<string, object> arguments = new Dictionary<string, object>
{
  { "foreachFileList", new string[] { "file1.txt", "file2.txt" } }
};

client.Pipelines.CreateRunWithHttpMessagesAsync(resourceGroup, dataFactoryName, pipelineName, arguments)
&#13;
&#13;
&#13;