【问题标题】:Azure Synapse mapping dataflow - REST source dataset not paginating from ITGlue APIAzure Synapse 映射数据流 - REST 源数据集未从 IT Glue API 分页
【发布时间】:2022-12-07 05:30:43
【问题描述】:

这是我在这里的第一篇文章,所以如果我在错误的地方,请原谅我。

我在 Azure Synapse 中运行映射数据流以查询 ITGlue 的 REST API。它只返回一页结果,而不是所有结果。

这是我查询的端点:https://api.itglue.com/configurations

这是该端点的响应正文(为保持简短而被截断):


{
    "data": [
        {
            "id": "1234567",
            "type": "configurations",
            "attributes": {
               ......
            },
            "relationships": {
                "adapters-resources": {
                    "data": []
                }
            }
        }
    ],
    "meta": {
        "current-page": 1,
        "next-page": 2,
        "prev-page": null,
        "total-pages": 1000,
        "total-count": 1000,
        "filters": {}
    },
    "links": {
        "self": "https://api.itglue.com/configurations?page%5Bnumber%5D=1&page%5Bsize%5D=1",
        "next": "https://api.itglue.com/configurations?page%5Bnumber%5D=2&page%5Bsize%5D=1",
        "last": "https://api.itglue.com/configurations?page%5Bnumber%5D=1714&page%5Bsize%5D=1"
    }
}

以下是我认为是 ITGlue 的相关配置:

Dataset source options

据我所知,这是分页规则的正确语法。我唯一认为搞砸的是“下一个”链接中的字符,它们是 http 编码的 [ 和 ] 字符。

此端点的 IT Glue API 文档 here 证实了这一点 - 用 page[number] 代替。

以前有人遇到过这个问题吗?

这是我在 Azure Synapse 中尝试使用分页规则的方法 - 都没有成功(数据流只返回一页数据)

  1. AbsoluteUrl - 正文 - {links.next}(如图)
  2. AbsoluteUrl - 正文 - links.next
  3. AbsoluteUrl - 正文 - $.{links.next}
  4. AbsoluteUrl - 正文 - ['链接']['下一个']
  5. AbsoluteUrl - 无 - 正文。{links.next}
  6. AbsoluteUrl - 无 - body.links.next
  7. 查询 - 页 %5Bnumber%5D - 正文 - {meta.next-page}
  8. 查询 - 页[编号] - 正文 - {meta.next-page}

    使用 Postman 或 Powershell Invoke-RestMethod 测试此行为时,它似乎工作正常。

【问题讨论】:

    标签: azure rest azure-data-factory azure-synapse


    【解决方案1】:

    我尝试使用您的 API 在我的环境中重现您的场景我遇到了一些错误,因此尝试使用我的示例 API。

    我的示例 API 返回响应,

    {{"_embedded":
    .
    .
    .},
    "_links":{
    "first":{"href":"https://www.ebi.ac.uk/ols/api/ontologies?page=0&size=20"},
    "last":{"href":"https://www.ebi.ac.uk/ols/api/ontologies?page=13&size=20"},
    "next":{"href":"https://www.ebi.ac.uk/ols/api/ontologies?page=1&size=20"},
    "self":{"href":"https://www.ebi.ac.uk/ols/api/ontologies"}},
    "page":{"number":"0","size":"20","totalElements":"280","totalPages":"14"}},
    "headers":{.......}
    

    分页规则我给了绝对网址值为 body._links.next.href 并在文件形式我给了Document per line

    通过以上设置,我可以从我的示例 API 中检索所有页面。

    在您的 API 中,分页应如下所示

    输出

    【讨论】:

      猜你喜欢
      • 2021-09-19
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 2022-01-08
      • 2022-01-02
      • 1970-01-01
      • 2022-08-03
      相关资源
      最近更新 更多