Azure数据工厂V2动态内容

时间:2020-05-22 21:28:52

标签: azure azure-data-factory azure-data-factory-2

长话短说,我的数据转储对于azure函数而言太大。因此,我们正在使用数据工厂。 我分配了另一个函数来为API生成访问令牌并将其作为json的一部分输出。我想将该令牌设置为管道中的变量。到目前为止,我有这个: enter image description here

我正在尝试使用动态内容“语言”来设置变量:

@activity('Get_Token').output

我想要类似pythons的东西:

token = data.get('data', {}).get('access_token', '')

作为第二个问题,我的下一步是在遍历另一个输出时使用此令牌来调用API,因此也许可以将这个确切的步骤添加到ForEach中?

1 个答案:

答案 0 :(得分:1)

就像其他人指出的那样,变量应该像@activity('Get token').output.data.access_token一样,但是,正如您已经猜到的,如果只在foreach中需要变量,则无需分配变量。您可以访问该后续活动中的任何先前输出。下面是在迭代另一个输出时使用令牌的方法:

  1. 假设您的函数还将listOfThings输出为数组 在data键中。然后,您可以将foreach活动设置为 遍历@activity('Get token').output.data.listOfThings
  2. 在foreach内部,您将拥有一个(例如)复制活动 REST数据集作为源。配置REST 链接的服务 使用匿名身份验证...
  3. ...然后您将找到一个名为 Additional的字段 REST 数据集中的标题,您可以在其中创建密钥Authorization 值如上,Basic @activity('Get token').output.data.access_token
  4. 您说过要迭代的内容(在listOfThings JSON数组中)可以在foreach活动中用引用 @item()(或者,如果它是listOfThings中项目的成员 就会变成@item().myMember

要让#4明确告知到达这里的其他人:

  • 如果listOfThings看起来像这样,listOfThings: [ "thing1", "thing2", ...]

  • ,例如filenames: ["file1.txt", "file2.txt", ...]

  • 然后@item()变成file1.txt等。

  • 如果listOfThings看起来像这样,listOfThings: [ {"key1":"value1", "key2":"value2" ... }, {"key1":"value1", "key2":"value2" ... }, ...]

  • 例如
  • filenames: [ {"folder":"folder1", "filename":"file1.txt"}, {"folder":"folder2", "filename":"file2.txt"}, ... ]

  • 然后@item().filename变成file1.txt等。