Integración de Power BI con Discourse Data Explorer
Recientemente creé una función útil de Power BI que recupera datos de Data Explorer directamente en Power BI con una sobrecarga mínima.
Por lo tanto, si eres como yo y deseas que los datos se extraigan y actualicen automáticamente a través de la aplicación Power BI, aquí tienes el código de la función que debes colocar en el Editor Avanzado de 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
Y aquí tienes una consulta de ejemplo de Data Explorer. Incluye la paginación necesaria para que la función anterior funcione correctamente (es necesaria incluso si tu consulta devuelve solo 1 página):
--[params]
-- integer :page = 0
SELECT count(*) from badges
OFFSET :page * 1000
LIMIT 1000
(puedes adaptar fácilmente tus consultas existentes incluyendo las dos primeras y las dos últimas líneas del ejemplo anterior)
Esta función continuará iterando automáticamente sobre las páginas hasta que no se encuentren más resultados.
¿Cómo hacerlo funcionar?
Después de cargar la función en Power BI, necesitarás configurar 2 cosas:
-
El nombre de usuario de la API y la clave de la API (consulta la función anterior para ver los marcadores de posición):
Headers = [ #"api-username"="yourAPIUsername", #"api-key"="yourAPIKey", -
El número de ID de la consulta.
Para obtener tus datos, todo lo que debes proporcionar es el ID de la consulta, que es fácil de encontrar en la URL de la consulta:

Esto debería verse así en Power BI después de hacer clic en la función:
Salida de ejemplo
Esta es la salida de la consulta de ejemplo:

¡Eso es todo! Ahora puedes dar forma a tus datos como quieras.










