我尝试在 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/