api - Power Query List.Generate 以循环分页 API 调用

标签 api loops powerquery

我尝试在 Power Query 中附加多个 API 调用的结果以构建结果表。

API 将每次调用限制为 1000 行,但每个结果都会返回当前页码以及下一次调用和总行数,因此很容易知道要迭代的内容和次数。我需要从第 1 页开始,到总行数/1000 结束。

如果可以将每个后续结果与累积的先前调用一起附加到循环中,我只需要语法方面的帮助。

函数内的 List.Generate 之类的东西可能会起作用,但我无法理解。

最佳答案

我已成功使用@horseyride 评论中的引用文献来回答我的问题。

它涉及在 Power Query 中用 M 代码创建两个自定义函数。我将在下面分享这两个函数的重要部分。

fnGetResults:

    (page, outcome) =>
let
    url = "https://myapi.com/outcomes/findings/?outcome="&Number.ToText(outcome)&"&page="&Number.ToText(page)&"&page_size=1000",
    Source = Json.Document(Web.Contents(url, [Headers = [#"Authorization"="JWT "&get_token]])),
    results = Source[results]
in
    results

fnGetOutcomes:

    (id) =>
let
    outcome_list = List.Generate (
        () => [page = 1, result = fnGetResults(1,id)],
        each not List.IsEmpty([result]),
        each [page= [page] + 1, result = fnGetResults([page],id)],
        each [result]
    ),
    #"Converted to Table" = Table.FromList(outcome_list, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandListColumn(#"Converted to Table", "Column1"),
    outcome = Table.ExpandRecordColumn(#"Expanded Column1", "Column1",
        Record.FieldNames(#"Expanded Column1"{0}[Column1]),
        Record.FieldNames(#"Expanded Column1"{0}[Column1])),
in
    outcome

关于api - Power Query List.Generate 以循环分页 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74177542/

相关文章:

javascript - 无法访问对象属性

python - 从解析的数据生成简单的 RSS 提要

java - 如何组合来自不同列表的同一索引处的元素?

Android 浏览器 Intent - 使用 GPS 坐标打开导航应用程序

javascript - 如何在具有相同 ID 的元素上分配 API 获取随机颜色?

perl - 从STDIN读取时,while vs foreach

excel - 使用 Power Query 为列表中的每个元素获取自身的模糊匹配(丢弃完全匹配)

excel - VBA 删除连接, "Assignment to constant not permitted"错误

powerbi - 根据变量列名称选择行

angularjs - Laravel 5 API 路由向前端返回 500 错误