Недавно возникла необходимость сделать источник данных из нескольких запросов по API. Количество запросов при этом определялось динамически — от количества дней между текущим днем и фиксированной датой*. И после того, как я опубликовал отчет и попробовал его поставить на обновление — меня ждал неприятный сюрприз в виде вот сообщения «This dataset includes a dynamic data source … this dataset won’t be refreshed».
В самом dataset у меня генерируется множество ссылок, потом загружается данные по этим ссылкам + некоторое количество шагов преобразования. Но как говорится — просто нельзя вот так просто сгенерировать 20 ссылок и загрузить по ним данные в PowerBI. Точнее сделать это можно, но обновление придется делать локально вручную.
… или немного переписать код, который делает запрос, тогда все будет работать как часы
Итак, старая версия когда, которая не может обновляться автоматически выглядит таким образом
fetch = Table.AddColumn(#"Added Custom2", "result", each Json.Document(Web.Contents(
url_base & url_path &
"module=logs" &
"action=getLogs" &
"address=" & contract_address &
"fromBlock=" & Text.From([BlockFrom]) &
"toBlock=" & Text.From([BlockTo]) &
"apikey=" & api_key
)))
Новая версия
fetch = Table.AddColumn(#"Added Custom2", "result", each Json.Document(Web.Contents(
url_base & url_path
, [Query = [
module="logs",
action="getLogs",
address=contract_address,
fromBlock=Text.From([BlockFrom]),
toBlock=Text.From([BlockTo]),
apikey=api_key
]])))
Разница в том, что динамические параметры выделены в секцию query в соответствии с официальной справкой.
* код M, который генерирует список между текущей и фиксированной датой
= List.Dates(#date(2022,12,20), 365, #duration(1, 0, 0, 0))