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

pbpqsu0x  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(106)

我有一个URL,它基于以下详细信息返回响应JSON:

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是如何工作的,它返回从第一个when开始的前10000条记录(因为nextKey:1)。
如果我想查询下一个10000条记录,我用10001替换body中的nextKey,它将返回10001到20001的所有记录。
我们不断调用这些函数,直到nextKey在响应中返回0。
我想将这些数据移动到Azure SQL数据库,我正在使用Azure数据工厂。我尝试使用Web活动,但有效负载限制为4MB。由于这种无休止的呼叫数量需要作出到达终点。
我所读过的所有文章都建议使用分页规则的直接方法,即。e.在响应json中,我将链接到下一个名为nextLink的数据集。在我的例子中,我只得到一个数字(nextKey)。
我如何使用复制数据活动的分页规则,以一种方式,我可以发送整个正文与新的nextKey值和url再次。
注意:这是一个POST调用,因此每次都必须发送body(使用新的nextkey值)。

a11xaf1n

a11xaf1n1#

我使用了复制数据活动的分页规则,我可以再次发送整个正文与新的nextKey值和url。
AFAIK,不能直接将API响应取到API体。你也检查这个类似的issue
您可以按照以下方法实现您的场景:

  • 首先创建一个set变量,存储next key,值为1。

  • 然后执行一个until活动来检查结束条件如果nextkey等于0则停止迭代

  • 然后在until循环中采用一个复制活动将数据从rest API复制到SQL,并将body传递为

{
    "name": "Employee Data",
    "pageSize": "10000",
    "nextTableName": "EMPLOYEE",
    "nextKey": "@{variables('nextkey')}",
    "tables": [
        {
            "tableName": "EMPLOYEE",
            "columns": [
                "FIRST_NAME",
                "LAST_NAME",
                "ADDRESS"
                ]
        }
    ]
}

因此,它将从set变量中获取下一个键的值,然后调用响应并将其复制到SQL表中。

  • 然后再次使用Web Activity调用相同的API,以从具有与上述相同请求主体的API响应中获取nextkey值。

  • 在此之后,使用另一个set变量来更新nextkey值,我们之前使用web活动响应nextkey设置。

  • 因此,它将更新nextkey值,并在until循环中基于该值再次迭代,直到它与condition匹配。

相关问题