我在Azure Data Factory V2中创建了一个Pipeline。它将从Rest API复制数据,并以Azure Data Lake中的JSON文件的形式保存此数据。然后我使用U-SQL转换该JSON文件并将该数据复制到.csv格式的另一个文件夹中。我的管道。请参阅以下管道图像。
Rest API将数据返回JSON格式谎言。
{
"data": [
{
"id": "100024937598765",
"name": "Sebastian Martinelli",
"email": "sebastian.martinelli@abc.com",
"administrator": false
},
{
"id": "100024909012916",
"name": "Diego Juarez",
"email": "diego.juarez@abc.com",
"administrator": false
},
{
"id": "100025002270557",
"name": "Jose Lopez",
"email": "jose.lopez@abc.com",
"administrator": false
},
{
"id": "100024553664067",
"name": "Valentin Montemarani",
"email": "valentin.montemarani@abc.com",
"administrator": false
}
],
"paging": {
"cursors": {
"before": "QVFIUmU1QnBOYThYTnJiQlNqVzItMFdoTVprSHh3cWZA4LXF2ZAE5nSjIxVWZAOWUc1ZAjdLZAjN2em1SazRYVno4TGE4aFBaOFdMaS1NMDdkeEduVkRsOTVhN3Jn",
"after": "QVFIUjhWdm5EOTk3amJaWHVYR3p1OEZAZAQ0ZAoeTR5TDBwblE0Mmx3dC1zRXhPM2VLZAWdqR0RWQndUVnhpTGc3RkIzVkNIY21EcXFTQU93NHVxRFcxVW12dTNB"
},
"next": "https://graph.facebook.com/v2.12/1528385107457405/members?access_token=%2Cemail&limit=25&after=QVFIUjhWdm5EOTk3amJaWHVYR3p1OEZAZAQ0ZAoeTR5TDBwblE0Mmx3dC1zRXhPM2VLZAWdqR0RWQndUVnhpTGc3RkIzVkNIY21EcXFTQU93NHVxRFcxVW12dTNB"
}
}
此API未返回完整数据,它会使用下一步链接返回数据,方法是点击下一个链接,我们可以获取下一组记录。如何使用 Data Factory V2 中的迭代获取此类数据?我尝试了其他活动,例如对于每个,直到和如果但无法重复该复制活动以获取完整数据。
基本网址就像
https://graph.facebook.com/Community/groups?fields=privacy,name,purpose&limit=5&access_token=value
现在,下一个URL将是相同的,并且在其后面还有一个参数,如
有没有办法做到这一点?
答案 0 :(得分:0)
复制活动具有对分页的内置支持。如果是@Waqas Idrees,则分页规则应设置为:
AbsoluteUrl
$.data.paging.next
可以在“复制”活动的“源”选项卡上找到这种设置:
因此回答了OP问题:
如何在Data Factory V2中使用迭代来获取此类数据?
无需使用迭代。考虑使用“复制”活动功能。
PS 因为探索该主题花费了我相当多的时间,并且在研究过程中我找不到类似的指导,所以我创建了一篇有关该主题的博客并描述了该过程分步操作:Azure Data Factory and REST APIs - Mapping and Pagination
P.P.S。由于ADF的发展步伐,我接受2018年4月内置分页功能尚不能成为该产品的一部分。在这种情况下,它解释了为什么此时未回答问题。但是,我希望我的发现能对如今面临类似挑战的人有所帮助。