[Power Query] Temps chargement données JSON depuis API avec pagination

34extraction-api.xlsm (234.75 Ko)

Bonjour à toutes et tous,

Je travaille sur un outil permettant de paramétrer une requête vers une API via un formulaire et d'extraire automatiquement les données vers une feuille Excel (disponible en pièce jointe). L'outil fonctionne plutôt bien si ce n'est deux-trois soucis. Le plus embêtant est que l'extraction prend beaucoup de temps dès qu'il y a plus de 10 000 lignes (et donc plusieurs pages de résultats en JSON). Pour récupérer environ 34 000 lignes, il a fallu 1min30 et c'est assez embêtant car on peut vite être amené à extraire des centaines de milliers de lignes... Il est bien probable que l'API contribue à ce temps de latence mais je me demande s'il n'y a pas des améliorations à faire sur mon fichier pour optimiser.

Pour expliquer le principe, j'ai une requête principale DATA dans Power Query qui génère une liste de numéros allant de la première à la dernière page de résultats. Pour chaque numéro de page, j'appelle ensuite une fonction createDATA qui permet d'extraire les données en JSON. Pour ça, l'URL de ma requête est préalablement stockée dans un paramètre lors de la validation du formulaire, puis utilisée dans ma fonction en ajoutant derrière "&page=" et le numéro de la page. Après cette étape, je combine les tables et applique les transformations supplémentaires que j'ai à effectuer.

image image

Je suis du coup preneur de tout conseil à ce niveau. Je précise au cas où que j'ai testé de supprimer toutes les étapes de transformation après la partie de récupération des données en JSON et que ça n'a pas vraiment changé le problème.

Bonne journée !

Bonjour mpilorge, et bienvenue.

Oulà! Juste un conseil si vous me le permettez, effacez vite fait votre fichier excel qui contient votre clé perso d'acces (token) au site api.atmo-aura.fr (jamais bon de laisser trainer ses clés ...)

Sinon pour revenir au sujet, la doc de l'API de ce site indique qu'il est possible de filtrer la réponse json avant de la charger. Ca me semblerait une bonne méthode pour accélérer le temps de traitement. Un filtre sur les dates par exemple comme expliqué ici =>

http://api.atmo-aura.fr/documentation/communes_indices

Pierre

Merci de votre réponse :)

Ah pourtant, j'ai supprimé mon token sur les URL des requêtes et aussi dans la feuille Excel où je le stockais (mais je me suis raté au premier chargement du fichier donc peut-être avez-vous téléchargé le fichier avant que j'ai eu le temps de mettre à jour). En téléchargeant de nouveau le fichier, je ne le vois pas.

Oui effectivement, on peut filtrer la requête pour limiter le nombre de données et c'est ce que permet de faire le formulaire que j'ai créé. Quand on manipule des données journalières, mensuelles ou annuelles, il y a peu de chance de dépasser les 10 000 lignes (à moins de ne vraiment rien filtrer). Pour les données horaires cependant, on arrive vite à un grand nombre de lignes car on a parfois besoin de ce pas de temps pour des analyses avec un recul de plusieurs années. C'est pour ça que je cherche à voir comment optimiser au mieux mes transformations.

Maxime

Ok, comme vous voulez.

Voici un exemple de traitement de données json à partir de ce site (avec une requête lambda et sans PowerTruc). J'ai pu constaté que le temps global (1min30 environ pour les 10 000 lignes) est largement pris par le délai d'attente du serveur. Est-ce que c'est mieux?

Pierre

Le déclenchement de la procédure principale lecture_Json() ne fait rien de mon côté. D'après ce que je vois du code, il me manque probablement une ou plusieurs librairies à activer. J'ai trouvé Microsoft Script Control 1.0 que j'ai coché mais ça n'a rien changé. Est-ce qu'il y aurait autre chose à activer ?

Merci en tout cas pour le temps consacré.

Ah, je soupçonne un Excel 64bits ...

Ma version est en 32bits

Soupçon avéré. Quoi qu'il en soit, si le temps d'exécution a été similaire et que vous pensez que ça vient de l'API majoritairement, alors peut-être qu'il n'y a malheureusement pas grand-chose à faire. Cet API reste assez récente alors peut-être que des améliorations de performance sont prévues pour la suite. Je vais marquer comme résolu du coup pour pas embêter plus longtemps. Merci beaucoup !

Rechercher des sujets similaires à "power query temps chargement donnees json api pagination"