使用Azure Data Factory获取分页数据

时间:2018-04-02 20:00:15

标签: azure-data-factory azure-data-lake u-sql azure-data-factory-2

我在Azure Data Factory V2中创建了一个Pipeline。它将从Rest API复制数据,并以Azure Data Lake中的JSON文件的形式保存此数据。然后我使用U-SQL转换该JSON文件并将该数据复制到.csv格式的另一个文件夹中。我的管道。请参阅以下管道图像。

enter image description here

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将是相同的,并且在其后面还有一个参数,如

https://graph.facebook.com/v2.12/1528385107457405/groups?access_token=value&pretty=1&fields=privacy,name,purpose&limit=5&after=QVF

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

  1. 复制活动具有对分页的内置支持。如果是@Waqas Idrees,则分页规则应设置为:

    • 名称:AbsoluteUrl
    • 值:$.data.paging.next

    可以在“复制”活动的“源”选项卡上找到这种设置:

enter image description here

  1. 无需使用U-SQL将层次结构转换为表格格式。复制活动映射可以快速完成

因此回答了OP问题:

  

如何在Data Factory V2中使用迭代来获取此类数据?

无需使用迭代。考虑使用“复制”活动功能。

PS 因为探索该主题花费了我相当多的时间,并且在研究过程中我找不到类似的指导,所以我创建了一篇有关该主题的博客并描述了该过程分步操作:Azure Data Factory and REST APIs - Mapping and Pagination

P.P.S。由于ADF的发展步伐,我接受2018年4月内置分页功能尚不能成为该产品的一部分。在这种情况下,它解释了为什么此时未回答问题。但是,我希望我的发现能对如今面临类似挑战的人有所帮助。