loader image

Se connecter à une API avec Power BI

4 février 2022

Nous allons nous intéresser aujourd’hui aux connexions API WEB. Ce type de connexion se définit comme un jeu de données « contenue » dans une adresse http. C’est pour cela que les connexions aux API WEB requièrent une URL.

L’exemple dans cet article explique comment on intègre dans Power BI des données provenant d’une API WEB.

Mais avant toutes choses, sachez que vous pouvez intégrer dans Power BI Desktop des données provenant d’un fichier au format JSON que vous aurez téléchargé au préalable. Vous trouverez dans Power BI Desktop, menu « Obtenir les données » la possibilité d’intégrer manuellement ce type de fichier.

Dans notre exemple nous utiliserons des données correspondant à la fréquentation des voyageurs dans les gares de la SNCF.

Vous pouvez accéder à cette page en tapant « sncf open data » sur votre navigateur internet, ici Google Chrome. Ces données de la SNCF sont libres, elles ne nécessitent pas de clé. Attention au site sur lequel vous vous trouvez ; ).

Vous accèderez au site ci-dessous et aurez accès à de nombreuses bases open source pour vous entrainer.

Sinon en cliquant sur le lien ci-dessous vous pourrez récupérer l’URL de l’API WEB à laquelle nous nous connectons dans cet exemple.

https://ressources.data.sncf.com/explore/dataset/frequentation-gares/api/?disjunctive.nom_gare&disjunctive.code_postal

Le lien vous amène sur la page ci-dessous. Dans cette page vous pouvez paramétrer les données que vous désirez si vous souhaitez quelque chose de plus précis dans ce jeu de données.

En l’occurrence nous souhaitons travailler sur l’ensemble du jeu de données. On constate ci-dessous en haut à gauche qu’il y a 2967 enregistrements. Pour le moment de votre côté le paramètre « rows » est sur « 10 ». Donc le jeu de données ne va récupérer que les 10 premières lignes des 2967 enregistrements. Changer ce paramètre sur « 3000 ».

Si jamais vous avez un nombre d’enregistrements différents, c’est possible, les données ont peut-être évolué depuis février 2022 date à laquelle l’article a été rédigé. Mais cela ne change en rien à la technique ; ).

Cela fait, vous verrez plus bas sur cette même page le bouton « Envoyer ». Cliquez dessus. Puis cliquez sur le lien en dessous du bouton.

Cela va vous ouvrir une page horrible qui fait mal aux yeux. Récupérez l’adresse URL ce cette page. Vous constaterez dans l’URL que le paramètre « rows » est bien complété avec la valeur « 3000 ». Ci-dessous l’URL. Si cela ne fonctionne pas de votre côté, récupérez l’URL de votre navigateur.

https://ressources.data.sncf.com/api/records/1.0/search/?dataset=frequentation-gares&q=&rows=3000&facet=nom_gare&facet=code_postal)

Maintenant ouvrez Power BI Desktop. Puis dans « Obtenir les données » cliquez sur « Web ».

Copier-coller le lien comme indiqué ci-dessous.

Laissez Power Query s’ouvrir. Vous devriez avoir cette page. Vous constatez que Power BI a déjà fait des transformations dans « Etapes appliquées ». Mais le résultat obtenu ne correspond pas du tout à la table de 2967 attendues.

Alors supprimez toutes les étapes dans le volet « étapes appliquées » de sorte à conserver seulement l’étape « Source ». Nous allons faire nos changements afin d’arriver à avoir une table de 2967 lignes.

Vous constatez maintenant dans le volet « Requêtes » que vos données ne sont plus au format « table » mais en format « liste ».

Dans un premier temps, on remet la liste au format « table » puis dans un dernier temps on s’occupera de ce qu’il y a dans nos données. Donc cliquez dans le menu « Convertir » sur « En table ».

Vous voilà maintenant comme ci-dessous avec vos données en format table. Vous constatez dans vos données, colonne Value, les valeurs « Reccord » en ligne 2 et « List » en ligne 3 et 4. Vous constaterez également que vous pouvez cliquer sur ces valeurs. Cette opération transformera vos données et une étape sera créée. Vous pouvez faire le test puis revenir à votre position initiale en supprimant l’étape.

« Record » correspond à toutes les données d’une ligne compressées dans une seule cellule. Si par exemple vous avez une table avec 3 colonnes : nom, prénom, âge. Une cellule dans laquelle il y a écrit « Record » contiendra le nom, le prénom et l’âge d’une ligne. Cela correspond donc à un enregistrement.

« List » est l’inventaire d’un ensemble. Dans notre exemple, on constate ligne 3 que l’on a la liste des « reccords ». Autrement dit la liste de tous les enregistrements du jeu de données.

Donc cliquez sur liste dans la ligne 3.

Vous obtenez la liste de tous les « Record ». Autrement di la liste des 2967 enregistrements. Chaque cellule contient toutes les données d’une ligne.

Transformez votre liste en table comme vous l’avez fait lors de l’opération précédente.

Cette fenêtre s’affiche, cliquez directement sur « OK ».

Vos données sont maintenant à nouveau au format « table ».

Comme vous pouvez l’observer ci-dessous vous pouvez développer votre colonne. En faisant cette manipulation chaque cellule va se décompresser. Les cellules vont se diviser en colonne.

Vos données devraient se présenter comme ci-dessous.

Refaites la même manipulation cette fois sur la colonne « fields ».

Vos données devraient se présenter comme ci-dessous.

Aller dans le menu « Affichage » cliquez sur « Profil de la colonne ». Puis en bas de votre fenêtre Power Query, cliquez sur « Profilage de la colonne », paramétrez sur l’ensemble du jeu de données. Vous verrez comme ci-dessous dans « Statistiques de colonnes » que le nombre de lignes est bien de 2967.

Vous pouvez comparer vos données sur Power Query à ce qu’indique l’API WEB directement sur votre navigateur comme ci-dessous.

Juste un peu de mise en forme pour comprendre encore quelques éléments importants. Sélectionnez les colonnes comme indiqué ci-dessous.

Vos données devraient se présenter comme ci-dessous.

Permutez vos colonnes, renommez votre table et paramétrez le type de vos colonnes.

Si vous faites une recherche de gare dans « nom_gare » vous constaterez que ce n’est pas évident. Déjà Power Query est sensible à la casse. Puis la barre de recherche dans le filtre est limité à 1000 lignes.

Il est préférable de faire un filtre sur le code_postal comme ci-dessous.

Enfin préférez faire un filtre textuel sur « commence par » ou bien « contient ». Cela contournera le problème de la barre de recherche qui ne permet de filtrer que sur 1000 lignes.

Faites le test avec la gare Montparnasse vous verrez que ce processus de filtre est plus pertinent.

Vous savez maintenant vous connecter à une API WEB.

Nous espérons que ce tuto vous a plu et vous aidera. Sinon n'hésitez pas à consulter nos propositions de formations.

A très bientôt!

Articles en relation

envelopephone-handset linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram