Azure 数据工厂 - 使用分页映射数据流

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

我使用 REST Api 作为传入数据的来源,URL 采用这种形式

https://<baseUrl>/endPoint?per_page=50&page=<Page##>

响应没有提及下一个网址,但正文中包含以下内容

...
"meta":{
    "count": 50,
    "total_count": 2003
}
...

这表明我的总页数为 41。 在 ADF 复制活动中,通过在分页规则部分和 EndCondition 中使用 Range 选项,我实现了分页工作完美

但问题是,由于响应中嵌套数据复杂,Copy 活动不适合需求。映射数据流必须用于同步到缓存输出。 (我有存储过程来在目标端处理它)。

但是,我不知道如何实现分页,因为没有结束条件...... 请提出任何建议...

pagination azure-data-factory azure-mapping-data-flow
1个回答
0
投票

我不知道如何实现分页,因为没有结束条件......请提出任何建议。

在映射数据流中Rest API 不支持范围分页

为了达到您的要求,您可以尝试以下两种解决方法:

  1. 使用For-each活动及其下的数据流 -- 为此,使用 Web 活动首先获取响应,并且您需要使用设置变量使用 Web 活动的输出来计算页面总数,如下所示。 enter image description here -- 您可以使用 range 函数通过
    @range(1,variables('total no of pages'))
    函数迭代范围。 enter image description here -- 在此下,对于每个带有参数化数据集的数据流,如下所示:在源数据集中创建
    pageparam
    数据集中的参数 添加相对 URL,如下所示:
@concat('endPoint?per_page=50&page=',string(dataset().pageparam))

然后在数据流源参数中为每个迭代器添加源参数。 enter image description here 然后您可以进一步处理数据。

  1. 使用复制活动和数据流。 -- 首先使用复制活动从分页 Rest Api 复制嵌套 Json 到 blob 存储。 -- 然后使用数据流将嵌套的 Json 转换为所需的格式。
© www.soinside.com 2019 - 2024. All rights reserved.