Ce billet n'a rien à voir avec Linux ; il s'agit d'utiliser JMP pour télécharger les données de conversion de devises.
Les boutons de devise sur la calculatrice Linux ont attiré mon attention récemment.
Calculator showing the currency conversion buttonsCalculatrice affichant les boutons de conversion de devises
Comment obtiennent-ils des facteurs de conversion à jour ? Google m'a pris ici , ce qui m'a pris ici , ce qui m'a amené à cette page de la Banque centrale européenne contenant les tarifs et un lien vers les téléchargements PDF, CSV et XML. Cliquez sur le lien XML et votre navigateur ouvrira probablement quelque chose comme ceci :
screenshot of FireFox showing an XML file of exchange ratescapture d'écran de FireFox montrant un fichier XML des taux de change
Un coup d'œil rapide suggère que ces taux sont tous basés sur l'euro, car l'euro n'apparaît pas et il n'y a pas de facteur 1,0000 dans le tableau. C'est aussi ce que dit la page de référence :
based on the eurobasé sur l'euro
Chargeons le XML dans une table de données. L'assistant XML de JMP 15 peut aider à créer la JSL pour ce faire. Tout d'abord, enregistrez le XML du navigateur sur votre ordinateur, puis utilisez Fichier-> Ouvrir, choisissez l'extension XML, sélectionnez votre fichier et ouvrez-le dans l'assistant.
Choose the XML extension to see the downloaded fileChoisissez l'extension XML pour voir le fichier téléchargé
L'assistant XML s'ouvre et il est temps de décider quelles colonnes et lignes sont intéressantes. Ouvrez les colonnes de statistiques pour voir sous quelles clés se trouvent les données répétitives et fermez les colonnes de noms pour que l'affichage s'adapte mieux à l'écran :
opening the XML file with the wizardouverture du fichier XML avec l'assistant
Vous pouvez également utiliser le Tall Guess pour obtenir la même chose. Le Tall Guess remarque les 32 entrées répétitives et sélectionne cette clé pour créer des lignes, puis sélectionne toutes (les deux) les sous-clés pour créer des colonnes. Il utilise les données de l'échantillonneur pour déterminer si les sous-clés doivent créer des données numériques ou des caractères.
Maintenant, renommez les colonnes en désactivant les Stat Cols et réactivez les Name Cols. Retouchez également quelques autres éléments, définissez le type de modélisation pour la devise sur Nominal. L'heure, le nom, le sujet sont décrits après l'image...
Changing column names, adding some meta dataModification des noms de colonnes, ajout de métadonnées
Il y a trois autres colonnes de métadonnées : heure, nom, sujet. Le temps semble le plus utile ; gardons le temps sur chaque ligne. Le nom et le sujet ne doivent être conservés que comme variables de table ; ils apparaîtront après OK :
The source script and the two table variables are part of the imported tableLe script source et les deux variables de table font partie de la table importée
Cliquez sur les variables du tableau pour vous rappeler d'où provient le tableau.
Pour reproduire cette importation la semaine prochaine, avec les données actuelles de la semaine prochaine, récupérez le script source et modifiez l'URL :
Open(
//"E:\eurofxref-daily.xml",
"https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml",
XML Settings( Stack( 0 ),
Row( "/gesmes:Envelope/Cube/Cube/Cube" ),
Col("/gesmes:Envelope/gesmes:subject",
Column Name( "gesmes:subject" ), Fill( "Use Forever" ),
Type( "Table Variable" ), Format( {"Best"} ), Modeling Type( "Continuous" ) ),
Col("/gesmes:Envelope/gesmes:Sender/gesmes:name",
Column Name( "gesmes:name" ), Fill( "Use Forever" ),
Type( "Table Variable" ), Format( {"Best"} ), Modeling Type( "Continuous" ) ),
Col("/gesmes:Envelope/Cube/Cube/@time",
Column Name( "time" ), Fill( "Use Forever" ),
Type( "Numeric" ), Format( {"yyyy-mm-dd", 10} ), Modeling Type( "Continuous" ) ),
Col("/gesmes:Envelope/Cube/Cube/Cube/@currency",
Column Name( "currency" ), Fill( "Use Once" ),
Type( "Character" ), Format( {"Best"} ), Modeling Type( "Nominal" ) ),
Col("/gesmes:Envelope/Cube/Cube/Cube/@rate",
Column Name( "rate" ), Fill( "Use Once" ),
Type( "Numeric" ), Format( {"Best"} ), Modeling Type( "Continuous" ) )
),
XML Wizard( 0 )
);