Интеграция Discourse Data Explorer с Power BI
Недавно я создал удобную функцию для Power BI, которая напрямую загружает данные из Data Explorer в Power BI с минимальными затратами ресурсов.
Таким образом, если вы, как и я, хотите, чтобы данные автоматически подтягивались и обновлялись через приложение Power BI, вот код функции, который нужно вставить в «Дополнительный редактор» в Power BI:
(queryID) => let
resultCount = 1000,
otherNameForPage = 0,
GetPage = (otherNameForPage) =>
let
content1 = "params={""page"":""" & Number.ToText(otherNameForPage) & """}",
RawData = Json.Document(Web.Contents(
"https://forumURL/admin/plugins/explorer/queries",
[RelativePath=Number.ToText(queryID) & "/run",
Query=
[
params="{""page"":""" & Number.ToText(otherNameForPage) & """}"
],
Headers = [
#"api-username"="yourAPIUsername",
#"api-key"="yourAPIKey",
#"Content-Type" = "application/x-www-form-urlencoded"],
Content = Text.ToBinary(content1)
]
) ),
resultCount = RawData[result_count]
in
if RawData[result_count] = 0 then null else RawData,
Pages = List.Generate(
() => [i = 0, RawData = GetPage(i)],
each [RawData] <> null,
each [i=[i]+1, RawData = GetPage(i)],
each Table.Combine(let raw = [RawData] in List.Transform(raw[rows], each Table.FromRows({_}, raw[columns])))),
Output = Table.Combine(Pages)
in
Output
А вот пример запроса Data Explorer. Он включает пагинацию, которая необходима для корректной работы функции выше (она требуется даже если ваш запрос возвращает только одну страницу):
--[params]
-- integer :page = 0
SELECT count(*) from badges
OFFSET :page * 1000
LIMIT 1000
(вы можете легко адаптировать свои существующие запросы, добавив первую и последнюю строки из примера выше)
Эта функция будет автоматически перебирать страницы, пока не будут получены все результаты.
Как это настроить?
После загрузки функции в Power BI вам нужно настроить два параметра:
-
Имя пользователя API (api-username) и ключ API (api-key) (см. плейсхолдеры в функции выше):
Headers = [ #"api-username"="yourAPIUsername", #"api-key"="yourAPIKey", -
Номер ID запроса.
Для получения данных вам нужно указать только ID запроса, который легко найти в URL запроса:

После нажатия на функцию в Power BI это должно выглядеть так:
Пример результата
Это результат выполнения примера запроса:

Всё готово! Теперь вы можете преобразовывать свои данные так, как вам нужно.










