带 API 调用前缀的动态基本 URL - Power Query

问题描述 投票:0回答:0

我正在尝试取消对 meta api 的 API 调用的动态化,但是 Meta 的 URL 模式涉及调用的根 url 每次都必须更改:

在我的主要查询中,我检索每个广告的 ID,然后调用以下函数(这是要调整的函数)=>

(adID as text)=>
let
    baseurl = "https://graph.facebook.com/v15.0/"&adID&"/",
    options = [RelativePath="insights?fields=campaign_name,impressions,reach,clicks,spend,cpc,ctr,conversions&date_preset=maximum&time_increment=monthly", Query=[access_token=metaUserToken]],
    Source = Json.Document(Web.Contents(baseurl, options))
    in
    Source

问题是,这不是静态的,一旦在 PBI 服务中发布就会返回错误。我想知道是否有任何解决方法?

为了完整性,这里是我的主要查询代码:

它的第一部分也将针对非动态进行调整,但这不涉及根 url 所以很容易修复。

let
    baseUri = "https://graph.facebook.com/v15.0/act_"&metaAdID&"/ads?access_token="&metaUserToken,
    initReq = Json.Document(Web.Contents(baseUri)),
    initData = initReq[data],

    gather = (data as list, uri as text) =>
       let     
           newUri = Json.Document(Web.Contents(uri))[paging][next],
           newReq = Json.Document(Web.Contents(newUri)),
           newData = newReq[data],

           data = List.Combine({data, newData}),
           check = if Table.Contains(Record.ToTable(newReq[paging]), [Name = "next"]) = false then data else @gather(data, newUri)
       in 
           check,
    outputList = if Table.Contains(Record.ToTable(initReq[paging]), [Name = "next"]) = true then @gather(initData, baseUri) else initData,
    #"Converted to Table" = Table.FromList(outputList, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"id"}, {"id"}),
    #"Renamed Columns" = Table.RenameColumns(#"Expanded Column1",{{"id", "adID"}}),
    #"Added Custom" = Table.AddColumn(#"Renamed Columns", "Info", each **getMetaADInsights([adID]))**

最后一行“GetMetaAdInsights”参考上面的代码

facebook powerquery m
© www.soinside.com 2019 - 2024. All rights reserved.