Requête HTTP get (téléchargement de fichier) : l'opération a expiré après 60 000 millisecondesChers tous,
Je souhaite importer un fichier csv depuis un serveur interne ("http:....").
(JMP 14.0, Windows)
Cela a généralement plutôt bien fonctionné, mais le fichier devient de plus en plus volumineux.
Comme je dois analyser le fichier complet (pour obtenir tous les types de données corrects), j'ai pensé que ce serait une bonne idée,
télécharger d'abord le fichier dans le répertoire $TEMP puis l'importer.
J'ai donc implémenté le téléchargement de fichiers avec une requête http.
Pour un fichier plus petit, cela a encore bien fonctionné, mais pour les plus gros, j'ai un délai d'attente,
et je n'ai trouvé aucune option pour dire à JMP de modifier ce délai d'attente,
sauf que je pourrais changer le registre, s'il vous plaît voir @se poser sur dans le lien suivant :
https://community.jmp.com/message/225323
Le téléchargement d'un fichier volumineux depuis http:... par « requête http » est-il la bonne méthode ?
Existe-t-il une autre méthode pour modifier le délai d'attente sans modifier le registre (mon script doit également fonctionner chez d'autres utilisateurs) ?
Le téléchargement avant l'importation (à l'aide d'une analyse complète) est-il plus rapide que l'importation directe depuis le serveur ?
Merci et meilleures salutations,
Georg
Re : Requête HTTP get (téléchargement de fichier) : l'opération a expiré après 60 000 millisecondesMerci Craig pour la réponse rapide,
votre approche fonctionne généralement et donne des résultats similaires,
mais dans les tableaux de données résultants, les types de données sont différents (en raison du séparateur décimal , / .).
Vos informations m'aident donc à trouver un moyen de travailler.
BR, Georg
Re : Requête HTTP get (téléchargement de fichier) : l'opération a expiré après 60 000 millisecondesLa requête HTTP comporte un message d'expiration.La valeur par défaut est de 60 secondes.
Names Default To Here( 1 );
request = New HTTP Request(
Url( "https://community.jmp.com/html/assets/community-icons/community-icon-mastering.png" ),
Method( "GET" ),
Timeout( 120 )
);
bytes = request << Send;
img = Open( bytes, jpg );
obj = New Window( "Mastering JMP", img );
Re : Requête HTTP get (téléchargement de fichier) : l'opération a expiré après 60 000 millisecondesJe suis presque sûr que JMP ne télécharge le fichier qu'une seule fois pour l'ouvrir ("https...", tapez), même si le fichier doit être analysé plusieurs fois (lorsque le type est "texte" pour les fichiers csv). Je pense que le fichier est gardé en mémoire pour le cas texte/csv, ce qui limitera la taille maximale ; pour les autres types, le fichier peut être enregistré dans un fichier temporaire (l'ouvreur Excel peut besoin pour travailler à partir d'un fichier disque par exemple).
Il est donc possible que le téléchargement d'un fichier CSV sur un fichier disque soit plus lent (probablement pas notable cependant). Si le fichier CSV approche la moitié de la taille de votre mémoire (taille de fichier de 8 Go sur une machine de 16 Go... la table JMP aura également besoin de mémoire !), il peut être nécessaire de le télécharger d'abord.
Je ne sais pas où se produit le délai d'attente, mais une autre approche du téléchargement pourrait ressembler à ceci :
// here's a way to download a URL to a local file
filename = Save Text File(
"$temp/sample.csv", // extension is saved as CSV
Load Text File(
"https://data.cityofnewyork.us/api/views/kku6-nxdu/rows.csv?accessType=DOWNLOAD",
blob
)
);
dt1 = Open( filename ); // "text" not needed because extension is CSV
// here's a way to open directly
dt2 = Open(
"https://data.cityofnewyork.us/api/views/kku6-nxdu/rows.csv?accessType=DOWNLOAD",
"text" // here the extension might or might not be CSV, use "text" to make sure
);
// verify both ways make the same table
compare = dt1 << Compare Data Tables(
Compare with( dt2 ),
Compare Data,
Show Difference Summary( 0 ),
Show Difference Plot( 0 )
);
If( compare << Are Data Different,
Write( "\!nwhy are they different?" ),
Write( "\!nResults identical" )
);
Show( N Rows( dt1 ), N Cols( dt1 ), N Rows( dt2 ), N Cols( dt2 ) );
// clean up
compare << closewindow;
Close( dt1, "nosave" );
Close( dt2, "nosave" );
@bryan_boone