数据工厂中Post API调用的分页规则

问题描述 投票:0回答:1

我有一个基于以下详细信息返回响应 json 的 url:

https://testapi/dev?user=reportuser

Call type: POST

Body: {
    "name": "Employee Data",
    "pageSize": "10000",
    "nextTableName": "EMPLOYEE",
    "nextKey": "1",
    "tables": [
        {
            "tableName": "EMPLOYEE",
            "columns": [
                "FIRST_NAME",
                "LAST_NAME",
                "ADDRESS",
        ]
    }
]

}

Response JSON:
    {
     "data": {
        "EMPLOYEE": [
            {
                "FIRST_NAME":"Rahul",
                "LAST_NAME":"Sharma",
                "ADDRESS":"UK"
            },
            {
                "FIRST_NAME":"Albert",
                "LAST_NAME":"Wintermeyer",
                "ADDRESS":"Australia"
            },
            ...
            ...
         ],
         "pagination": [
            {
                "nextTableName": "EMPLOYEE",
                "nextKey": "10001"
            }
        ]
}

}

为了解释该 url 的工作原理,它返回从第 1 个 time 开始的前 10000 条记录(因为 nextKey:1)。

如果我想查询接下来的10000条记录,我将body中的nextKey替换为10001,它将返回从10001到20001的所有记录。

不断调用这些直到响应中的 nextKey 返回 0。

我想将此数据移动到 Azure SQL 数据库,为此我使用 Azure 数据工厂。我尝试使用 Web 活动,但负载限制为 4MB。因为需要无数次调用才能到达终点。

我读过的所有文章都建议使用分页规则的直接方法,即在响应 json 中,我将获得指向下一组数据(称为 nextLink)的链接。就我而言,我只得到一个数字(nextKey)。

如何使用复制数据活动的分页规则,以便我可以再次使用新的 nextKey 值和 url 发送整个正文。

注意:它是 POST 调用,因此每次都必须发送正文(使用新的 nextkey 值)。

azure azure-sql-database azure-data-factory
1个回答
0
投票

我使用复制数据活动的分页规则,这样我可以再次使用新的 nextKey 值和 url 发送整个正文。

据我所知,您无法直接获取 API 主体的 API 响应。你也检查这个类似的问题

您可以按照以下方法来实现您的场景:

  • 首先创建一个设置变量来存储值 1 的 next keyenter image description here
  • 然后采取直到活动来检查结束条件,因为 if
    nextkey
    等于 0 则停止迭代
    enter image description here
  • 然后在until循环内进行复制活动,将数据从rest Api复制到SQL并将主体传递为
{
    "name": "Employee Data",
    "pageSize": "10000",
    "nextTableName": "EMPLOYEE",
    "nextKey": "@{variables('nextkey')}",
    "tables": [
        {
            "tableName": "EMPLOYEE",
            "columns": [
                "FIRST_NAME",
                "LAST_NAME",
                "ADDRESS"
                ]
        }
    ]
}

因此它将从设置变量中获取下一个键的值,然后调用响应并将其复制到sql表中。 enter image description here

  • 然后再次使用 Web 活动调用相同的 API,以从具有与上述相同请求正文的 API 响应中获取
    nextkey
    值。 enter image description here
  • 在此之后,使用另一个设置变量来更新我们之前通过网络活动响应设置的
    nextkey
    nextkey
    enter image description here
  • 因此,它将更新
    nextkey
    值并在until循环中再次基于该值进行迭代,直到与条件匹配。
© www.soinside.com 2019 - 2024. All rights reserved.