Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2710 connectés 

  FORUM HardWare.fr
  Programmation
  BI/Big Data

  Excel - intégration de données JSON via requête sur site WEB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Excel - intégration de données JSON via requête sur site WEB

n°2347227
bemo94
Posté le 05-03-2020 à 21:43:09  profilanswer
 

Bonjour,
je ne sais pas si c'est bien le bon endroit pour ma question mais je vais tenter quand même....
 
J'ai une station météo connectée au réseau Weather Underground, ses données sont récupérées via internet toutes les 5 sec environ et restituées en mode public via le site Weather Underground sous forme de graphiques.
Je voudrais les récupérer sous Excel pour éventuellement faire des statistiques spécifiques à la demande.
La récupération est possible via une API et une clé fournie par le site.
 
Voilà une requête permettant de récupérer les données d'un jour avec intervalles de 5 minutes donc 288 lignes de données (24 x 12 intervalles).
 
"https://api.weather.com/v2/pws/history/all?stationId=ABCDEFGHI&format =json&units=m&date=20200301&ap iKey=12345678901234567890xyz"
 
j'ai modifié le nom de station et l'APIkey ....
 
Via le menu données de excel et "obtenir des données" via un site Web je peux récupérer les données de la journée demandée et les intégrer dans un tableau excel.
 
Les problèmes que je voudrais résoudre et automatiser au maximum :
- pouvoir saisir la date dans un paramètre : ça j'y suis arrivé malgré que ça me demande de cliquer plusieurs fois pour terminer une requête et son intégration, comme je veux récupérer pratiquement 1 an d'historique, un système ou je peux lister toutes les dates et les exécuter d'un coup avec intégration serait mieux....
- intégrer à chaque fois dans le même tableau et non pas dans une feuille excel nouvelle pour chaque requête....
- obtenir toutes les colonnes ou champs d'un coup à chaque requête, là j'en obtiens 16 or il y en a 38, pour les obtenir il faut encore cliquer dans le 1er résultat pour déployer les lignes, puis cliquer pour déployer les colonnes.... bref, les obtenir d'un coup serait bien...
 
Après, il y a peut être d'autres solutions qu'une récupération sous excel......
 
Voilà j'espère avoir été suffisamment clair...
 
Je peux aussi ajouter des copies d'écran...

mood
Publicité
Posté le 05-03-2020 à 21:43:09  profilanswer
 

n°2347239
MaybeEijOr​Not
but someone at least
Posté le 06-03-2020 à 09:59:22  profilanswer
 

bemo94 a écrit :

Bonjour,
je ne sais pas si c'est bien le bon endroit pour ma question mais je vais tenter quand même....


Bonjour,
 
Pour le coup il n'y a pas de question donc pour l'instant tu donnes l'impression de demander qu'on te programme ce que tu souhaites, ce qui n'est en effet pas le but de cette section.
L'utilisation d'Excel dépend de ce que tu souhaites faire au final, mais 1 an de données donne déjà plus de 100 000 lignes ce qui devient limite pour Excel à mon avis. L'utilisation d'une base de données semble plus appropriée mais plus lourde à mettre en place.
Pour ce qui est de l'automatisation d'Excel, l'utilisation de macros semble être la seule solution dans ton cas. L'enregistreur de macros permet d'obtenir une base, le code obtenu doit alors être nettoyé et amélioré pour augmenter l'automatisation.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2347244
rufo
Pas me confondre avec Lycos!
Posté le 06-03-2020 à 11:31:56  profilanswer
 

+1 pour une BD. +1 pour le fait qu'il n'y a pas de questions.
 
Après, il suffit de faire un outil qui fera l'import des données et les exports en CSV pour les traitements dans Excel.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2347245
bemo94
Posté le 06-03-2020 à 11:42:26  profilanswer
 

pas de question, pas de question.... il me semblait bien que si.... mais merci quand même de vos retours qui me donnent déjà un 1er niveau de réponse...
J'en comprends qu'il n'y a pas de solution hormis un développement ce qui n'est à priori pas dans mes cordes...
je vais regarder du coté de l'enregistreur de macro quand même...

n°2347247
bemo94
Posté le 06-03-2020 à 12:23:04  profilanswer
 

cela dit, au cas ou quelqu'un connaitrai ce type de requete je voudrai savoir si dans la même requete je peux copier coller plusieurs appels successifs à ma source web pour récupérer en 1 seule requete plusieurs jours de données sachant qu'une requete me retourne les données d'un jour. Si oui, j'aurai juste à copier coller autant de fois que nécessaire la requete dans un éditeur en changer la date ...
 
la requete unitaire qui fonctionne :
 
let
Source = Json.Document(Web.Contents("ht tps://api.weather.com/v2/pws/history/all?stationId=xxxxxxxxxx&forma t=json&units=m&date=20200201&apiKey=xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx" )),
#"Converti en table" = Record.ToTable(Source),
#"Value développé" = Table.ExpandListColumn(#"Conve rti en table", "Value" ),
#"Value développé1" = Table.ExpandRecordColumn(#"Val ue développé", "Value", {"stationID", "tz", "obsTimeUtc", "obsTimeLocal", "epoch", "lat", "lon", "solarRadiationHigh", "uvHigh", "winddirAvg", "humidityHigh", "humidityLow", "humidityAvg", "qcStatus", "metric"}, {"Value.stationID", "Value.tz", "Value.obsTimeUtc", "Value.obsTimeLocal", "Value.epoch", "Value.lat", "Value.lon", "Value.solarRadiationHigh" , "Value.uvHigh", "Value.winddirAvg", "Value.humidityHigh", "Value.humidityLow", "Value.humidityAvg", "Value.qcStatus", "Value.metric"}),
#"Value.metric développé" = Table.ExpandRecordColumn(#"Val ue développé1", "Value.metric", {"tempHigh", "tempLow", "tempAvg", "windspeedHigh", "windspeedLow", "windspeedAvg", "windgustHigh", "windgustLow", "windgustAvg", "dewptHigh", "dewptLow", "dewptAvg", "windchillHigh", "windchillLow", "windchillAvg", "heatindexHigh", "heatindexLow", "heatindexAvg", "pressureMax", "pressureMin", "pressureTrend", "precipRate", "precipTotal"}, {"Value.metric.tempHigh", "Value.metric.tempLow", "Value.metric.tempAvg", "Value.metric.windspeedHig h", "Value.metric.windspeedLow ", "Value.metric.windspeedAvg ", "Value.metric.windgustHigh ", "Value.metric.windgustLow" , "Value.metric.windgustAvg" , "Value.metric.dewptHigh", "Value.metric.dewptLow", "Value.metric.dewptAvg", "Value.metric.windchillHig h", "Value.metric.windchillLow ", "Value.metric.windchillAvg ", "Value.metric.heatindexHig h", "Value.metric.heatindexLow ", "Value.metric.heatindexAvg ", "Value.metric.pressureMax" , "Value.metric.pressureMin" , "Value.metric.pressureTren d", "Value.metric.precipRate", "Value.metric.precipTotal" })
in
#"Value.metric développé"

n°2347256
rufo
Pas me confondre avec Lycos!
Posté le 06-03-2020 à 14:38:15  profilanswer
 

En dév, tout est possible :o Ce que tu veux faire s'appelle une boucle : For ou While. Tu définies une date de début et de fin. Si t'avais tout dans une BD, une seule requête SQL suffirait à tout extraire comme tu veux.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2347257
bemo94
Posté le 06-03-2020 à 15:10:36  profilanswer
 

ah ça me rappelle des choses, la programmation j'ai bien connu et longtemps pratiqué,  mais comme mes seules compétences dans le temps étaient le COBOL !!! ou l'assembleur IBM 360 pour ceux qui auraient connu, là je suis un peu démuni avec les VBA et autres Python ou JAVA !!!!
 
mais tu penses qu'avec une requete sql je pourrai y arriver ?
avec une base ACCESS je devrais donc pouvoir tenter cela, mais ça veut dire que je prépare une table avec tous les champs que veux récupérer dans la requete, et ensuite je construit la requete qui insère les données JSON dans ces champs ?...

n°2347258
rufo
Pas me confondre avec Lycos!
Posté le 06-03-2020 à 15:13:37  profilanswer
 

ACCESS n'est pas une BD. Je te recommande du Mysql ou du Postgres.
1) importer les données du site via un script et l'API dans la BD.
2) écrire une petite appli ou un simple script qui extrait les données en csv
3) faire une macro qui exploite le contenu du csv dans le 1er onglet de ton fichier Excel et qui met à jour des stats/graphiques ou autres choses...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  BI/Big Data

  Excel - intégration de données JSON via requête sur site WEB

 

Sujets relatifs
Detection de son site dans une iframe sur d'autre sitePetit site d’organisation de sorties
Excel: somme.si.ens avec cellule entre 2 valeursRequête ou interface avec cumul quotidien, hebdo, etc.
Données en temps réelRedirection pour aller chercher certains fichiers sur un autre site
Site one page, bootstrap 4 et validation PHP[EXCEL] mise à jour d'un contenu ODBC pendant la nuit
Recuperation des données d'un fichier texteMacro pour copier un tableau avec mot cle de word vers excel et dispat
Plus de sujets relatifs à : Excel - intégration de données JSON via requête sur site WEB


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR