Intégration de Discourse Data Explorer avec Power BI
J’ai récemment créé une fonction Power BI intéressante qui récupère les données de Data Explorer directement dans Power BI avec un surcoût minimal.
Ainsi, si vous êtes comme moi et que vous souhaitez que les données soient automatiquement extraites et actualisées via l’application Power BI, voici le code de la fonction que vous devez placer dans l’Éditeur avancé 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
Et voici une requête d’explorateur de données d’exemple. Elle inclut la pagination requise pour que la fonction ci-dessus fonctionne correctement (elle est requise même si votre requête ne renvoie qu’une seule page) :
--[params]
-- integer :page = 0
SELECT count(*) from badges
OFFSET :page * 1000
LIMIT 1000
(vous pouvez facilement adapter vos requêtes existantes en incluant les deux premières et les deux dernières lignes de l’exemple ci-dessus)
Cette fonction continuera automatiquement d’itérer sur les pages jusqu’à ce qu’aucun résultat supplémentaire ne soit trouvé.
Comment le faire fonctionner ?
Après avoir chargé la fonction dans Power BI, vous devrez configurer deux éléments :
-
Le nom d’utilisateur de l’API et la clé API (voir la fonction ci-dessus pour les espaces réservés) :
Headers = [ #"api-username"="yourAPIUsername", #"api-key"="yourAPIKey", -
Le numéro d’ID de la requête.
Pour récupérer vos données, tout ce que vous devez fournir est l’ID de la requête, facile à trouver dans l’URL de la requête :

Cela devrait ressembler à ceci dans Power BI après avoir cliqué sur la fonction :
Résultat d’exemple
Voici le résultat de la requête d’exemple :

C’est tout ! Vous pouvez maintenant modeler vos données comme vous le souhaitez.










