针对 API 请求在 Power Query 中的 distinctList 上简单循环

simple for loop over a distinctList in Power Query for an API request

我不得不承认我的信心受到了打击。

我有一个列表,我使用 List.Distinct 函数从 table 推断出来。

我有一个 API 我需要调用,但需要获取一个 ID,该 ID 将来自 List.Distinct 输出。

所以我的问题是如何遍历 distinct_list 并将其作为参数输入到 api 调用中的查询中。

在伪代码中这将是:

distinct_table = unique(table[id])
empty_list = []
for each_id in distinct_table[List]:
    j = JsonDocument("www.apicall.com?peopleid=each_id")
    empty_list.append(j)

到目前为止的代码。

let
    distinct_list = List.Distinct(Projects[project_id])

    Source = Json.Document(Web.Contents("https://api.random.com",
                                                    [
                                                       RelativePath="/v3/logged-tasks",
                                                       Headers = [mytoken],
                                                       query = [
                                                       person_id = (each row from distinct_list)],
   #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error)





in 
    Source

我建议让 API 调用它自己的函数。

例如,我将这个函数命名为 API returns text for a given number:

(n as number) as text =>
let
    Source = Text.FromBinary(Web.Contents("http://numbersapi.com/"&Text.From(n)&"/math"))
in
    Source

现在我们可以在其他查​​询中调用这个函数了。例如:

let
    distinct_list = {3,6,12},
    #"Converted to Table" = Table.FromList(distinct_list, Splitter.SplitByNothing()),
    #"Added Custom" = Table.AddColumn(#"Converted to Table", "API", each API([Column1]))
in
    #"Added Custom"

这是它的样子:

如果您愿意,可以转换而不是添加列:

Table.TransformColumns(#"Converted to Table", {{"Column1", each API(_), type text}})