Conférencier
|
Transcription
|
| Jordan Hiller |
Salut tout le monde. Je suis Jordan Hiller et cette conférence est Steal This Code ! Trois mises à niveau pour les scripts obtenus à partir du journal amélioré. |
| |
Et voici l'inspiration pour ce discours. C'est un livre d'Abbie Hoffman, provocatrice et militante. Oui, il a nommé son livre, Steal this Book, qui est un excellent titre. Pas sûr que ce soit un bon plan d'affaires pour nommer votre livre ainsi, mais de toute façon c'est très accrocheur. |
| |
Alors pourquoi voler ce code ? JMP veut que vous voliez du code. L'idée est que vous pointiez et cliquiez et fassiez votre analyse dans JMP, |
| |
et ce code derrière votre pointer-cliquer est enregistré. Il est enregistré dans le journal amélioré et vous pouvez le récupérer et le réutiliser. |
| |
Et c'est environ 90% de votre script de production. Vous allez le récupérer et le réutiliser pour pouvoir |
| |
automatisez les tâches courantes et effectuez-les d'un simple clic, au lieu d'une séquence de points et de clics. C'est donc tout le but ici, tu vas économiser |
| |
script du journal amélioré et c'est les os, le squelette de votre script de production. |
| |
Il vous reste environ 10 % que vous devez écrire vous-même, et c'est notre objectif pour cette conférence. Nous allons parler de certains de ces tissus conjonctifs qui maintiennent les scripts de production ensemble. |
| |
Donc, dans cet exposé, je vais me concentrer avec vous, vous savez, pas tellement sur le détail de la syntaxe, |
| |
beaucoup plus sur la situation dans son ensemble, et cela correspond à ce que je pense être un bon moyen d'apprendre la programmation JSL. C'est bien mieux de prendre du code existant et d'apprendre par l'exemple. Utilisez ce code. |
| |
Trouvez cet extrait qui fait ce que vous voulez faire. Vous le trouverez sur la communauté d'utilisateurs JMP ou peut-être dans le guide de script. |
| |
Et copiez-le et adaptez-le à votre usage. Vous n'avez pas besoin de connaître toutes les complexités de la syntaxe. Tu iras très loin comme ça. L'apprentissage de la syntaxe se fait au fur et à mesure que vous gagnez de l'expérience. |
| |
Nous allons donc parler de trois études de cas sur les choses que vous pouvez faire pour améliorer votre code à partir du journal amélioré, mais commençons par passer en revue JSL. C'est peut-être une introduction à certaines bases de JSL pour certains d'entre vous. |
| |
Donc, la chose importante que vous devez savoir sur JSL si vous débutez, c'est que tout est un objet. Tout ce que vous |
| |
voulez faire quelque chose à un objet, donc cela inclut des tables de données et des colonnes dans des tables de données, et des plates-formes, comme la plate-forme de distribution, le générateur de graphiques, Fit Y by X, |
| |
et les rapports qui proviennent de ces plateformes. Ainsi, lorsque vous avez des objets, la façon dont vous les exploitez est de leur envoyer des messages. Ainsi, les objets reçoivent des messages. Voici un exemple très simple que j'ai copié à partir du journal amélioré. |
| |
Ouvrez la table de données Big Class dans le répertoire de données d'exemple et exécutez une analyse de distribution simple, à droite. Et voici à quoi ressemble ce code, juste copié à partir du journal. |
| |
Maintenant. |
| |
Ce que nous voulons faire, la première chose que nous voulons faire est de nommer la table de données. Donnez-lui un nom, et pour cela j'ai pris le code de la ligne cinq ici et je l'ai amélioré. je |
| |
ajouté ce bctable= avant le reste, avant la partie ouverte de la déclaration, d'accord. Et ce que cela fait, c'est que lorsque nous ouvrons cette table de données, nous créons ce nom, bctable. Vous savez, j'ai choisi bctable, vous verrez dt dans la documentation. Utilisez ce que vous voulez, c'est vous qui l'attribuez. |
| |
Exécutons donc ceci en le mettant en surbrillance et en cliquant sur le bouton Exécuter, en ouvrant Big Class et en attribuant simultanément le nom bctable. Maintenant la vertu de faire ça, pourquoi est-ce important, c'est parce que maintenant j'ai ça |
| |
manipuler. C'est un crochet que je peux utiliser dans le code plus tard, bctable. Chaque fois que je dis bctable, je parle de Big Class. |
| |
Donc |
| |
voici la ligne suivante, mais la commande de distribution, et je l'ai également modifiée. Et vous savez, avant ici, à partir du journal, il s'agit d'une commande de distribution nue. Il n'a pas... |
| |
il ne pointe pas vers une table de données. Lorsque vous l'exécutez de cette façon, JMP l'exécutera simplement sur la table de données qui a le focus, |
| |
la table de données actuelle, qui se trouve être une grande classe, parce que vous l'avez ouverte juste avant cela, d'accord. Mais il est toujours bon d'être explicite. C'est une bonne idée de dire explicitement sur quelle table de données vous souhaitez opérer, nous allons donc l'exécuter de cette façon. |
| |
bctable, puis les doubles flèches puis les commandes de distribution. C'est donc ce que nous avons ajouté, bctable avec les doubles flèches. |
| |
Et c'est la syntaxe pour envoyer un message. Nous envoyons donc le message de distribution sur la droite de la table de données, pour laquelle bctable est nommé, sur la gauche. Et vous pouvez voir que c'est Big Class lorsque je survole bctable. Alors en cours d'exécution, |
| |
nous obtenons le rapport de distribution |
| |
que nous voulions. |
| |
Maintenant, voici... nous pouvons aller plus loin et, souvent, nous devons le faire. Nous allons créer un nom pour la plate-forme au fur et à mesure que nous l'exécutons, donc |
| |
voici une ligne qui incorpore à la fois la double flèche et les égaux, d'accord. Alors, euh... lisons ceci de droite à gauche. Nous allons prendre ce message de distribution et l'envoyer au bctable. |
| |
Et le résultat de tout ça, qui est la plate-forme, on va l'enregistrer dans cette variable que j'appelle distplat. |
| |
Exécutons ça. |
| |
D'accord, ça a l'air pareil, mais la différence est que maintenant j'ai cette distplat de variable JSL que je peux utiliser plus tard dans mon code. |
| |
Tu l'utiliserais pour quoi ? Vous pouvez l'utiliser pour ajouter des options de triangle rouge à la sortie, alors apportons-le ici... |
| |
emmenons ce rapport de distribution là où vous pouvez le voir. |
| |
Et nous allons prendre cet objet distplat, c'est le... c'est la plate-forme de distribution. |
| |
Voyez, survolez-le, et parcourons cette ligne. Activez le tracé de quintile normal dans la plate-forme de distribution. Le voilà. |
| |
D'accord. |
| |
La dernière étape est de prendre la plate-forme, de prendre cet objet ici, et de |
| |
en obtenir un rapport, un objet rapport. C'est cette ligne. Envoyez le message de rapport à l'objet de plate-forme, et nous obtenons maintenant un objet de rapport. |
| |
Et nous devons le faire si vous souhaitez accéder à ces valeurs dans votre code - n'importe quel nombre, graphique ou élément graphique dans le rapport - vous en aurez besoin, d'accord. Cet objet rdistplat. Alors exécutez-le encore une fois, rdistplat. |
| |
Je l'ai exécuté et vous ne voyez rien de visible, mais ce qui s'est passé, c'est maintenant que j'ai cet objet, rdistplat. Il dit que c'est une boîte d'affichage, et plus tard nous allons parler de la façon dont vous pouvez l'utiliser pour accéder aux numéros ici dans le rapport. |
| |
Bon je vais effacer mon log |
| |
et commencez par notre |
| |
études de cas. |
| |
Ainsi, la première technique que nous allons apprendre consiste à répéter la même commande encore et encore sur différentes colonnes de la table de données, en itérant sur les colonnes avec des boucles à l'aide de pour chaque commande. Donc |
| |
c'est un besoin très courant, parfois c'est juste quelque chose de simple que vous devez faire, comme changer le format ou le type de modélisation d'une colonne. |
| |
Cela peut être très complexe comme |
| |
prendre un... prendre une transformation de la colonne et exécuter une carte de contrôle et faire quelque chose avec cette carte de contrôle. Alors oui, ça évolue; cette technique évolue. |
| |
Voici comment nous allons y parvenir en code JSL. Nous allons d'abord pointer et cliquer, à droite, faire ce que nous voulons faire. Faites-le pour une seule colonne, puis nous allons récupérer ce code à l'aide du journal amélioré, |
| |
et puis c'est le squelette de notre script. Et nous allons le modifier afin de boucler sur toutes les colonnes sur lesquelles nous voulons effectuer cette action. |
| |
La méthode que nous allons utiliser pour la boucle for, pour l'itération, est pour chacun, et cela a été introduit dans JMP 16, donc cette technique ne fonctionnera pas dans les versions antérieures de JMP. |
| |
Cela utilise également un concept appelé listes JSL, nous allons donc en parler un peu aussi. |
| |
Bon je vais commencer |
| |
dans JMP, permettez-moi de commencer par la fenêtre d'accueil. |
| |
Et je vais... laissez-moi juste vérifier le journal, m'assurer qu'il est propre. Non, je dois supprimer une chose, effacer le journal. D'accord, pointons et cliquons sur ce que nous voulons faire. Je vais ouvrir une table de données appelée sc20. |
| |
Ce tableau de données est mis à votre disposition dans les supports de présentation que vous trouverez en ligne. |
| |
Et en regardant cette table de données, elle a une colonne ID, puis environ 20 |
| |
colonnes de données. Ceux-ci ont beaucoup, beaucoup de décimales, trop de précision et je veux le tronquer à deux décimales. Modifions donc le format pour n'afficher que les deux premières décimales des données. |
| |
C'est une simple opération de pointer-cliquer. Faites un clic droit, allez dans la colonne info, |
| |
et nous allons changer le format d'affichage par défaut pour corriger les décimales à deux chiffres. |
| |
OK, et maintenant nous l'avons fait pour NPN1, nous avons 19 autres colonnes pour lesquelles nous aimerions le faire également. |
| |
Examinons donc le journal amélioré. |
| |
Et ça y est, c'est le code dont nous avons besoin pour réaliser ce changement de format pour une colonne, NPN1, à droite. Et puis pour réutiliser cela, allez dans le triangle rouge, et vous pouvez enregistrer le script soit dans votre presse-papiers, soit même dans une nouvelle fenêtre de script. |
| |
Je vais passer à un autre dossier, où j'ai travaillé un peu et nous pourrons donc creuser un peu plus. |
| |
D'accord. |
| |
Donc les deux premières lignes ici... trois lignes, c'est le code du journal. Très bien, la première chose que nous faisons est d'ouvrir la table de données. |
| |
Et vous avez peut-être remarqué que j'ai modifié un peu, j'ai supprimé mon nom de chemin long, mon chemin de répertoire long vers ce fichier. |
| |
Si vous l'exécutez de cette façon, |
| |
cela fonctionnera tant que la table de données JMP, sc20, se trouve dans le même répertoire que ce fichier JSL. C'est donc comme un chemin de fichier local vers ce même répertoire dans lequel vous vous trouvez actuellement. |
| |
Donc, de toute façon, à partir du journal, nous ouvrons simplement la table de données, puis nous sommes ici, en appliquant ce changement de format, 10 caractères décimaux fixes deux décimales. |
| |
Le tableau... la référence de colonne ici à gauche est une façon d'aborder une colonne. Il existe plusieurs façons différentes, mais celle-ci est très courante avec le côlon. Table ref...ref...référence sur le côté gauche des deux points et le nom de la colonne sur le côté droit des deux points. |
| |
C'est donc encore une fois directement à partir du journal. |
| |
JMP utilise cette méthode dans le journal pour adresser la table de données. Je pense qu'il est préférable de faire ce dont nous avons parlé, il est préférable de donner le nom JSL lorsque vous l'ouvrez, puis d'utiliser ce nom JSL à l'avenir. Donc, au lieu de cette affaire avant les deux points, je l'ai changée en dt. |
| |
Alors voici ce même code, juste...juste un peu corrigé, et quand je l'exécute, oui, il a le bon effet. Il ouvre la table de données et il |
| |
modifie le format à deux décimales. Bon alors oui, maintenant que nous l'avons, c'est une chose assez facile à |
| |
changez toutes les 19 autres colonnes, à droite. Là... voici NPN1, et puis je peux juste copier cette ligne et changer tout le monde et l'écrire 19 fois de plus. |
| |
Oui, bien sûr, c'est inefficace, et l'un des avantages de la programmation est que vous... vous n'êtes pas obligé de faire la même chose plus d'une fois, n'est-ce pas. Donc cela devient plus facile à maintenir si nous... si nous écrivons juste ceci une fois, au lieu de l'écrire 19 fois, 20 fois. |
| |
Voici donc comment nous procédons. La première chose que nous faisons est d'obtenir une liste de toutes les colonnes sur lesquelles nous voulons opérer. |
| |
Et quand je dis une liste, je ne parle pas seulement d'une sorte de liste générique. Je parle d'une liste JSL, je parle d'une structure de données particulière que vous utilisez lorsque vous programmez en JSL. |
| |
Une liste n'est que quelques objets contenus dans un conteneur et c'est ainsi que nous l'utilisons. Voici donc trois façons de créer une liste d'objets de colonne. |
| |
La première façon est de le faire manuellement, c'est de tout taper. Donc si je devais lancer ça, |
| |
trois références de table...trois références de colonnes, NPN1, PNP1, PNP2. |
| |
Notez les accolades dans mon code et également lorsque je survole cette variable CNames. Quand vous voyez ces variables bouclées... ces accolades, vous savez que vous avez affaire à la liste en JSL. |
| |
D'accord, c'est donc une façon d'obtenir une liste. Parlons de quelques autres façons. C'est celui que nous allons utiliser pour cet exemple, en fin de compte. C'est |
| |
en disant, hé, récupérez toutes les colonnes continues dans ma table de données actuelle, bien dans la table de données que je nomme ici, dt. Donc objet message, créez une nouvelle liste. |
| |
Alors exécutons celui-ci. |
| |
Et maintenant, si je survole CNames, vous verrez que c'est ce que nous voulons. C'est la liste des 20 sur lesquels nous voulons opérer. |
| |
D'accord, et la dernière façon de procéder est de laisser l'utilisateur sélectionner les colonnes de la table de données. Cela ressemble à ceci. Je vais juste en sélectionner deux. Sélectionnons IVP et PNP4, deux colonnes sélectionnées. |
| |
Et si je lance ça, |
| |
nous obtenons une liste avec seulement ces deux colonnes sélectionnées de la table de données. |
| |
Très bien, donc, cependant, vous obtenez cette liste, la tâche suivante consiste à appliquer cette ligne de mise en forme à chacun des éléments de la liste, et cela s'appelle une boucle ou une itération. |
| |
Voici donc l'ancienne façon de procéder. Il utilise la commande for dans JMP. C'est ce que vous faisiez avant JMP 16 et je le mets ici, pour votre référence au cas où vous seriez toujours sur JMP 15. Mais, |
| |
vous savez, c'est un peu compliqué et interdit de rechercher de nouveaux utilisateurs, donc il y a une chose beaucoup plus compacte et lisible que vous pouvez faire si vous utilisez une liste dans JMP 16. Si je veux répéter une action sur chaque élément d'une liste, je peux l'utiliser pour chaque commande. |
| |
Très bien, et regardons-le et voyons ce qu'il fait. Cela prend trois arguments, les arguments sont séparés par des virgules, nous les prendrons de droite à gauche. |
| |
Le dernier argument est cette commande de format, à droite, appliquant le format, et au lieu de le faire pour dt NPN1, au lieu de le faire pour une colonne, j'ai mis un espace réservé ici et j'ai choisi l'élément de liste; Tu choisis ce que tu veux. |
| |
D'accord, ce n'est qu'un mot, un nom de variable, vous le choisissez. J'ai choisi l'élément de la liste. C'est donc notre espace réservé, et c'est la commande que nous voulons exécuter sur chaque élément de la liste. Quelle liste ? Cette liste, d'accord. C'est donc notre liste, c'est la deuxième |
| |
argument. Et puis le premier argument est l'espace réservé, à droite. Il nous dit que nous utilisons cet espace réservé pour contenir les valeurs des éléments de la liste. |
| |
Il est entre accolades, alors assurez-vous de l'utiliser si vous réutilisez ce code. |
| |
Voilà à quoi ressemble le tout, au lieu de plus de 20 lignes de code, j'ai juste, eh bien, trois lignes de code, et cela inclut l'ouverture de la table de données, |
| |
obtenir une liste de noms de colonnes, puis la répéter... répéter cette action pour les 20 colonnes continues. Pour faire fonctionner le tout, vous voyez à quoi cela ressemble. |
| |
Et voilà. Maintenant, chacune de ces colonnes |
| |
a deux décimales affichées dans le format. |
| |
D'accord, c'était donc un exemple très simple d'utilisation de chacun pour faire quelque chose de très simple sur |
| |
sur une colonne. |
| |
Laissez-moi vous montrer un exemple un peu plus intéressant. |
| |
Voici un exemple où, pour le même ensemble de données, pour sc20, |
| |
Je vais créer une carte de contrôle pour chaque colonne, et je vais ajouter ces cartes de contrôle à un journal et enregistrer le tout au format PDF, d'accord. Donc |
| |
il utilise le même pour chacun, et il a les mêmes deux premiers arguments, vous savez, l'élément de liste est le premier, un nom de liste pour le second. Mais maintenant, j'ai beaucoup de code comme troisième élément... comme troisième argument pour chacun. |
| |
Alors on y va. Exécutons tout ce script. |
| |
Ouvrir, exécuter un tas de cartes de contrôle, les coller ensemble dans un journal. Et maintenant, si je regarde sur mon bureau, j'ai créé cette chose, mon report.pdf, qui contient toutes ces cartes de contrôle, la première page, et leurs sauts de page pour les séparer. Donc page une, page deux, page trois. |
| |
Vous pouvez donc regarder cet exemple aussi à votre guise. Il est inclus dans les documents de présentation. |
| |
D'accord, et c'est notre première technique dont nous parlons. Effacons le journal pour notre prochaine technique. |
| |
OK, extraire une valeur d'un rapport. Cela arrive souvent en JSL. Vous faites une sorte d'analyse, peut-être que c'est une distribution, peut-être que c'est une régression, vous devez |
| |
obtenir quelque chose, ramasser quelque chose de là-bas. C'est peut-être une moyenne ou une médiane. C'est peut-être un coefficient de pente de la régression ou une valeur P. |
| |
C'est donc notre travail, et la partie délicate à ce sujet est que les rapports ont une structure hiérarchique hautement imbriquée, et il peut être un peu difficile de parcourir cette hiérarchie, de parcourir cet arbre pour trouver exactement ce que nous voulons. Alors je vais t'apprendre une astuce. |
| |
L'astuce est que nous allons pointer et cliquer sur notre chemin à travers l'analyse, comme d'habitude, puis la chose que nous voulons saisir, |
| |
Je vais changer la couleur du texte en rouge, juste un changement de formatage mineur. Et puis, lorsque nous enregistrerons ce script dans le journal, nous l'utiliserons pour apprendre à traiter cet élément rouge |
| |
en JSL. Voyons donc cela ensemble. |
| |
De retour dans JMP. |
| |
Je vais ouvrir Big Class, la bonne vieille Big Class et lançons une distribution sur la colonne hauteur. |
| |
Très bien, voici mon rapport de distribution dont je veux extraire quelque chose. Disons que c'est la médiane, dans ce cas la médiane est de 63, et je vais la mettre dans une variable JSL afin que je puisse la réutiliser plus tard, et vous savez écrire avec ou faire des calculs dessus ou quelque chose comme ça . |
| |
Voici l'astuce pour savoir comment... aborder ce nombre 63. |
| |
Changez la couleur ou, vous savez, la police ou quoi que ce soit de cette chose que je veux saisir. Alors, comment faire si vous n'avez jamais vu cela, cela vaut la peine de le savoir. |
| |
Il y a un bouton sur la barre d'outils pour les propriétés, je crois que c'est un nouveau bouton dans JMP 16. |
| |
Donc, si vous activez les propriétés de ce rapport. |
| |
Nous pouvons descendre cet arbre et trouver ce dont nous avons besoin. Alors regarde ça. |
| |
numéro de la boîte de col, à droite. Et notez que lorsque je clique sur différentes parties du rapport, le |
| |
élément, le type de boîte d'affichage dont il s'agit, est mis en surbrillance dans le panneau des propriétés. |
| |
D'accord, nous pouvons donc voir que cette chose qui a tous ces résultats est une boîte de col numérique avec tous ces nombres dedans et, comme, je vous ai dit que nous allons juste prendre cette chose, et je vais changer le couleur du texte au rouge. |
| |
Juste comme ça. |
| |
Maintenant, je vais fermer le panneau des propriétés. |
| |
Voilà le rapport, et envoyons ce script au journal amélioré. |
| |
Triangle rouge, enregistrez le script dans le journal. |
| |
Et maintenant, consultez ce journal. |
| |
C'est la partie que nous voulons. Il a, vous savez, la commande de distribution avec la partie qui change la couleur du texte de cette médiane et de ces autres statistiques en rouge. Voyons donc cela un peu plus en détail maintenant. |
| |
D'accord, voici donc ce code... le même code du journal amélioré. Je l'ai juste copié ici et je l'ai formaté un peu, afin que nous puissions parler davantage de ce dont nous avons besoin. |
| |
Donc, la seule raison pour laquelle nous avons fait cela était d'obtenir cette partie, que nous allons maintenant interpréter, très bien. Il utilise send pour signaler et, dans ce cadre, dispatch. |
| |
Et nous allons vraiment nous concentrer ici sur les quatre arguments à expédier. Nous avons besoin des trois premiers, le quatrième argument est le changement de couleur, ce n'est vraiment pas ce qui nous intéresse. Nous sommes intéressés à aborder la zone d'affichage, l'élément que nous voulons, d'accord. Donc |
| |
ce premier argument est la navigation. Il nous dit, descendez aux cases d'affichage, ce sont en fait des cases soulignées, descendez aux cases de contour |
| |
ici. Examinons donc ce rapport. Encore une fois, je suis sûr que vous avez remarqué dans JMP que dans un rapport, vous avez ces niveaux d'imbrication, n'est-ce pas, et j'ai juste un... |
| |
une distribution de boîte de contour externe. À l'intérieur se trouve une hauteur de boîte de contour et, à l'intérieur, des quantiles de boîte de contour, et à l'intérieur de ces quantiles, il y a les éléments que je dois extraire. |
| |
C'est donc ce qu'il me dit. Il me dit de descendre cet arbre. J'avais juste besoin de la hauteur et des quantiles et ça va l'identifier pour nous. |
| |
Bon. Les deux arguments suivants nous disent quelque chose sur ce... cet élément que nous essayons, que nous avons viré au rouge. Il nous dit... le troisième dit ce que c'est, c'est une case nombre col, on l'a vu dans les propriétés. |
| |
Et le deuxième argument nous dit le titre |
| |
de ce numéro de boîte de col. Celui-ci est vierge. Celui-ci n'a pas de titre et c'est bien. Nous pouvons... nous pouvons toujours utiliser ces informations pour obtenir ces données, donc parfois vous verrez un titre ici, parfois non. |
| |
D'accord, maintenant que nous avons ceci, nous allons prendre cette information et nous allons l'utiliser |
| |
pour extraire la médiane. |
| |
Voici le code qui le fait. Cela commence ici à la ligne 23 et passe par la ligne 29. |
| |
Nous ouvrons à nouveau la table de données, |
| |
nommer la distribution, effectuer la distribution continue. |
| |
Vous remarquerez que nous n'avons aucune de ces expéditions et envois pour signaler, c'est parce que nous n'avons pas besoin de le mettre en rouge dans notre script de production. |
| |
Alors oui, effectuez l'analyse de la distribution, nommez la plate-forme. |
| |
C'est important, vous devez... vous accédez à la couche de rapport. Vous l'extrayez avec cette ligne, ce qui crée rdist, cet objet de rapport. |
| |
Et puis, c'est la ligne où la magie opère. C'est là qu'on saisit ça |
| |
cette valeur médiane, en l'attribuant à la variable JSL, mdn, et pour celle-ci, nous allons l'écrire dans le journal. Je vais donc vous en dire un peu plus à ce sujet, mais d'abord, exécutons-le une fois au total, afin que vous voyiez ce qu'il fait. |
| |
Je vais passer la ligne 23, oups, faisons-le de cette façon à la place. Exécutons la ligne... les lignes 23 à 29. |
| |
Effectué la distribution. Ce n'est pas rouge et nous avons extrait la médiane, elle est maintenant stockée dans mdn, vous pouvez voir que la valeur de cette variable est 63. |
| |
la médiane est de 63. Parfait. |
| |
Bien. |
| |
Voici donc cette ligne où nous extrayons le |
| |
la valeur médiane, ce nombre 63 du rapport. |
| |
Regardons cela. Je vais juste appeler ça ici pour que nous puissions |
| |
référez-vous à cela, comme nous, comme nous le faisons. |
| |
Voici donc cette ligne. C'est juste à nouveau organisé, afin que nous puissions examiner chaque élément séparément. |
| |
63, la valeur médiane du rapport. |
| |
Voici comment nous y arrivons. |
| |
C'est ce qu'on appelle indice... abonnement. Lorsque vous voyez les crochets dans le code JSL, cela signifie que votre indice d'un objet. Cet objet est une sorte de conteneur, soit des boîtes d'affichage, |
| |
souvent une liste. Vous pouvez également souscrire des listes de cette façon. Donc, ce que nous faisons, c'est que oui, nous extrayons des éléments imbriqués dans cet objet de rapport. |
| |
La première chose que nous allons faire est la zone de contour de la hauteur. Vous vous en souvenez, et à partir de là, nous descendons à la boîte des quantiles, vous vous en souvenez. |
| |
Et maintenant, nous sommes au bon endroit. Nous n'avons qu'à saisir ce que nous voulons, ce que nous voulons, c'est la case numéro col, n'est-ce pas, et parce qu'elle n'avait pas |
| |
un titre que nous pourrions utiliser (c'était qui était ici, pas de titre), à la place nous nous y référons par numéro. C'est la première case de nombre dans cette case de contour de quantiles. |
| |
Alors vous pourriez regarder ça et vous dire, eh bien, attendez une minute, il y a des chiffres ici. C'est aussi une boîte de numérotation, n'est-ce pas ? Non, en fait ce n'est pas le cas. C'est une case à cocher de chaîne, et n'oubliez pas que vous pouvez vérifier tout cela si vous le souhaitez. C'est, encore une fois, des propriétés. |
| |
Et si je clique ici, |
| |
boîte de col nombre, boîte de colonne de chaîne, boîte de colonne de chaîne. Les voir ici ? Chaîne... numéro de chaîne, c'est donc la première case de la colonne numérique. |
| |
Et cela va récupérer tous ces chiffres. |
| |
D'accord, la toute dernière chose que nous devons faire est cet indice. L'abonnement de cette façon dit, obtenez-moi le sixième élément... 1, 2, 3, 4, 5, 6. C'est la médiane; c'est 63. Et lorsque nous exécutons cette ligne, cela met le rapport en indice ; il saisit cette médiane, afin que nous puissions la réutiliser plus tard. |
| |
Il y a donc un moyen de récupérer quelque chose d'un rapport. J'ai un autre exemple que je partagerai dans les supports de présentation qui auront |
| |
un élément qui a un titre et vous pouvez le voir, vous pouvez l'utiliser comme modèle pour faire votre propre travail, si vous rencontrez cette situation. |
| |
Très bien, la dernière chose dont nous allons discuter est de savoir comment obtenir des informations de votre utilisateur, la personne qui exécute le script. |
| |
Et laissez-les choisir quel fichier ils vont analyser ou même quelle colonne de la table de données ils vont analyser. C'est donc peut-être le plus courant |
| |
chose que les scripteurs débutants veulent faire. Vous savez, j'ai configuré mon script pour faire quelque chose sur une colonne, et je veux donner quelque chose à d'autres personnes de mon organisation |
| |
de les laisser faire eux-mêmes sur des données différentes, n'est-ce pas. Donc, si vous... si vous généralisez vos scripts de cette façon pour permettre à vos utilisateurs de choisir soit un fichier, soit une colonne, ou les deux, |
| |
vous généralisez votre script et vous augmentez considérablement sa valeur. Vous allez le donner à d'autres personnes de votre organisation. Ils peuvent reproduire votre travail et le faire rapidement sans passer par tous les clics. |
| |
D'accord, donc dans cette section, il s'agit moins d'une étude de cas que d'une liste de blanchisserie. Nous allons... Je vais vous montrer trois méthodes que vous pouvez laisser vos utilisateurs choisir des fichiers et deux méthodes que vous pouvez utiliser pour leur permettre de choisir des colonnes. |
| |
Et nous allons commencer par les méthodes pour choisir les fichiers. Comme d'habitude, nous allons commencer par faire quelque chose dans le journal, puis le copier. Voici... voici à quoi cela ressemble lorsque vous ouvrez Big Class, vous obtenez simplement ceci dans le journal, ouvrez Big Class. |
| |
dt. J'utilise dt dans ce cas, et donc, quand j'ouvre Big Class, |
| |
maintenant c'est le cas... dt pointe vers Big Class, d'accord. Et puis je continuerais avec mon script de production, n'est-ce pas. |
| |
Voici le truc, pour laisser votre utilisateur choisir le fichier qu'il veut, tout ce que nous avons à faire est de trouver un moyen de laisser dt pointer vers autre chose. |
| |
Écrivez le reste de votre script, utilisez dt, puis au début, vous pouvez changer cela. dt ne pointe plus simplement vers Big Class ; ça va pointer vers autre chose. |
| |
D'accord, et c'est autre chose qui est déterminé par l'utilisateur, |
| |
la personne qui exécute le script. D'accord, voici la chose la plus simple que vous puissiez faire, je pense, c'est que vous pouvez... vous pouvez utiliser cette ligne au lieu d'ouvrir une table de données. Si vous l'utilisez au début de votre script pour affecter dt, |
| |
ce que cela signifie, c'est que JMP va exécuter ce script et cela donnera ce dt |
| |
nom à n'importe quelle table de données qui se trouve devant. |
| |
Donc, du point de vue de l'utilisateur, ce qu'ils font, c'est ouvrir une table de données, je vais ouvrir sc20 ici et créer sc20 |
| |
ma table de données actuelle. Vous voyez ça ici ? Ce qui est répertorié dans cette fenêtre est la table de données actuelle. |
| |
Et donc, si votre utilisateur ouvre une table de données, puis exécute le script et rencontre ensuite cette ligne, dt va maintenant pointer vers sc20. |
| |
C'est donc une méthode assez puissante. Le problème, c'est que... il faut que votre utilisateur sache exactement quoi faire. Ils doivent savoir qu'ils doivent d'abord ouvrir le fichier de données, puis exécuter le script. |
| |
Nous pouvons faire quelque chose d'un peu plus robuste. Nous pouvons leur montrer un sélecteur de fichier lorsqu'ils exécutent le script, afin qu'ils puissent naviguer dans leur structure de répertoires et trouver le bon fichier à ouvrir. |
| |
Il s'avère que c'est très simple à faire. Ce que vous faites, c'est vous débarrasser de tout ce qui se trouve ici, vous vous débarrassez de la référence à Big Class, et vous dites simplement ouvert sans aucun argument. |
| |
Et quand JSL essaie... quand JMP essaie d'interpréter cette ligne, il dit, d'accord, l'utilisateur veut ouvrir quelque chose, mais je n'ai pas quoi... aucune idée de quoi. Montrons-leur un sélecteur de fichier afin qu'ils puissent décider. |
| |
Alors, allons-y. dt = ouvert. |
| |
Exécutez le script. Voici votre sélecteur de fichier générique et depuis mon bureau, je vais ouvrir Iris. |
| |
Iris est ouvert, et bien sûr, il porte le nom dt. |
| |
tous les fichiers JMP, tous les fichiers, d'accord. Cela pourrait montrer beaucoup de choses ici. |
| |
Donc, si vous avez besoin de plus de contrôle, oups, si vous avez besoin de plus de contrôle sur |
| |
les choix que votre utilisateur va faire, au lieu d'utiliser open, nous utiliserons quelque chose appelé pick file. |
| |
Choisir un fichier est une commande qui a plusieurs options différentes. Je n'en utilise que trois. |
| |
Passons en revue cet exemple. Ainsi, les trois premiers arguments de pick file sont un titre que vous verrez dans la fenêtre de sélection, |
| |
un répertoire où le sélecteur démarrera, et un filtre qui vous indique quels fichiers vous pouvez ouvrir à partir de ce sélecteur, à droite. Exécutons donc ceci... cette ligne, cette section de code, la commande de sélection de fichier, en sauvegardant le résultat dans PF. |
| |
Exécutez ça. |
| |
D'accord, notez que c'est cet argument ici, sélectionnez le fichier Excel. C'est ce que nous voyons ici dans le titre de la fenêtre. |
| |
Le dossier, le chemin dans le deuxième argument, c'est là que ça commence. |
| |
Et le troisième bit, le filtre de fichier qui dit, hé, ne montre que les fichiers Excel de l'utilisateur à ouvrir, c'est ici. Je n'ai pas le droit de m'éloigner des fichiers Excel. Je suis limité aux fichiers Excel. |
| |
Alors disons des sandwichs, et cliquez sur Ouvrir. |
| |
Eh bien, attendez une minute, pourquoi ne s'est-il pas ouvert ? |
| |
Eh bien, vérifions. PF est égal à choisir le fichier. C'est quoi PF ? Ah, PF est le chemin vers la chose que nous voulons ouvrir. Nous n'avons pas encore émis la commande open. Choisir un fichier n'ouvre pas un fichier, il sélectionne juste un fichier. |
| |
Alors pour boucler la boucle, voici ce que nous devons faire. Créez notre référence de table en ouvrant le |
| |
Variable PF, qui pointe vers le fichier que nous voulons, le fichier excel que nous voulons. |
| |
Le voilà. Cela ouvre la table de données des sandwichs, et maintenant j'ai mon dt et je suis prêt à continuer avec mon script, comme je le voulais. |
| |
Permettez-moi de m'arrêter ici pour vous montrer quelque chose d'important. Choisissez un fichier, si vous rencontrez quelque chose comme ça et que vous ne connaissez pas tous les arguments et que vous voulez en savoir plus, deux ou trois choses. Tout d'abord, vous obtenez un peu |
| |
hover help, une petite fenêtre contextuelle contenant des informations sur la syntaxe. Voici une meilleure option. Faites un clic droit dessus dans la fenêtre de script, |
| |
et vous pouvez le rechercher dans l'index de script. L'index de script est un outil très important pour tout programmeur JSL, et |
| |
il a la commande que vous recherchez. Il contient la liste des arguments, un texte explicatif et, ce qui est très important, il contient quelques exemples que vous pouvez parcourir et voir ce qu'il fait. Donc, si je viens d'exécuter cet exemple ici, cela va me donner un fichier de sélection. |
| |
Eh bien, ça m'a envoyé quelque part, quelque part où je ne veux pas aller. |
| |
Fermons-le simplement. |
| |
Bon et alors nous pouvons expérimenter et récupérer ce code, voler ce code et l'utiliser dans notre... dans notre script si nous le voulons. |
| |
D'accord, c'est l'index de script. Il est également disponible à partir du menu d'aide. Menu de script... regardez les trucs là-haut. |
| |
table de données actuelle, une ouverture nue ou un fichier de sélection. Il existe également d'autres moyens, mais ce sont trois bons pour commencer. |
| |
Parlons maintenant de la possibilité pour vos utilisateurs de choisir la colonne sur laquelle ils souhaitent opérer. |
| |
Me voici... J'ai quelque chose de copié du journal. J'ai ouvert une table de données appelée prix. et j'ai fait un graphique dessus montrant le prix des pommes au fil du temps. |
| |
Je ne vais pas vous montrer la partie pointer-cliquer, je vais juste exécuter le script. Je pense que vous savez déjà comment extraire le script du journal amélioré, voyons donc ce que fait le script. Ouvre les prix et voici mon graphique, pommes par rapport à la date, prix des pommes au fil du temps. |
| |
Alors regardez ce tableau de données, les prix, oui, il y a des pommes, mais j'ai aussi tous ces gars-là, n'est-ce pas. Et si je veux laisser mon utilisateur me dire quel graphique il veut voir, quelle colonne il veut voir graphiquement. |
| |
C'est l'objet de cette section, laisser... laisser vos utilisateurs choisir. |
| |
D'accord. |
| |
Nous allons donc discuter de deux méthodes. Voici le premier. |
| |
Il s'agit d'opérer sur des colonnes que l'utilisateur a sélectionnées. |
| |
Et et nous avons déjà vu cela auparavant, nous avons vu cette syntaxe plus tôt, je pense, dans notre deuxième étude de cas. Ouais, c'est comme ça qu'on fait une liste |
| |
qui contient les colonnes sélectionnées dans la table de données. Permettez-moi donc de revenir à cette table de données. |
| |
Je vais sélectionner, peut-être trois colonnes et |
| |
courons |
| |
cette. En fait, je pense que je devrais lancer dt. Exécutons les deux. |
| |
poulet, café et œufs. |
| |
D'accord. |
| |
Donc. |
| |
Lequel est-ce que je veux opérer ? Eh bien, vous savez comment opérer, comment parcourir une liste en utilisant une boucle, mais nous ne le faisons pas. Je vais juste utiliser un raccourci. je vais dire regarde, |
| |
si mon utilisateur en a sélectionné plusieurs, il suffit de représenter graphiquement le premier pour lui. Mon utilisateur a donc sélectionné du poulet, du café et des œufs avant d'exécuter le script. Je veux juste leur donner le graphique sur le poulet. |
| |
Bon, c'est donc la ligne suivante ici. Voilà notre abonnement. Nous affichons la liste CNames pour obtenir le premier élément. |
| |
Alors on va lancer ça. |
| |
Maintenant, j'ai cette belle variable, mon col, |
| |
qui a le premier élément de la liste, poulet, la référence de colonne avec les deux points. |
| |
Et maintenant, nous pouvons exécuter notre générateur de graphiques. Maintenant, nous pouvons continuer notre vie, la seule différence est que nous avons remplacé là où c'était des pommes ici, |
| |
c'est maintenant mon col. C'est le seul changement que nous ayons apporté et donc en effectuant cela, nous allons obtenir un graphique du prix du poulet. |
| |
Bon. |
| |
D'accord, c'est donc un moyen, mais encore une fois, comme nous en avons parlé plus tôt, cela nécessite que l'utilisateur sache ce qu'il doit faire. Cela nécessite... |
| |
La méthode nécessite que l'utilisateur sache qu'il doit ouvrir la table de données, la sélectionner, puis exécuter le script, et c'est un peu compliqué. Donc |
| |
à la place, il est un peu plus robuste d'afficher une boîte de dialogue de sélection de colonne à l'utilisateur lors de l'exécution. Voici à quoi cela ressemble. La syntaxe est un peu complexe. Je ne vais pas entrer dans tous les détails, en parler à un niveau élevé. Nous ouvrons la table de données comme avant. |
| |
Nous utilisons cette commande appelée dialogue de colonne |
| |
pour faire apparaître un sélecteur... un sélecteur de colonne à l'utilisateur. |
| |
Encore une fois, il a beaucoup d'arguments. Je n'en utilise qu'un couple. Ce que je fais, c'est que je dis, hé, donnez-moi un bouton qui dit choisir un produit, et l'utilisateur peut choisir une colonne pour cela au maximum et il doit en choisir au moins une. |
| |
Alors ici, exécutons ce script à partir de la ligne 60. |
| |
Prix d'ouverture, voici mon dialogue et regardez ce que c'est un dialogue riche que j'ai pour très peu de code. C'est la vertu de ce dialogue de colonne que nous utilisons. Je vais donc prendre un café comme sélection et cliquer sur OK. |
| |
Bon. De retour au script, nous venons d'exécuter cette ligne. |
| |
Et c'est le résultat de notre choix qui est stocké dans dlg. Jetons un coup d'oeil à cela. |
| |
D'accord, c'est un peu compliqué. Il dit que dlg est une liste, voir les accolades, et j'ai des accolades imbriquées, donc c'est comme des listes imbriquées. |
| |
Voici l'abonnement qui vous y amène. Je ne vais pas passer beaucoup de temps à expliquer cela, mais vous pouvez copier ce code si vous... si vous avez besoin de le faire. Donc, pour sortir du dialogue pour obtenir juste la partie qui dit café, une référence de colonne au café là-bas, |
| |
voici l'indice pour faire mon col, alors lancez cette ligne. |
| |
Et maintenant, mon col contient juste cette référence à la colonne café, et c'est identique à avant. Nous exécutons le générateur de graphes en utilisant |
| |
mon col, en le remplaçant par des pommes et ainsi nous obtenons du café ou tout ce que l'utilisateur a choisi. |
| |
D'accord, c'est tout ce que je voulais partager avec vous. Je vais juste terminer avec un petit conseil pour tous ceux qui débutent de cette façon avec la programmation JSL. |
| |
Le conseil est, vous savez, de laisser JMP corriger votre code, autant que possible. Et c'est à cela que sert le journal amélioré, voler ce code dans le journal. C'est la plupart de votre script, |
| |
et puis vous n'avez qu'à écrire le tissu conjonctif, les parties qui maintiennent les choses ensemble et en font un script de production utilisable. Vous pouvez aussi voler ce code. Vous allez le voler dans l'index de script, vous pouvez certainement le voler dans cette présentation. |
| |
Tout le matériel est avec cette présentation et vous pouvez également voler le livre de recettes JSL dans la communauté d'utilisateurs JMP, une ressource fantastique qui contient de nombreuses tâches JSL courantes et vous donne le code dont vous avez besoin pour accomplir ces choses. |
| |
Et encore une fois, je vais insister sur le fait qu'il ne faut vraiment pas trop transpirer la syntaxe. Il est juste plus facile de récupérer le code et de le remplacer par ce dont vous avez besoin. Vous n'allez rien casser, et vous apprendrez les subtilités de cette syntaxe avec plus d'expérience. |
| |
Merci beaucoup pour votre attention. |