Discourse Data Explorer Power BI-Integration
Ich habe kürzlich eine praktische Power BI-Funktion erstellt, die Daten aus dem Data Explorer mit minimalem Aufwand direkt nach Power BI abruft.
Wenn Sie also wie ich möchten, dass die Daten automatisch über die Power BI-App abgerufen und aktualisiert werden, finden Sie hier den Code der Funktion, den Sie im erweiterten Editor in Power BI einfügen sollten:
(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
Und hier ist eine Beispiel-Data-Explorer-Abfrage. Sie enthält eine erforderliche Paginierung, damit die oben genannte Funktion ordnungsgemäß funktioniert (diese ist erforderlich, selbst wenn Ihre Abfrage nur eine Seite zurückgibt):
--[params]
-- integer :page = 0
SELECT count(*) from badges
OFFSET :page * 1000
LIMIT 1000
(Sie können Ihre vorhandenen Abfragen leicht anpassen, indem Sie die erste und letzte Zeile des obigen Beispiels einfügen.)
Diese Funktion iteriert automatisch über die Seiten, bis keine weiteren Ergebnisse mehr gefunden werden.
So funktioniert es?
Nachdem Sie die Funktion in Power BI geladen haben, müssen Sie zwei Dinge einstellen:
-
Den api-username und api-key (siehe Funktion oben für die Platzhalter):
Headers = [ #"api-username"="yourAPIUsername", #"api-key"="yourAPIKey", -
Die Abfrage-ID-Nummer.
Um Ihre Daten abzurufen, müssen Sie lediglich die ID der Abfrage angeben, die Sie leicht in der Abfrage-URL finden:

Nach dem Klicken auf die Funktion sollte dies in Power BI so aussehen:
Beispieloutput
Dies ist die Ausgabe der Beispielabfrage:

Das war’s! Sie können Ihre Daten nun beliebig weiterverarbeiten.


very useful.








