使用 JSON 为数据工厂中的每个循环提供数据

Mic*_*ham 3 azure-data-factory

数据工厂新手,我正在努力解决以下问题:

我有一个 Web 活动,它调用 API 并返回以下 JSON:

{
"ResponseCode": 200,
"ResponseText": "OK",
"Data": {
    "ramco_purchaseordershipment": "ramco_purchaseordershipment",
    "ramco_ramco_paymentschedule_cobalt_duesoption": "ramco_ramco_paymentschedule_cobalt_duesoption",
    "cobalt_accountingintegrationbatch": "cobalt_accountingintegrationbatch",
    "opportunitycompetitors": "OpportunityCompetitors"}
Run Code Online (Sandbox Code Playgroud)

}

其中代表 Dynamics 365 DB 中的实体名称。

我将 For-Each 活动设置项添加到:

@array(activity('Web1').output.Data)
Run Code Online (Sandbox Code Playgroud)

这最终给了我一个不是我想要的单个项目数组。

我想要完成的是迭代 ramco_purchaseordershipment、ramco_ramco_ paymentschedule_cobalt_duesoption 等,然后使用每个值作为参数触发另一个管道。

我知道这很愚蠢,但我整个下午都盯着它看,但没有运气。

谢谢!

迈克尔

Jos*_* Xu 6

我创建了一个简单的测试来实现这一目标。在这里,我使用查找活动返回与您的文件相同的 json 文件。
我的想法是:

  • 将此 json 对象转换为字符串。
  • 添加},{到字符串中。
  • 用逗号将其分割成字符串数组。
  • 最后遍历这个数组。
  • 将字符串转换为json对象,并传递给下一个管道的参数。
  1. 声明一个数组类型变量。 在此输入图像描述

  2. 使用表达式@split(replace(string(activity('Lookup1').output.value[0].Data),',','},{'),',')获取字符串数组。这里需要替换activity('Lookup1').output.value[0].Dataactivity('Web1').output.Data.
    在此输入图像描述

  3. Foreach 字符串数组。 在此输入图像描述

  4. 添加动态内容@json(item()),它将解析字符串为json 在此输入图像描述

  5. 执行Pipeline1的输入如下:

    "parameters": {
        "Para1": {
            "ramco_purchaseordershipment": "ramco_purchaseordershipment"
        } 


    "parameters": {
        "Para1": {
            "ramco_ramco_paymentschedule_cobalt_duesoption": 
         "ramco_ramco_paymentschedule_cobalt_duesoption"
        }

    "parameters": {
        "Para1": {
            "cobalt_accountingintegrationbatch": "cobalt_accountingintegrationbatch"
        }

    "parameters": {
        "Para1": {
            "opportunitycompetitors": "OpportunityCompetitors"
        }
    }
Run Code Online (Sandbox Code Playgroud)