Azure 数据工厂中 Rest API 的自定义分页

Custom Pagination of Rest API in Azure Data Factory

我想从 Rest 检索所有结果 API endpoint.The URL 具有以下形式 https://myapi.com/relativeapi?project=&repo=&prId=&page=&pageSize=&startTime=&endTime

默认情况下,请求数据时仅返回第一页。示例输出如下

    "pageSize":50,
    "num":50,
    "isLastPage":false,
    "data":
        {"ABC":{"mock1":[{"Id":18,"Date":"202104T02:04:53.000Z","attr1":0,"attr2":0,"attr3":0,"historyData":[{"Date":"2021-11-03T00:08:13.000Z","attr1":0,"attr2":0,"attr3":0,"attr4":{}} 

我们如何在 Azure 数据工厂中实现这一点并从所有页面检索所有结果(最后一页直到“IsLastPage=TRUE 且“数据”为空)?

还有我们如何增量请求 API 数据,所以管道不需要 运行 从头开始​​(第 1 页)的所有结果,而是从最后更新的页面

@christi08

因为输出中没有返回下一页信息。很遗憾,您将无法利用 inbuilt pagination feature.

As alternative/workaround - 您可以使用以下方法。

您可以使用迭代方法来实现您的最终目标。

第 1 步:

您的请求将采用以下格式

 https://myapi.com/relativeapi?page=1.......
 https://myapi.com/relativeapi?page=2.......
 https://myapi.com/relativeapi?page=3.......
 https://myapi.com/relativeapi?page=n.......

第 2 步:

在管道级别创建一个名为 pageno 的变量。

第 3 步:

在 Rest 连接器中创建一个参数 页面

此页面参数将作为相对 url 与其他参数和路径一起添加。

在您的情况下,基数 url 会有所不同。

第 4 步:

没有在复制activity,源设置下。

您将传递带有管道变量值的参数。

此管道变量将递增。

因此对于每次迭代 - pageno 都会递增,因此相对 url 也是动态的。

您需要 SET VARIABLE activity 来增加 pageno 管道变量。

要循环,您可以使用 Until Activity

结束条件

要结束 activity,您必须提供一个表达式。

  1. 您可以使用动态相关 url.
  2. 添加另一个网络活动/查找 activity

您可以访问网络的输出activity / lookup activity 并访问 isLastPage 节点 - 直到这是真的。

  1. 您可以访问 copyactivity 输出并查看写入的行数是否为 0。并结束直到 activity。