Azure data factory 使用Azure数据工厂获取分页数据

Azure data factory 使用Azure数据工厂获取分页数据,azure-data-factory,azure-data-lake,u-sql,azure-data-factory-2,Azure Data Factory,Azure Data Lake,U Sql,Azure Data Factory 2,我在Azure Data Factory V2中创建了一个管道。它将从RESTAPI复制数据,并将该数据以JSON文件的形式保存在Azure data Lake中。然后我使用U-SQL转换JSON文件,并以.csv格式将数据复制到另一个文件夹中。我的管道。请参见下面的管道图 RESTAPI将数据返回为JSON格式 { "data": [ { "id": "100024937598765", "name": "Sebasti

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

RESTAPI将数据返回为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未返回完整数据它使用下一个链接返回数据通过点击下一个链接,我们可以获取下一组记录。如何在数据工厂V2中使用迭代获取此类数据?我尝试了其他活动,如,直到和如果,但无法重复该复制活动以获取完整数据

基本URL类似于

现在,下一个URL将是相同的,并在其后面添加1个参数,如

有什么方法可以做到这一点吗?

  • 复制活动内置了对分页的支持。对于@Waqas Idrees,分页规则应设置为:

    • 名称:
      AbsoluteUrl
    • 值:
      $.data.paging.next
    可以在复制活动的“源”选项卡上找到此类设置:

  • 无需使用U-SQL将层次结构转换为表格格式。复制活动映射可以快速完成
  • 因此,对OP问题的回答是:

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

    不需要使用迭代。考虑使用复制活动功能。

    p.S.由于对这一主题的探索花费了我相当多的时间,而且我在研究过程中找不到类似的指导,因此我创建了一篇关于这一主题的博客文章,并逐步描述了这一过程:


    p.p.S.由于ADF的发展速度,我同意2018年4月内置分页还不能成为产品的一部分。在这种情况下,它解释了为什么当时没有回答这个问题。然而,我希望我的发现能帮助那些最近面临类似挑战的人。

    请浏览下一个链接。它看起来像一个可以复制的URL吗?通常下一个URL只是有一些参数告诉它下一步返回哪个页面。是的,它是一个URL,将返回下一组记录。但是我们如何迭代这个复制活动,直到有下一个链接可以响应?是的,我知道URL返回下一组记录。但是它看起来像什么?它是否具有指示页面等的参数。?您可能可以为每个活动使用,尽管我以前从未使用过:通常,数据工厂中的任何非琐碎内容都必须编译成DLL并调用。请发布下一个URL的示例(以及第一页上的URL),通常这些只是带有参数的URL。如果是这种情况,您可以选择使用RESTAPI。API通常有关于如何使用它的文档。如果没有,它不是一个很好的API,因为您不知道这将需要多少次迭代,那么您需要使用
    ,直到
    。您需要从刚刚返回的JSON中提取数据,而我没有看到任何关于如何做到这一点的信息——我不认为这是可能的。如果这需要在云中完成,那么我将通过编写一些powershell来完成基本工作(调用API,将JSON写入数据湖,检查JSON以获取下一个URI,调用下一个URI,重复),并在Azure Automation中运行。然后,您可以使用触发器从那里调用ADF活动,或者在Powershell中执行所有操作