Bonjour à tous. Bienvenue à cette présentation sur l'importation de données complexes à l'aide d'interfaces pointer-cliquer et de techniques de base de décryptage de code. Je suis accompagnée aujourd'hui de ma collègue Wendy Tseng. Nous sommes toutes deux ingénieures système chez JMP. Je m'appelle Monique Roerdink Lander.
Nous allons aborder l'importation de données complexes, un sujet né de mon expérience personnelle en recherche et développement. Nous examinerons aujourd'hui trois exemples, tous liés à l'importation de plusieurs éléments : plusieurs images, plusieurs tableaux de données provenant de sites web ou plusieurs pages PDF.
Ce sont toutes des sources de données complexes, destinées à compléter d'autres types de données, comme des données expérimentales. Lorsque j'ai rencontré ces difficultés, je ne maîtrisais pas encore la programmation. J'ai appris à les résoudre par la suite, mais tout le monde n'a pas le temps ou l'envie d'apprendre le JSL.
Cela signifie qu'importer efficacement ce type de données peut s'avérer complexe, et vous pourriez même renoncer à l'opération faute de temps. Pourtant, ce n'est pas forcément le cas, notamment grâce à l'outil Workflow Builder de JMP, introduit dans la version 17 et enrichi de fonctionnalités importantes dans la version 18.
Aujourd'hui, nous allons vous montrer comment automatiser l'importation de ce type de données. Nous utiliserons Workflow Builder et nous n'utiliserons pas de code, mais directement du JSL. Nous allons décrypter du JSL, ou « décrypter du code », comme on dit. Nous partons du principe que vous avez une connaissance de base de Workflow Builder ; si ce n'est pas le cas, nous plongerons directement dans le vif du sujet. Nous avons trois exemples aujourd'hui. Dans le premier, ma collègue Wendy expliquera comment automatiser l'importation d'images dans un tableau de données.
C'est quelque chose que je dois faire. Il y a beaucoup de travail. Je travaillais dans la formulation de détergents et je réalisais des tests de résistance au lavage sur des lunettes, ce qui me permettait de prendre des centaines de photos. Je voulais intégrer ces photos à ma base de données afin de les relier aux données issues de l'analyse d'images.
À l'époque, c'était assez compliqué pour moi. Wendy va nous montrer comment procéder efficacement. Ensuite, dans un second exemple, je vous expliquerai comment importer et nettoyer plus efficacement les fichiers PDF. Enfin, Wendy nous montrera comment importer des données depuis un site web. Je laisse donc la parole à Wendy.
Merci, Monique. Dans ce premier exemple, je vais vous montrer comment utiliser des images pour améliorer la compréhension et la communication de vos données. Prenons un exemple concret : au lieu de lunettes, nous allons regarder des photos de chiens.
Ce jeu de données que vous avez sous les yeux contient des photos de chiens dans cette colonne. Il y a 28 lignes, soit 28 photos de chiens. Ces photos proviennent d'un jeu de données public de l'American Kennel Club, qui contient diverses informations sur les chiens, notamment la fréquence de leur toilettage et la mue.
Ensuite, nous allons nous intéresser à leur comportement. Voici un graphique illustrant la popularité du chien en fonction de son comportement. Si je survole un point, vous verrez la photo du chien. Voici un affenpinscher. C'est un exemple amusant qui illustre bien ce que nous observons dans les données. Comment ai-je rassemblé ces données ? Eh bien, comme je l'ai mentionné, il existe un ensemble de données publiques, celui de l'American Kennel Club. J'ai récupéré ces photos dans un dossier et je les ai assemblées.
Nous allons examiner cela de plus près. Permettez-moi d'abord de dézoomer pour vous donner un aperçu de ce que vous verrez dans ce premier exemple. Je vais commencer par vous présenter l'importation de plusieurs fichiers, une méthode simple pour importer des images depuis un dossier. Vous verrez ensuite Workflow Builder en action : il utilise ces images, les associe à un ensemble de données AKC et crée une image. Nous verrons comment cet exemple évolue, du plus simple au plus complexe.
Dans cette dernière étape, vous verrez comment utiliser du JSL personnalisé pour créer une invite utilisateur dans Workflow Builder. Commençons par importer plusieurs fichiers pour ajouter des images. J'ai ici un dossier nommé AKC contenant des photos de chiens. Il contient également d'autres fichiers, mais principalement des photos de chiens, nommées selon leur race. C'est important, car nous allons utiliser ces photos pour les associer à l'ensemble de données AKC, qui contient également les noms de races. Avant de commencer, je vais créer un nouveau flux de travail et cliquer sur « Enregistrer ».
Importons maintenant plusieurs fichiers et accédons au dossier qui les contient. Ici, il s'agit du dossier AKC. Nous allons sélectionner uniquement les fichiers image. Ajoutons ensuite une colonne « Nom du fichier » pour inclure le nom de la race dans le tableau de données. Vous pouvez constater que 28 images ont été importées en une seule étape. Je dispose maintenant de la colonne « Nom du fichier » que je peux modifier. Je dois supprimer l'extension .JPG afin de pouvoir associer le nom de la race au dossier AKC.
Je vais interrompre le flux de travail. Je voulais simplement vous montrer que JMP enregistre ces étapes sous forme de JSL. Ouvrons maintenant le flux de travail terminé. Vous pouvez le voir ici, et je vais vous le montrer. C'est un enregistrement que j'ai fait précédemment : j'y ai importé les données et créé ces étapes. Un point important à noter : lors de l'importation de plusieurs fichiers, JMP nomme la table de données avec le nom du premier fichier et souligne le nom du dernier.
Dans mon dossier AKC, mon premier chien était un Affenpinscher et le dernier un Otterhound. Je vais tester cette méthode, et voici le résultat. C'est le même graphique que précédemment, à ceci près que j'ai remplacé les points par des photos des chiens.
Examinons maintenant ces catégories de comportement. J'en ai identifié quatre : alerte, réactif et extraverti. Dans l'ensemble de données complet de l'AKC, qui compte 277 lignes, il y a davantage de catégories que celles affichées sur le graphique, car je ne disposais que de 28 photos. J'ai volontairement omis les chiens distants et méfiants afin de vous montrer la réutilisabilité de cette méthode.
Nous allons ajouter quatre chiens distants à notre dossier AKC, puis relancer ce processus pour vous montrer sa flexibilité. Ce processus a été conçu pour 28 chiens. Ouvrez le dossier. Le dernier chien ajouté était un Otterhound. Nous allons importer ces quatre chiens distants (à droite) et les déposer dans le dossier AKC, et non dans le dossier AKC2.
Voici notre dossier AKC. Je vais y coller les nouveaux chiens. Nous avons maintenant ajouté les chiens distants au dossier AKC et nous allons relancer le processus. Vous pouvez constater que les chiens distants ont bien été ajoutés au graphique. C'est dire la flexibilité de Workflow Builder ! Nous avons enregistré un processus qui importe des images, les associe à l'ensemble de données AKC, effectue un nettoyage des données et crée un graphique. Ensuite, lorsque nous ajouterons d'autres fichiers à ce dossier, il nous suffira de cliquer sur « Exécuter » pour que tout se mette à jour.
Examinons l'une de ces étapes du flux de travail. Prochaine étape : l'importation de plusieurs fichiers. Un peu de décryptage de code, rien de bien compliqué. Observons le JSL généré. JMP accède à un dossier spécifique contenant les photos de mon chien.
Si je souhaite référencer un autre dossier, il me suffit de modifier ce chemin d'accès. J'ai justement un autre dossier nommé AKC2 qui contient encore plus de photos de chiens. Je fais simplement cette petite modification, puis on peut relancer le processus : vous verrez alors 53 chiens au lieu de 32, et le graphique obtenu sera beaucoup plus complet.
Une méthode assez simple pour le suivi du code consiste à examiner les paramètres de chaque étape et à apporter quelques petites modifications au code JSL. Dans cette dernière itération, nous allons effectuer une dernière modification. Si je souhaite partager ce flux de travail avec d'autres personnes, il serait judicieux de modifier cette première étape afin que l'utilisateur soit invité à sélectionner son propre dossier de fichiers dans son répertoire personnel.
Nous reviendrons à cette étape et ferons défiler vers le bas. Au lieu de l'étape « Importer des données », nous pouvons la remplacer par « Créer une fenêtre ». Je recommande également de remplacer ce chemin d'accès par un chemin générique comme « Bureau » ou, par exemple, « Documents ». Commençons par exécuter cette première étape.
Vous pouvez maintenant constater que le dossier par défaut est « Documents ». Toutes mes sélections ont été conservées, comme la colonne « Nom du fichier », et l'utilisateur est invité à sélectionner l'emplacement de ses images. Pour conclure cet exemple, nous avons vu comment importer plusieurs fichiers pour intégrer des images dans un seul tableau, puis comment utiliser le Générateur de flux de travail pour créer un flux de travail adaptable. Je laisse maintenant la parole à Monique pour le deuxième exemple.
Bien sûr. Merci, Wendy. Je vais partager mon écran. Voilà. Je vais masquer les commandes de la réunion. Voilà. Parfait. On est tous d'accord pour dire qu'elles étaient bien plus mignonnes que des photos de lunettes. C'était un très bel exemple. Pour le deuxième exemple, nous allons analyser des données issues d'un PDF.
Pourquoi ? Lorsque je faisais de la recherche, il m'arrivait de me plonger dans un sujet et de découvrir des informations précieuses dans des fichiers PDF. Il pouvait s'agir de tables de référence chimiques, de données de composition, d'informations sur les tensioactifs fournies par nos fournisseurs ou nos matières premières, ou encore de rapports d'analyse.
Il y avait souvent une grande quantité de données, et je ne voulais pas les importer manuellement en les copiant dans un tableau. Comment importer ces données dans JMP ? Aujourd’hui, je vais vous montrer comment utiliser l’assistant d’importation PDF, très similaire à l’assistant d’importation Excel et aux autres assistants d’importation.
Un excellent point de départ. Nous l'utiliserons conjointement avec Workflow Builder, puis nous procéderons comme Wendy, en modifiant légèrement le code source pour automatiser l'importation et simplifier certaines étapes du processus.
Dans JMP 18, une fonctionnalité très pratique a été introduite dans Workflow Builder, qui simplifie grandement le nettoyage des fichiers. Après l'importation de nombreuses pages PDF, il est nécessaire de les nettoyer, notamment les nombreux tableaux. Workflow Builder nous permet désormais de les examiner. Je vais vous le montrer. Pour conclure, je vais commencer par vous présenter le PDF sur lequel nous allons travailler. Je l'ouvre. Le voici.
Nous allons examiner cet exemple, un fichier PDF de deux pages, qui répertorie la composition en acides gras des graisses courantes. La première page présente la composition des graisses d'origine animale, et la seconde, celle des graisses et huiles d'origine végétale.
Cela ressemble à un tableau bien formaté, mais en examinant la première page de plus près, on constate que, malgré une présentation correcte pour un PDF, il présente des problèmes pour un tableau de données JMP. Cela indique simplement qu'il reste de nombreuses étapes à effectuer après l'importation de ces données afin de les rendre exploitables.
Par exemple, nous n'avons pas vraiment d'en-têtes de colonnes. La première colonne correspond à la catégorie. Ensuite, nous avons une colonne avec des pourcentages. Une autre colonne avec des pourcentages ici. Nous avons deux colonnes qui listent les acides gras : l'une indique les acides gras saturés et l'autre les acides gras insaturés.
Nous avons également cette autre colonne. Autre point à noter : la présence de sous-titres. Par exemple, « graisse de bœuf » est un sous-titre. Il comporte des sous-totaux. Il serait judicieux de supprimer ces sous-totaux, mais il faut également les remplacer par un espace vide.
Voici un autre problème. Comme je l'ai dit, certains de ces sous-titres sont répartis sur deux lignes, ce qui posera évidemment aussi des problèmes dans JMP, car JMP ne reconnaîtra pas qu'ils sont liés.
Nous avons également des données réparties sur plusieurs colonnes. De nombreux problèmes devront être résolus après l'importation de ces données. Revenons à notre journal et examinons d'abord le résultat final. L'objectif est d'utiliser JMP pour importer les deux pages, idéalement en travaillant sur une seule, puis en effectuant les étapes de nettoyage.
Encore une fois, privilégions une seule page, puis appliquons JMP aux deux pages et enfin fusionnons les données pour pouvoir les utiliser. J'ai enregistré cette procédure dans un workflow. Voici le résultat final ; nous allons le reproduire ensuite. Je vais d'abord vous montrer ce workflow.
Deux pages s'ouvrent et le générateur de flux de travail effectue toutes les étapes de nettoyage. Il y en a beaucoup. Il les applique d'abord à la première table de données, puis il réinitialise et répète l'opération sur la seconde. Une fois terminé, il fusionnera les deux tables et affichera un résultat à partir des données combinées.
Voilà. Ici, nous comparons les graisses saturées et les graisses saturées seules. Bien, je vais fermer ces fenêtres en revenant en arrière ou en réinitialisant mon flux de travail. En fait, je vais fermer complètement ce flux de travail et en ouvrir un nouveau, vide. Je vais l'ancrer ici, à droite, dans le projet sur lequel je travaille aujourd'hui.
Bon, alors commençons par le début et ouvrons le PDF. Je dois dire que j'étais tenté de vous montrer un exemple où l'importation du PDF fonctionne parfaitement, mais je pense que ce n'est pas nécessaire. Croyez-moi, il arrive parfois qu'on ouvre un PDF avec JMP, et que ce dernier reconnaisse instantanément le tableau de données souhaité. En deux clics, le tour est joué : le tableau est intégré. Voilà un exemple parfait.
Je vais prendre un exemple imparfait. Ouvrons ce PDF. Je peux double-cliquer sur le lien, ce qui ouvre l'assistant d'importation PDF. Vous pouvez constater immédiatement dans l'aperçu à gauche que JMP ne reconnaît pas ce tableau comme il le devrait. Nous en reconnaissons une partie, mais elle est inutilisable.
La première chose à faire est de sélectionner « Ignorer toutes les tables », ce qui réinitialisera tout. Une fois la réinitialisation terminée, je peux simplement sélectionner cette table avec ma souris.
Lorsque je fais cela, JMP tente de deviner l'emplacement de mes colonnes. Je vais zoomer un peu. Cela vous permet de constater qu'il n'a pas détecté toutes les colonnes. Cela est dû à certains problèmes liés à des en-têtes qui s'étendent sur plusieurs colonnes.
Ce n'est pas un problème, car je peux les ajouter manuellement en faisant un clic droit. Par exemple, je peux me placer à droite de mon pourcentage de poids, faire un clic droit et ajouter un séparateur de colonnes. Ensuite, je dois faire la même chose ici, là où se trouvait la deuxième colonne de pourcentage de poids, et ajouter un séparateur de colonnes ici et un autre là.
Dans ce cas précis, c'est le mieux que l'on puisse faire pour ce tableau. À noter : sous le triangle rouge, vous trouverez des options. Par exemple, vous pouvez définir le nombre de lignes à utiliser comme en-tête, ce qui est également très pratique.
Dans ce cas précis, je vais simplement importer ce premier tableau. Je pourrais évidemment faire la même sélection ici, à la page 2, et ce ne serait pas trop compliqué puisqu'il s'agit d'un fichier PDF de deux pages. Mais que se passerait-il si j'avais un tableau de 10 ou 20 pages ? Il faudrait alors cliquer et ajouter de nombreux séparateurs de colonnes, ce qui serait fastidieux.
Je vais simplement importer la première page et nous verrons ce que nous pouvons faire à partir de là. Je clique sur OK. J'avais oublié de démarrer l'enregistreur de flux de travail, alors John me le rappelle. Je réponds : « Oui, veuillez enregistrer. » Nous avons ici le tableau importé et cette étape est également enregistrée. Je vais arrêter l'enregistrement. Je double-clique sur l'étape enregistrée et la décaler légèrement afin de pouvoir consulter le JSL.
Voici le code de la première étape d'importation. On peut voir ce qui se passe. Voici l'emplacement du fichier. Ensuite, il y a une fonction de tableau PDF, une autre fonction de tableau, puis un élément appelé « nom du tableau ». En effet, il s'agit du nom de mon tableau de données. Je vois des informations sur les lignes, les hétéros, puis la page 1. Ensuite, je vois un rectangle. Il doit s'agir du rectangle que je dessinais, et je vois une bordure de colonne. Ce doivent être les coordonnées des séparateurs que je souhaitais placer.
Quand je vois ça, je suis vraiment tenté, surtout avec une deuxième page, de m'amuser un peu. Faisons-le. On voulait ajouter cette deuxième page. Prenons celle-ci et remplaçons-la par un « 2 ». Faisons la même chose ici, dans le nom du tableau. On va remplacer « 1 » par « 2 ».
Maintenant, je veux exécuter ce code, et je peux le faire directement d'ici en faisant un clic droit et en choisissant « Exécuter le script ». Faisons-le. Un deuxième tableau s'ouvre. Je vais le réduire un peu. Je vais le reprendre et regarder à nouveau ce deuxième tableau.
Je vois immédiatement que l'opération a réussi, car ce tableau de données contient les huiles et graisses d'origine végétale. Voici le tableau de ma première page, avec les graisses animales. Il m'a suffi de modifier très simplement le script généré par le générateur de flux de travail pour importer une deuxième page. Je le répète, copier-coller ou modifier ce code serait sans doute plus rapide que d'ajouter manuellement tous ces séparateurs de colonnes. Cela pourrait me faire gagner du temps.
Ce que je souhaite faire ensuite, c'est anticiper la deuxième étape : le nettoyage. Je vais d'abord le réaliser, puis vous expliquer pourquoi. Je veux créer une étape unique permettant d'ouvrir ces deux tables de données. J'ai besoin de savoir comment JMP enregistre l'importation de deux tables via l'Assistant d'importation PDF. Si je ne le sais pas, le plus simple est de relancer l'enregistrement. Je vais donc commencer par réinitialiser mes sorties et fermer celle-ci, afin de la conserver.
Je vais relancer l'enregistrement et cliquer sur un PDF. Je vais ignorer tous les tableaux. Leur apparence exacte m'importe peu. Je veux simplement observer ce qui se passe avec deux tableaux par page. Je clique sur OK. Je vais examiner le code correspondant.
Voici le code correspondant à cette étape. Pour la première fois, je pense que l'étape a été insérée ici. Lors de l'importation des deux tables, il semble que JMP répète la fonction de table. J'ai une table, puis une virgule, puis une autre table. Cela semble être la structure pour importer deux tables.
Maintenant que je le sais, je peux supprimer cette étape. Elle est inutile. Je peux y revenir. Je vais maintenant agrandir un peu le texte et placer mon curseur à gauche de la parenthèse fermante de mon premier tableau pour la sélectionner. Voilà. Je sais maintenant que je dois tout copier ; je vais donc faire Ctrl+C. Ensuite, avant ceci, je fais glisser ce texte vers le bas avec Ctrl+C, puis j'ajoute la virgule, comme nous l'avons vu.
Je vais commencer par remettre la première valeur à 1. Je vais ensuite remettre le titre et la page à 1, puis la deuxième valeur affichera « Page 2 ». Bien, fermons tout cela et voyons si ça fonctionne.
Lorsque j'exécute cette étape, j'obtiens bien ces deux tableaux de données. Voilà comment je les ai maintenant en une seule étape. Pourquoi ai-je fait tout cela ? Je vais vous le montrer. Je vais fermer mes sorties. Je vais fermer ce flux de travail et en ouvrir un autre. Je vais également l'ancrer à nouveau à droite.
Ce flux de travail comporte cette étape. Je double-clique dessus, là où j'importe deux tableaux. Voici mon tableau 1, et voici mon tableau 2 pour la page 2. Ensuite, j'ai enregistré les étapes de nettoyage, toutes effectuées sur le tableau 1. Lorsque je sélectionne la première étape, vous pouvez voir qu'elle se trouve sur la page 1. J'ai regroupé toutes mes étapes de nettoyage, et vous pouvez constater qu'il y en a beaucoup. Nous n'entrerons pas dans les détails dans cette présentation, mais nous aurons une ressource à ce sujet ultérieurement.
L'important, maintenant que nous avons effectué toutes ces étapes de nettoyage sur l'une des tables de données, c'est de savoir comment procéder sur la seconde. Dans JMP 18, c'est devenu très simple. Il suffit de faire un clic droit et de sélectionner « Largeur de groupe » pour chaque élément. Je reprends. J'ai sélectionné toutes les étapes de nettoyage que je souhaite répéter ; il ne me reste plus qu'à faire un clic droit et à sélectionner « Largeur de groupe » pour chacune d'elles.
JMP a maintenant regroupé ces étapes pour chaque élément. Cependant, il indique qu'aucune source n'a été sélectionnée. Je dois y remédier. Je dois indiquer à JMP sur quelle source exécuter ces étapes. Pour cela, dans les paramètres des étapes, je vais examiner la source. C'est très simple. Il me suffit de préciser à JMP l'étape du workflow qui génère mes multiples sorties.
Dans ce cas, je vais sélectionner l'étape « Importer dans les pages PDF ». C'est à cette étape que j'ai créé deux tableaux. JMP saura alors qu'il doit effectuer toutes ces étapes sur les deux fichiers de sortie générés. Voyons si cela fonctionne.
Je vais lancer le programme. Deux sorties sont ouvertes. Il est en cours d'exécution. Non, il ne l'est pas. Il parcourt les étapes de la première table. Une fois terminé, il devrait passer à la seconde. Voilà, il passe à la seconde table. Je trouve cette fonctionnalité très pratique, surtout avec plus de deux tables.
J'ai importé récemment un PDF de 13 pages. Après l'importation, j'ai nettoyé un des tableaux, puis j'ai vérifié toutes les étapes pour l'ensemble du document. C'était très bien. Voilà ce que je voulais montrer.
Nous allons passer au dernier exemple : l’importation de données depuis un site web. C’est exactement ce que j’ai fait lorsque j’étais en R&D. J’avais besoin de données sur la dureté de l’eau, un facteur important à prendre en compte lors de la formulation. J’ai trouvé d’excellentes informations sur un site web et j’ai ensuite réalisé la formulation avec beaucoup de soin. Wendy va nous montrer comment procéder de manière beaucoup plus élégante. Je vous laisse la parole, Wendy.
Très bien, ça me va. Prenons l'exemple 3 et examinons de plus près la boucle « Pour chaque », ou boucle. Allons voir le site web où Monique a trouvé ces données sur la dureté de l'eau. Je suis sur HydroFlow USA, et dans la section des cartes interactives, je peux accéder à une carte des États-Unis.
HydroFlow USA fournit des données sur la dureté de l'eau au niveau municipal. Je vais me rendre sur la page de l'un des États, le Minnesota, où nous habitons tous les deux, et cliquer sur ce lien pour vous montrer les informations concernant cet État. Vous y trouverez un tableau répertoriant les villes, leurs codes postaux respectifs et la dureté de l'eau exprimée dans deux unités différentes.
En consultant cette URL, on constate que les autres URL des autres États suivent la même structure : le nom de l’État suivi de la dureté de l’eau. Le problème de Monique était de pouvoir accéder à ces données sur Internet afin de compléter notre analyse.
Grâce à JMP, j'ai pu importer toutes les données de dureté de l'eau de tous les États dans un tableau comme celui-ci. On y voit 855 lignes, car chaque État est représenté par plusieurs lignes correspondant aux villes. Ces données ont permis à Monique d'affiner son analyse. En cliquant sur « Lecture », vous verrez qu'il est très facile de reconstituer la dureté de l'eau à l'échelle de chaque État.
Dans ce troisième exemple, je vais vous présenter quelques outils. L'un d'eux consiste à utiliser JMPs Internet Open pour accéder aux données d'une page web. Ensuite, nous allons parcourir ces données Internet Open. Nous allons les intégrer dans une boucle afin de rassembler les données de tous les états dans un tableau.
Commençons par examiner Internet Open. Je vais commencer par copier l'URL de ce site web. Je fais un Ctrl+C sur la page web contenant les informations sur la dureté de l'eau au Minnesota, puis je lance un flux de travail. J'appuie sur enregistrer, puis je vais dans Fichier > Ouvrir une page web. Je colle l'URL et je clique sur OK.
JMP détecte un tableau sur cette page. Je vais cliquer sur OK. Cela vous donnera un aperçu des possibilités offertes par l'importation de données contenues sur une seule page.
Je vais accéder au flux de travail et arrêter l'enregistrement. En consultant l'enregistrement, je constate que JMP exécute ce JSL, ou plutôt qu'il l'a enregistré. Il s'agit simplement d'une instruction ouvrante avec le nom de l'URL et quelques précisions indiquant qu'il s'agit d'un tableau HTML. À l'avenir, nous ne voudrons pas avoir à accéder à chacune des 51 pages individuellement.
Idéalement, nous aurions une seule étape d'importation que nous répéterions pour tous les états. Nous allons maintenant aborder la dureté de l'eau, mais commençons par examiner un exemple tiré de la documentation JMP qui décrit le fonctionnement pour chaque état.
Si vous suivez ce lien dans les documents, vous accéderez directement à l'exemple. Je vais le commenter dans les diapositives, puis nous le construirons ensemble. Oh là là ! Voyons voir. Je vais afficher mes diapositives.
Je veillerai à ce que ce problème soit corrigé dans la version mise en ligne. Dans l'exemple de la documentation JMP, l'objectif est de créer un ensemble de graphiques, et il s'agissait simplement de trois graphiques de distribution, un pour chaque sexe. L'ensemble de données utilisé dans l'exemple concerne le diabète, qui comprend deux sexes. La méthode employée consistait à créer un sous-ensemble de données sur le diabète, avec les sexes 1 et 2, à créer les graphiques de distribution uniquement pour le sexe 1, puis à intégrer cette étape 2 dans une boucle « pour chaque » afin que le flux de travail fonctionne pour les deux sexes sans avoir à enregistrer les étapes pour le sexe 2.
Voyons comment créer cela de A à Z. Je vais créer un nouveau flux de travail et cliquer sur Enregistrer. Trouvons le jeu de données sur le diabète. Le voici ; vous pouvez voir ici le sexe 1 et le sexe 2. Nous allons d'abord filtrer par sexe. Faisons-le à nouveau, car nous voulons désélectionner les lignes. Filtre par sexe. Dans l'aperçu, vous pouvez voir le sexe 1 et le sexe 2. Je devrais obtenir deux tableaux, et c'est le cas. Voici le sexe 1 et le sexe 2.
Je vais commencer par le genre 1 et créer mes visualisations. On va faire simple : je vais créer une distribution avec trois variables. Maintenant, je vais accéder à mon flux de travail. Voyons voir le flux de travail approprié. Vous pouvez constater que j'ai enregistré plusieurs étapes, car j'ai dû recommencer plusieurs fois.
Vous allez voir comment ça se passe. On va supprimer les étapes inutiles, car j'ai déjà soumis le fichier. Vérifions d'abord que nous avons bien toutes les informations nécessaires. Ouvrons le tableau de données, puis filtrons-le en fonction du genre 1 et du genre 2. On devrait ensuite obtenir la distribution pour le genre 1. Voilà. Genre 1, genre 2, et voici les données pour le genre 1.
Maintenant, dans la boucle « Pour chaque », je vais sélectionner l'étape de rapport, faire un clic droit et choisir « Grouper avec Pour chaque ». C'est cet élément que je souhaite boucler. Si j'arrive à cette boucle « Pour chaque », l'étape du flux de travail déjà sélectionnée est l'étape précédente où j'ai effectué le sous-ensemble ; aucune modification n'est donc nécessaire. Lorsque je relance le flux de travail, vous verrez deux distributions s'exécuter, une pour chaque genre. Voilà. Voici le genre 1 et voici le genre 2.
Comment utiliser ce type de cadre pour obtenir les données de dureté de l'eau souhaitées à partir d'HydroFlow ? Il faut d'abord nettoyer le code. Revenons aux diapositives et adaptons-le à la dureté de l'eau. Sachant que je voulais parcourir les différents États, j'ai pensé créer un tableau similaire à celui de l'exemple du diabète, puis le subdiviser en tableaux individuels, un pour chaque État contenant l'URL. J'enregistrerai l'accès à Internet pour l'un des États, puis j'utiliserai une boucle « pour chaque » pour obtenir la même information pour tous les États.
Voyons maintenant le workflow que j'ai finalisé. Vous remarquerez qu'il ne comporte que quelques étapes, car l'exécution serait trop longue si je les incluais toutes. Je vais donc lancer le workflow juste avant le nettoyage des données, afin que nous puissions en discuter, puis nous exécuterons la suite.
La table « États » est ouverte, puis elle est divisée en sous-ensembles des États contenant l'URL. Vous voyez alors l'ouverture de la connexion Internet pour chacun de ces États. Si vous regardez l'espace de travail, j'ai effectué l'ouverture de la connexion Internet pour ces cinq États.
Si je reviens au flux de travail et que j'active le reste des étapes, vous verrez toutes ces données combinées dans un seul tableau d'états, encore une fois, dans ce cas avec seulement cinq états, puis un graphique montrant la dureté de l'eau.
En examinant le flux de travail, voici le détail de chaque étape. C'est ici que je commence à décrire une complexité supplémentaire présente dans cet exemple. Pour l'importation HTML, afin d'ouvrir Internet, il a fallu ajouter du JSL personnalisé. Si je développe, j'ai modifié cette étape d'importation enregistrée par le générateur de flux de travail. Je vais maintenant revenir à la diapositive pour que nous puissions aborder ces modifications.
Voici ce qu'enregistre Workflow Builder lorsque j'ouvre la page web de l'Alabama. Comme je souhaite référencer tous les États, je vais remplacer cette valeur par une variable générique, appelée simplement « adresse web ». Ensuite, pour la table de l'Alabama, je dois pouvoir faire référence à une cellule spécifique de cette table de données, et cette cellule contient l'URL.
En parcourant le langage de script JMP, on peut interagir avec une table de données : il suffit de dire « table de données » pour obtenir le nom de la table de données.
Lorsqu'on fait référence à une colonne de ce tableau de données, on nomme le tableau, on ajoute deux points, puis le nom de la colonne. Ici, on obtient : `data table state = Alabama, URL`. Enfin, pour cibler la cellule contenant l'URL, on ajoute des crochets. Pour tous les États, il s'agit simplement du chiffre 1, car chaque tableau ne contient qu'une seule ligne ; cette ligne correspond à la cellule contenant l'URL.
Pour conclure cet exemple, vous avez vu comment utiliser Internet pour récupérer des données depuis une page web. Nous avons ensuite approfondi la boucle « for each » à l'aide de l'exemple de la documentation JMP. Vous avez ensuite pu observer comment j'ai adapté cette boucle pour accéder aux données d'Internet grâce à un peu de JSL personnalisé. Je laisse maintenant la parole à Monique pour la conclusion.
Oui, merci Wendy. Nous vous avons montré aujourd'hui comment importer toutes sortes de données (images, données de PDF, données de pages web) et comment automatiser ce processus sans écrire de script. Workflow Builder est un outil formidable. Vous pouvez aller encore plus loin en examinant le code JSL généré et en y apportant quelques modifications. N'hésitez pas à explorer ce code JSL. Merci de nous avoir suivis aujourd'hui et nous espérons que cette présentation vous a été utile.