我正在 ADF 服务中构建 ETL 管道以从 API 加载数据,但我在使用延续令牌实现分页规则时遇到困难。 我知道,根据 Azure 文档,应该可以使用这种方法 - 下一个请求的标头 = 当前响应正文中的属性值。
我想要实现的结构:
使用管道 Web 活动向 https://test.net/abc/tableName?size=1000 发出 GET 请求,并从响应正文中获取 continuationToken 作为输出
将其存储在“设置变量”活动中
使用复制活动向
发出 GET 请求
https://test.net/abc/tableName?size=1000&seekOperation=Next 与
header = Web 活动响应正文中的 continuationToken(存储在变量中)。发出另一个 GET 请求来检索所有数据,直到响应正文中不存在 continuationToken,每次都将令牌添加到标头。
我正在尝试分页规则,所以我设置了类似的内容,但它不起作用:
"paginationRules": {
"supportRFC5988": "true",
"Headers.ContinuationToken": {
"value": "$.continuationToken",
"type": "Expression"
},
"EndCondition:body.continuationToken": "NonExist"
}
我遇到的错误是这样的:
“源”端发生故障。 错误代码=RestInvalidPaginationRule,'类型=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,消息=无效 PaginationRule, RuleKey='body.continuationToken', RuleValue='NonExist',Source=Microsoft.DataTransfer.ClientLibrary,'
另外,我不知道如何使其在复制活动中首次执行 GET 请求,使用变量中存储的值,然后从该请求的响应正文中检索它。
在附加标头中,我添加了 Token:@variables('continuationToken'),但是如何使其迭代工作?
如果有人能帮助我构建这个逻辑,我将非常感激。 现在看来,是这样的:
“源”端发生故障。 ErrorCode=RestInvalidPaginationRule,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=无效的 PaginationRule,RuleKey='body.continuationToken',RuleValue='NonExist',Source=Microsoft.DataTransfer.ClientLibrary,'
您面临的错误是因为您没有将正确的值传递给结束条件参数,当您将主体节点作为结束条件访问时,它应该如下所示:
"EndCondition:$.continuationToken": "NonExist"
根据您的要求,您可以尝试这种方法,使用直到循环和一些变量来存储下一次迭代的值。
对于上图,您需要按照以下步骤操作:
这是您可以根据您的要求在 ADF 中开发的示例逻辑