| Conférencier |
Transcription |
| Pierre Hersh |
Très bien, merci de nous rejoindre aujourd'hui. Hadley et moi allons parler de l'accès aux données et d'une façon de le simplifier grâce au générateur d'applications JMP. |
| |
Voici donc un aperçu du flux de travail analytique au sein de JMP, et la première étape de tout parcours analytique consiste à accéder à vos données. |
| |
Et souvent, cela peut être un processus long et fastidieux et il est souvent négligé car |
| |
Il s'agit d'un processus crucial à réaliser avant de pouvoir tirer des enseignements de vos données. Il est essentiel d'y accéder. Hadley et moi allons donc vous montrer quelques astuces pour accéder aux données de différentes sources et, espérons-le, faciliter ce processus. |
| |
Donc, ce que nous allons montrer aujourd'hui, c'est la création d'un bouton facile, qui est |
| |
en utilisant essentiellement le générateur d'applications à l'intérieur de JMP pour accéder aux données en externe, soit via une connexion OBDC, soit via une API Web. |
| |
Vous pouvez également appliquer cette méthode à des fichiers locaux ou à toute source de données accessible par JMP. Nous vous montrerons ensuite comment combiner des sources. |
| |
et appliquer des filtres à plusieurs sources différentes lors de l'extraction des données. Enfin, nous terminerons par une interface expliquant la saisie manuelle des données. |
| |
Mais il faut simplifier un peu le processus. Et enfin, comment pouvons-nous distribuer tout ce que nous créons au sein de l'organisation et en faire un |
| |
Un module complémentaire distribuable et partageable. Hadley va commencer par nous montrer comment se connecter via le pilote ODBC. |
| Hadley Myers |
Ouais. |
| |
Merci beaucoup, Pete. |
| |
Bonjour à tous ceux qui nous regardent, où que vous soyez. Je vais commencer par vous présenter cette application créée avec le générateur d'applications. Son rôle est de se connecter à une base de données. |
| |
Vous disposez peut-être, dans votre système, de différents emplacements ou serveurs où vos données sont stockées ; vous pouvez donc sélectionner celui qui vous convient. Cela vous permet de rechercher et de filtrer les tags. Voici un exemple. |
| |
Requête SQL. Nous avons accédé à la base de données et extrait quelques balises. Je peux sélectionner celles qui conviennent. |
| |
Je peux choisir la période qui m'intéresse. Dans ce cas, la base de données remonte assez loin. Exécutez ces données et sélectionnez… |
| |
Vous savez, je récupère immédiatement les données dont j'ai besoin. On a vu des gens travailler avec ça : ils prennent ces éléments et les mettent dans un coin. |
| |
de leur bureau, comme ça, et à chaque fois qu'ils ont besoin de données, ils disent : « Oh, j'aurais dû prendre les 102 aussi. Pas de problème. Je peux juste les récupérer comme ça. » |
| |
C'est donc le type de chose que nous allons vous montrer comment construire aujourd'hui, et l'exemple que nous allons utiliser est un peu plus simple que celui-ci. |
| |
Vous pouvez le voir ici. Sélectionnez simplement la période, puis choisissez ce que vous voulez. |
| |
L'une des balises que vous souhaitez rechercher ; dans ce cas, il s'agit d'une méthode d'analyse. Il s'agit d'un filtre appliqué à l'une des colonnes catégorielles, puis d'une extraction des données. La méthode la plus complexe que vous avez vue n'est qu'une extension de l'ajout de fonctionnalités. |
| |
Nous allons donc commencer par utiliser le générateur de requêtes dans JMP. |
| |
Une fois connecté à notre base de données, comme je l'ai déjà fait ici, je vais sélectionner la table par laquelle je souhaite commencer. Dans ce cas, il s'agit de mes données de production. Je vais joindre mes résultats. |
| |
Voici mes exemples de données. Commençons donc par créer cette requête. Je vais commencer par récupérer mon lot. Je vais récupérer toutes mes données de production. |
| |
Je vais mettre la date de création de l'échantillon et l'analyse, et peut-être que je les prendrai et les mettrai près du haut, afin que vous puissiez les voir un peu |
| |
Un peu mieux. Ce seront donc les premières colonnes, |
| |
ainsi que mon résultat. Si je devais configurer cette requête à l'aide des filtres, nous pourrions, par exemple, filtrer notre analyse en y ajoutant ces informations. |
| |
Et filtrez sur notre date d'échantillon ici, et peut-être que nous changerons cela en une plage, donc nous disons prédire... récupérer des données entre une date et |
| |
un autre rendez-vous. Normalement, ce que vous feriez dans ce cas-là, c'est |
| |
invite tout à l'exécution, de sorte que lorsque vous exécutez la requête, |
| |
vous pourriez demander à votre utilisateur de sélectionner |
| |
Les dates appropriées, et je pense que cette base de données remonte assez loin, donc nous allons choisir une plage très large. Cliquez sur OK. J'ai maintenant mes données pour cette analyse et… |
| |
ces dates, mais ce que je vais faire |
| |
Je vais supprimer ces invites, donc les invites sont claires. Je vais en sélectionner quelques-unes manuellement, juste pour voir comment elles s'intègrent à la requête… |
| |
dans le code. |
| |
Ouais. |
| |
Je peux donc copier ce script d'exécution, qui exécute cette requête, filtres inclus. Je vais maintenant ouvrir le générateur d'applications. |
| |
Je choisirai une application vierge et créerai un bouton. |
| |
Ainsi, lorsque je clique avec le bouton droit sur le bouton, je peux choisir le script à exécuter. Dans ce cas, nous allons simplement exécuter l'intégralité du script d'exécution à partir de notre requête. |
| |
Donc, si je lance cette requête, j'appuie sur le bouton et j'obtiens mes données exactement comme j'ai configuré la requête. Mais ce que j'aimerais faire, et peut-être ce que vous aimeriez faire, c'est permettre à l'utilisateur de choisir le filtre de la requête. |
| |
variables, donc quelle période choisir et quelle analyse, et pour cela c'est |
| |
étonnamment simple. |
| |
Ce que je vais faire, c'est que je vais récupérer deux zones d'édition de nombres pour les heures de début et de fin de ma requête. |
| |
J'aime toujours les placer dans un panneau. Cela permet à l'utilisateur de voir plus facilement ce qu'il veut dire… et d'insérer une instruction. Je peux donc écrire ici, par exemple : « Saisir la date de début ». |
| |
et entrez la date de fin. |
| |
Comme ça. |
| |
Et nous donnerons à ces variables des noms que nous pouvons comprendre. |
| |
Alors nous allons appeler celui-ci... si je clique sur la zone d'édition du numéro, je peux nommer ce type |
| |
commencer |
| |
zone d'édition de numéro. |
| |
Et nous appellerons cela la fin |
| |
zone d'édition de numéro, et nous pouvons également aborder les formats |
| |
afin que nous utilisions notre |
| |
format de calendrier date et heure ici. |
| |
Juste comme ça. |
| |
Et, bien sûr, ce que nous devons faire, c'est obtenir les informations de ces |
| |
saisie de données |
| |
dans notre requête. Ainsi, lorsque le bouton est enfoncé, nous créons une variable appelée « start ». |
| |
et nous rendrons cela égal à la valeur que vous souhaitez |
| |
tapé dans notre boîte d'édition de numéro. |
| |
Obtenez cette valeur. |
| |
Nous obtiendrons la valeur de notre zone d'édition de numéro de fin. |
| |
Et nous les prendrons |
| |
et les insérer dans notre requête ici. |
| |
Donc si je devais exécuter ceci, |
| |
Je peux choisir ma date de début |
| |
et choisir ma date de fin. |
| |
Je peux exécuter cela et obtenir mes données. Je vais maintenant vous montrer rapidement comment filtrer cette analyse. Pour cela, je vais utiliser ceci… |
| |
J'ai différentes options pour les différents boutons. Je pense que je vais inclure cette case à cocher ici, et y saisir les valeurs que je souhaite sélectionner. |
| |
Maintenant, peut-être que nous allons changer cela en analyse. |
| |
Oui, une case à cocher. Je vais donc simplement créer une autre analyse de variables. |
| |
Et si je ne me souviens pas de la commande que je dois utiliser pour obtenir les informations... pour obtenir la sélection, tout ce que j'ai à faire est de cliquer dessus. |
| |
Et si je fais un clic droit, une astuce intéressante est que je peux aller directement au menu d'aide, directement à l'index des scripts, et je peux voir maintenant que ce dont j'ai besoin est la commande obtenir la sélection pour pouvoir les obtenir. |
| |
Je vais taper ici |
| |
Soyez sélectionné. |
| |
Et maintenant nous pouvons prendre cette analyse |
| |
et remplacer notre |
| |
Les paramètres de requête sont là. Donc, si je devais exécuter ceci, |
| |
Encore une fois, |
| |
Je peux sélectionner mon heure de début |
| |
et sélectionner mon heure de fin. |
| |
Et je peux choisir l'un des paramètres à exécuter ou l'autre, ou les deux. |
| |
Alors la prochaine étape... |
| |
et bien sûr, je peux ajouter à cela autant que je veux, mais ce que j'aimerais faire à ce stade, c'est le distribuer au sein de mon organisation, et l'astuce ici est que toute personne ayant accès à cela |
| |
L'emplacement de la base de données pourra accéder à ce module complémentaire et l'utiliser si je le partage avec eux. Je vais donc cliquer ici et enregistrer le script dans un module complémentaire. |
| |
Nous l'appellerons base de données |
| |
accéder |
| |
et |
| |
dbaccess1, |
| |
juste pour lui donner un nom unique. |
| |
Données d'accès. Le script complet nécessaire au fonctionnement du module complémentaire se trouve ici. C'est donc déjà fait. Je vais l'enregistrer dans mon |
| |
bureau. |
| |
Et comme vous pouvez le voir maintenant, il est installé ici. |
| |
Il ne me reste donc plus qu'à prendre ce module complémentaire, qui, je pense, est enregistré sur mon autre écran. |
| |
Voilà, je peux l'envoyer par courriel à n'importe qui au sein de mon organisation. J'ai rédigé ce courriel à l'avance. |
| |
Pour votre commodité, envoyez-leur un e-mail et, s'ils ont accès à cet emplacement, ils pourront installer le module complémentaire et l'utiliser immédiatement. À ce stade, j'aimerais arrêter le partage et envoyer… |
| |
revenons à Pete, qui nous montrera comment accéder aux données à partir du Web. |
| Pierre Hersh |
Très bien, merci Hadley. Et oui, super démonstration. Dans cette partie, nous allons nous appuyer sur ce qu'Hadley a montré. |
| |
Nous allons obtenir un module complémentaire qui ressemble à ceci. Nous suivons donc le même processus qu'Hadley. Je vais ignorer la partie ODBC et vous montrer |
| |
Une partie API, mais l'idée ici est la suivante : j'ai deux sources de données différentes. Je vais extraire des données de ces deux sources, les fusionner, puis créer une table de données finale comme celle-ci. Nous allons donc commencer par ce que Hadley a déjà montré, à savoir : |
| |
une simple extraction ODBC avec encore moins de détails que Hadley, où nous avons juste |
| |
données sur deux types d'actions différents et nous avons un filtre qu'il examine pour sélectionner ce type d'action, et ce que nous allons faire est de créer un |
| |
Connexion API. Je vais donc suivre un processus similaire à celui d'Hadley. Il l'a très bien décrit. Je vais donc y aller un peu vite et ajouter un panneau avec une zone d'édition de texte. Comme Hadley l'a montré, on peut |
| |
utilisez-les et référencez-les |
| |
Des boîtes, car elles ont un nom. Et je pourrais les renommer comme Hadley. |
| |
Dans ce cas, cela s'appelle simplement TextEdit1, et ce que je vais dire aux gens de faire est d'entrer leur entité de clé API ici et cette clé API que nous utiliserons pour |
| |
Permettre à chaque utilisateur d'accéder aux données avec sa propre clé API, évitant ainsi de devoir la distribuer. Ensuite, comme Hadley l'a montré, je vais créer un bouton ici, que nous appellerons « bouton ». |
| |
Extraction de données API. |
| |
Très bien, et encore la même chose : nous allons faire un clic droit ici et ajouter un script à la presse. Nous accédons donc à ces données depuis |
| |
Ce site web, Alpha Vantage, est un excellent moyen de faire une démonstration et d'essayer l'extraction de données API. Sa documentation API est très complète. Si vous deviez le faire en interne, la procédure serait légèrement différente. |
| |
commandes que vous utiliseriez, mais l'idée générale sera la même, c'est que vous devez passer quelques éléments d'un... |
| |
de JMP à cette API pour l'extraire. Et là, j'ai pré-écrit ce script, donc en gros, je dois passer une clé, je dois lui dire l'URL, le type de requête que je vais faire, et ensuite j'ai quelques |
| |
Il y a un autre script ici qui récupère ces données au format approprié pour JMP, et donc analyse le JSON. Je vais donc sélectionner ce script, que j'ai déjà écrit ici. Je vais le copier et, comme nous l'avons vu précédemment, si je le place ici, j'obtiens mon |
| |
Les données sont extraites. Il y a donc deux choses que je dois faire ici : cette clé est… Je veux en fait référencer cette clé API ici. |
| |
Donc ce que je vais faire, c'est dire, ok, cette clé est égale à |
| |
textedit1 et je vais juste dire, tout comme Hadley l'a montré, vous pouviez |
| |
parcourez cet index d'aide et déterminez ce qui est nécessaire pour récupérer ce texte, mais dans ce cas, je vais juste dire que la clé est... vous allez dans ce textedit1 et vous obtenez le |
| |
Texte. Je souhaite également référencer cette zone, appelée Combo1, pour appliquer un filtre. Je vais donc l'ajouter. |
| |
ici aussi, et nous appellerons simplement cela des actions |
| |
est égal à ce nom de variable, Combo1, puis ceci encore, comme vous l'avez montré Hadley, est sélectionné. |
| |
Très bien, je vais maintenant exécuter ma requête pour récupérer cette clé, récupérer ce stock, puis aller sur le site web, le pinger et l'exécuter pour l'afficher. Je vais donc utiliser une clé de démonstration. Nous changerons peut-être le stock. |
| |
Ça va... oh, tu sais quoi ? C'est une bonne |
| |
Le truc ici, c'est que j'ai oublié de changer ça dans le code ici, donc je dis que le stock est combo1, mais ici |
| |
Cela m'indique que mon symbole est Microsoft. Si je n'insère pas cette action, l'extraction ne sera pas effectuée correctement. Montrons cela une fois de plus. Il examine désormais le filtre et n'est pas codé en dur ; les données sont donc extraites correctement. |
| |
Bon, l'étape suivante consiste à récupérer les données de ces deux sources et à les regrouper. JMP 16 propose une fonctionnalité intéressante : |
| |
dont j'espère que vous avez tous entendu parler ici, qui est ce nouveau journal amélioré, et je vais aller de l'avant et le vider. |
| |
Ce journal enregistre toutes les manipulations de données que vous pourriez effectuer. Voici un exemple de jointure. Je vais donc joindre ces deux éléments. |
| |
tables de données et vous pouvez choisir comment vous souhaitez les joindre, peut-être, quel type de |
| |
colonnes que vous souhaitez dans cette jointure, peut-être le nom |
| |
ton |
| |
Je gère les données comme je le souhaite. Une fois satisfait, je clique sur « OK ». Vous remarquerez que ce journal contient tout ce dont j'ai besoin pour cette jointure. Je vais donc cliquer ici, puis « Enregistrer le script dans le presse-papiers », et ensuite… |
| |
revenir en arrière et créer un nouveau bouton dans mon application |
| |
Ici. Je vais utiliser une boîte à boutons, mais vous pouvez choisir le type de votre choix. Donnez-lui un nom ; nous l'appellerons « jointure ». |
| |
Faites un clic droit ici. |
| |
Et faites ce script sur presse. |
| |
Et puis juste un copier-coller. |
| |
Et maintenant, il va procéder à la jonction. On pourrait extraire chaque élément individuellement et le joindre, mais je pense que l'objectif final est de tout faire en une seule étape. |
| |
Tout ce que vous avez à faire est de rassembler tous ces scripts au même endroit, ce que j'ai fait à l'avance, |
| |
Et puis… et créez un nouveau bouton. Je vais vous montrer deux éléments que j'ai ajoutés à ce script une fois installé. Nous l'appellerons donc le bouton facile à utiliser pour rester dans le thème. |
| |
Bouton facile. |
| |
Et je vais juste |
| |
prenez ce script ici, donc je vais sélectionner tout cela, copier cela et ensuite |
| |
faites la même procédure ici. |
| |
Et colle ça. |
| |
Très bien, donc j'ai ajouté quelques éléments à ce script au-delà du simple copier-coller de ce qui était déjà là, il y avait cette commande d'attente et ce que cela fait, c'est me donner un peu de temps pour |
| |
pour permettre l'extraction des données avant la jointure, puis je ferme ces deux tables de données supplémentaires, afin de ne pas… je ne crée pas simplement plusieurs tables. Alors, allons-y |
| |
Regardez ça. Je vais saisir ma clé API, sélectionner mon action, appuyer sur le bouton « facile », extraire les données de deux emplacements, attendre deux secondes, puis les fusionner. |
| |
Voilà donc l'objectif final ici, et maintenant je vais le transmettre à Hadley pour montrer un bon exemple sur la façon de rendre la saisie des données un peu plus fluide. |
| Hadley Myers |
Ouais. |
| |
Merci beaucoup, Pete. Nous vous avons montré comment récupérer des données d'une base de données externe avec SQL. |
| |
Pete vous a montré comment récupérer des données depuis une API web, puis les combiner avec vos données existantes. Vous pourriez vouloir vos données depuis une autre source, ou y accéder via Python ? C'est tout à fait possible. |
| |
Ou bien elles se trouvent dans des fichiers différents, mais il se peut aussi que vous deviez les saisir manuellement. Voici un exemple d'ensemble de données. |
| |
Nous y trouvons les noms et les fabricants des céréales, et toutes ces données ont été saisies manuellement à partir des étiquettes des boîtes, qui, malheureusement, ne sont pas dans un format permettant une extraction automatique aisée. Il faudra donc que quelqu'un s'en charge. |
| |
manuellement. J'ai déjà eu un travail similaire où je le faisais, et je peux donc certainement sympathiser avec la personne qui a besoin de faire ça. |
| |
Maintenant, vous pourriez le saisir sur le... à partir du tableau comme ceci, mais ce que j'ai fait, c'est que je l'ai rendu un peu plus simple en créant cette application ici. |
| |
Vous pouvez donc maintenant le saisir depuis un simple écran, puis l'ajouter au tableau. J'ai volontairement omis les deux derniers. |
| |
colonnes. La méthode serait exactement la même. Voici ce que nous allons faire… vous voyez ici que la première action du bouton |
| |
Il ajoute une ligne au tableau. Il calcule le nombre de lignes du tableau, puis, pour chaque numéro de colonne et de ligne, |
| |
Il récupérera simplement les données de chacune de nos entrées et les enregistrera dans chacune de ces cellules. Continuons donc avec les deux dernières. |
| |
Vous avez peut-être remarqué que c'est assez régulier et bien espacé, grâce à ces séparateurs horizontaux et verticaux. Je vais donc ajouter un séparateur horizontal juste en bas. |
| |
Et à cela, nous ajouterons un boîtier de panneau |
| |
et une zone d'édition de numéro en bas. |
| |
Et j'ajouterai encore un autre panneau de boîte |
| |
et une autre zone d'édition de nombre. Nous l'appellerons donc : |
| |
nos deux dernières colonnes ici, qui sont le poids par portion et notre |
| |
tasses par service de nos étiquettes de céréales. |
| |
Pour l'instant, je peux renommer ces gars, mais je ne le ferai pas pour l'instant. Il ne me reste plus qu'à continuer. |
| |
Et dans notre tableau de données, colonne poids par portion. |
| |
Et notre numéro de rangée. |
| |
Je vais rendre cela égal à notre zone d'édition de numéro que nous venons de créer. |
| |
La même chose ici |
| |
pour notre |
| |
tasses par portion |
| Hadely Myers |
sous edit2. |
| Hadley Myers |
Bon, maintenant, si je devais exécuter ceci, je peux entrer toutes les données et ensuite les récupérer |
| |
dans ces |
| |
cellules ou pour ajouter la ligne en bas, mais je vais vous montrer une dernière chose, qui, si vous créez cela pour quelqu'un, je vous promets qu'il l'appréciera grandement, c'est d'ajouter |
| |
Ajoutez un peu de couleur à l'image juste là, dans l'application. Vous pouvez ajouter un logo d'entreprise ou simplement une photo d'archive, comme je l'ai fait ici. |
| |
Ce n'est donc pas forcément parfait. Si on l'ajoute comme ça, on voit que, une fois exécuté, la journée de quelqu'un s'améliore un peu. Au lieu de l'enregistrer comme un module complémentaire ou de l'enregistrer, |
| |
pour un script, ce que je vais faire est d'aller de l'avant et d'enregistrer cela immédiatement dans la table de données. |
| |
Appelez ça ajouter |
| |
Données ou ajout de ligne, etc., et vous voyez maintenant que notre module complémentaire est là. Je peux donc l'exécuter. |
| |
céréales. Ce qui est bien, c'est que si j'appuie sur Tab, on passe au suivant. |
| |
Je vais juste ajouter quelques données factices |
| |
et ainsi de suite. Bon, ajoutez cette ligne et vous voyez ça. |
| |
J'espère que vous avez trouvé cela intéressant et que certains d'entre vous auront l'occasion de les utiliser ou de les créer. Sur ce, je laisse la parole à Pete. |
| Pierre Hersh |
Super, merci, Hadley. |
| |
Je vais juste conclure ici avec quelques autres |
| |
Diapositives. Pour résumer ce que nous avons vu ici, l'accès aux données est souvent difficile, ce qui peut entraîner des problèmes plus longtemps que nécessaire. Nous espérons donc que vous en avez tiré profit et que vous pourrez simplifier l'accès aux données, voire leur saisie. |
| |
Et |
| |
obtenir... obtenir vos données dans le bon format et |
| |
L'accessibilité représente environ 80 % de votre solution ; c'est donc généralement là que vous passez 80 % de votre temps. Si vous pouvez rationaliser cela, vous gagnerez un temps considérable. |
| |
et demandez à vos analystes, scientifiques et ingénieurs intelligents de travailler sur les problèmes de données, et non sur les problèmes d'accès aux données. |
| |
Et nous avons montré que la création de boutons simples est assez simple dans le générateur d'applications de JMP, où vous pouvez choisir une source, filtrer, combiner plusieurs sources et même ajouter des données manuellement. |
| |
Et puis, comme Hadley l'a montré, nous pouvons distribuer cela dans toute l'organisation avec un module complémentaire ou nous pouvons également le faire avec juste un script ou une application elle-même. |
| |
Merci pour votre temps. J'espère que cela vous a été utile et nous répondrons à toutes vos questions dans le chat ci-dessous. Merci. |