Conférencier
|
Transcription
|
| Jordan Hillier |
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 cette conférence. C'est un livre d'Abbie Hoffman, provocatrice et militante. Ouais, 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 comme ça, 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 et 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 faites-le d'un simple clic sur un bouton, au lieu d'une séquence de pointer-cliquer. C'est donc tout l'objectif ici, vous allez économiser |
| |
script du journal amélioré et c'est l'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 ensemble les scripts de production. |
| |
Donc, dans cette conférence, je vais me concentrer avec vous, vous savez, pas tant sur le fond de la syntaxe, |
| |
beaucoup plus sur la situation dans son ensemble, et cela correspond à ce que je pense être une bonne façon d'apprendre la programmation JSL. Il est préférable 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é des utilisateurs JMP ou peut-être dans le guide de script. |
| |
Et il suffit de le copier et de l'adapter à votre usage. Vous n'avez pas besoin de connaître toutes les complexités de la syntaxe. Vous irez vraiment loin de cette façon. L'apprentissage de la syntaxe se fait au fur et à mesure que l'on acquiert 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 est que tout est un objet. Tout ce que vous |
| |
voulez faire quelque chose est un objet, donc cela inclut les tables de données et les colonnes dans les tables de données, et les 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 opérez sur eux, c'est que vous leur envoyez 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. |
| |
Alors exécutons 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 |
| |
poignée. 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, c'est 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 de grande classe, car vous l'avez ouverte juste avant, d'accord. Mais c'est toujours bien d'être explicite. C'est une bonne idée de dire explicitement sur quelle table de données vous voulez 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 à 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. Donc, courir le tout, |
| |
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 pendant 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 à la bctable. |
| |
Et le résultat de tout ça, qui est la plateforme, on va l'enregistrer dans cette variable que j'appelle distplat. |
| |
Exécutons cela. |
| |
D'accord, ça a l'air pareil, mais la différence est que maintenant j'ai cette variable JSL distplat 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 cela ici ... |
| |
apportons ce rapport de distribution là où vous pouvez le voir. |
| |
Et nous allons prendre cet objet distplat, c'est la... c'est la plate-forme de distribution. |
| |
Voyez, survolez-le, et exécutons cette ligne. Activez le tracé des quintiles normaux 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 |
| |
obtenir un rapport de celui-ci, un objet de rapport. C'est cette ligne. Envoyez le message de rapport à l'objet de la plate-forme, et maintenant nous obtenons un objet de rapport. |
| |
Et nous devons le faire si vous voulez accéder à ces valeurs dans votre code -- n'importe quel nombre ou graphique ou élément graphique dans le rapport -- vous en aurez besoin, d'accord. Cet objet rdistplat. Donc, lancez-le une fois de plus, rdistplat. |
| |
Je l'ai exécuté et vous ne voyez rien de visible, mais ce qui s'est passé, c'est que maintenant j'ai cet objet, rdistplat. Il dit que c'est une boîte d'affichage, et plus tard, nous parlerons de la façon dont vous pouvez l'utiliser pour accéder aux chiffres ici dans le rapport. |
| |
Bon je vais vider 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 la commande for each. 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 pourrait ê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 dans le 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, assurez-vous qu'il est propre. Non, je dois supprimer une chose, effacer le journal. Bon, 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 à 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 d'ID, puis elle a 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 afin de n'afficher que les deux premières décimales des données. |
| |
C'est une simple opération pointer et cliquer. Clic droit, aller dans la colonne info, |
| |
et nous allons changer le format d'affichage par défaut pour fixer la décimale à deux chiffres. |
| |
OK, et maintenant nous avons fait cela 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 le réutiliser, 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 pour que nous puissions creuser un peu plus. |
| |
D'accord. |
| |
Donc les deux premières lignes ici... trois lignes, c'est le code du log. D'accord, 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, appliquant ce changement de format, décimale fixe 10 caractères deux décimales. |
| |
Le tableau... la référence de colonne ici à gauche est une façon d'adresser une colonne. Il existe plusieurs façons différentes, mais c'est une méthode très courante que vous verrez avec le côlon. Table ref...ref...reference sur le côté gauche des deux-points et le nom de la colonne sur le côté droit des deux-points. |
| |
Donc, c'est à nouveau 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 le côlon, je l'ai changé en dt. |
| |
Donc, voici ce même code, juste... corrigé un peu, et quand je l'exécute, oui, il a le bon effet. Il ouvre la table de données et il |
| |
change le format à deux décimales. D'accord, alors oui, maintenant que nous avons cela, c'est une chose assez facile à |
| |
changer toutes les 19 autres colonnes, à droite. Là... voici NPN1, et ensuite je peux simplement 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 grands avantages de la programmation est que vous... vous n'avez pas à faire la même chose plus d'une fois, n'est-ce pas. Cela devient donc plus facile à maintenir si nous... si nous écrivons ceci une seule 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 exécuter ceci, |
| |
trois références de table...trois références de colonne, NPN1, PNP1, PNP2. |
| |
Notez les accolades à la fois dans mon code et aussi 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 une façon d'obtenir une liste. Parlons de quelques autres façons. C'est celui que nous allons utiliser pour cet exemple, finalement. C'est |
| |
en disant, hé, obtenez toutes les colonnes continues dans ma table de données actuelle, eh bien dans la table de données que je nomme ici, dt. Donc objet de 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 dans la table de données. |
| |
D'accord, cependant, vous obtenez cette liste, le travail suivant consiste à appliquer cette ligne de formatage à 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 feriez avant JMP 16 et je l'ai mis 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 chercher de nouveaux utilisateurs, il y a donc 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 cela et voyons ce qu'il fait. Il prend trois arguments, les arguments sont séparés par des virgules, on va les prendre de droite à gauche. |
| |
Le dernier argument est cette commande de format, à droite, en 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. |
| |
Bon, c'est juste un mot, un nom de variable, vous le choisissez. J'ai choisi l'élément de 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. Voilà donc notre liste, c'est la deuxième |
| |
argument. Et puis le premier argument est l'espace réservé, à droite. Cela nous indique que nous utilisons cet espace réservé pour conserver les valeurs des éléments de la liste. |
| |
C'est entre accolades, alors assurez-vous de l'utiliser si vous réutilisez ce code. |
| |
Voici donc à 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 exécuter le tout, o vous voyez à quoi ça 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 la même chose 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 rassembler dans un journal. Et maintenant, si je regarde sur mon bureau, j'ai créé ce truc, 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 un, page deux, page trois. |
| |
Vous pouvez donc également regarder cet exemple à votre rythme. Il est inclus dans les supports de présentation. |
| |
D'accord, et c'est notre première technique dont nous parlons. Effacons le journal pour notre prochaine technique. |
| |
OK, extraction d'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, récupérer quelque chose 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 et 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 un truc. |
| |
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. Alors allons-y ensemble. |
| |
De retour dans JMP. |
| |
Je vais ouvrir Big Class, la bonne vieille Big Class et lançons une distribution sur la colonne de 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 mettre cela 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... 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 d'être connu. |
| |
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 parcourir cet arbre et trouver ce dont nous avons besoin. Alors regarde ça. |
| |
nombre col case, à droite. Et notez que lorsque je clique sur différentes parties du rapport, le correspondant |
| |
é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, donc nous pouvons voir que cette chose qui a tous ces résultats est une boîte à chiffres 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. |
| |
Je vais maintenant fermer le panneau des propriétés. |
| |
Voilà le rapport, et envoyons ce script au journal amélioré. |
| |
Triangle rouge, enregistrer le script dans le journal. |
| |
Et maintenant, visualisez 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. |
| |
Bon, alors voici ce code... même code du journal amélioré. Je viens de le copier 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, d'accord. Il utilise send to report 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 boîte d'affichage, l'élément que nous voulons, d'accord. Donc |
| |
ce premier argument est la navigation. Il nous dit, descendez aux boîtes d'affichage, ce sont en fait des boîtes de contour, descendez aux boîtes de contour |
| |
ici. Alors regardons 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 de cela se trouve une hauteur de boîte de contour et, à l'intérieur de celle-ci se trouvent des quantiles de boîte de contour, et à l'intérieur de ces quantiles se trouve ce que j'ai besoin d'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 cela va nous permettre de l'identifier. |
| |
Bien. Les deux arguments suivants nous disent quelque chose à propos de cet... cet élément que nous essayons, que nous avons rendu rouge. Il nous dit... le troisième dit ce que c'est, c'est un numéro de col, on a vu ça dans les propriétés. |
| |
Et le deuxième argument nous dit le titre |
| |
de ce nombre col box. Celui-ci est vierge. Celui-ci n'a pas de titre et c'est normal. Nous pouvons... nous pouvons toujours utiliser ces informations pour accéder à ces données, donc parfois vous verrez un titre ici, parfois vous ne le verrez pas. |
| |
D'accord, maintenant que nous avons cela, nous allons prendre cette information et nous allons l'utiliser |
| |
pour extraire la médiane. |
| |
Voici le code qui le fait. Ça commence ici sur la ligne 23 et ça 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 rien de cette répartition et que nous n'envoyons pas de rapport, 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à que nous attrapons ç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, pour que vous voyiez ce qu'il fait. |
| |
Je vais exécuter la ligne 23, oups, faisons-le plutôt de cette façon. Exécutons la ligne... les lignes 23 à 29. |
| |
Réalisé 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 ça. 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é, de sorte que nous puissions regarder chaque élément séparément. |
| |
63, la valeur médiane du rapport. |
| |
Voici comment nous y parvenons. |
| |
C'est ce qu'on appelle l'indice... indice. Lorsque vous voyez les crochets dans le code JSL, cela signifie que vous souscrivez un objet. Cet objet est un conteneur quelconque, soit des boîtes d'affichage, |
| |
souvent une liste. Vous pouvez également inscrire des listes de cette façon. Donc, ce que nous faisons, oui, nous extrayons des éléments imbriqués dans cet objet de rapport. |
| |
La première chose que nous allons voir est la zone de contour de hauteur. Vous vous souvenez de cela, et à partir de là, nous descendons jusqu'à la boîte des quantiles, vous vous en souvenez. |
| |
Et maintenant nous sommes au bon endroit. Nous devons juste saisir ce que nous voulons, ce que nous voulons, c'est le nombre de cols, à droite, et parce qu'il n'avait pas |
| |
un titre que nous pourrions utiliser (c'était ici, pas de titre), à la place, nous nous y référons par numéro. C'est la première boîte de col numérique dans cette boîte de contour des quantiles. |
| |
Donc, vous pourriez regarder cela et vous dire, eh bien, attendez une minute, il y a des chiffres ici. C'est aussi une boîte à numéros, n'est-ce pas ? Non, en fait ce n'est pas le cas. C'est une chaîne de caractères, et rappelez-vous, 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 de nombre, boîte de col de chaîne, boîte de col de chaîne. Vous les voyez ici ? Chaîne...numéro de chaîne, c'est donc la première boîte de col numérique. |
| |
Et cela va saisir tous ces chiffres. |
| |
D'accord, la toute dernière chose que nous devons faire est cet indice. L'indice 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 en indice le rapport ; 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 dans un rapport. J'ai un autre exemple que je partagerai dans le matériel de présentation qui aura |
| |
un élément qui a un titre et que vous pouvez 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 les commentaires de votre utilisateur, la personne qui exécute le script. |
| |
Et laissez-les choisir le fichier qu'ils vont analyser ou même la colonne de la table de données qu'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 |
| |
pour les laisser le faire eux-mêmes sur des données différentes, à droite. Donc, si vous... si vous généralisez vos scripts de cette manière pour permettre à vos utilisateurs de choisir soit un fichier, soit une colonne, soit 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 il a... dt pointe vers Big Class, d'accord. Et puis je continuerais avec mon script de production, d'accord. |
| |
Voici le truc, pour laisser votre utilisateur choisir le fichier qu'il veut, tout ce que nous devons 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 se contente plus de pointer vers Big Class ; ça va pointer vers autre chose. |
| |
Très bien, et c'est quelque chose d'autre 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 assigner dt, |
| |
ce que cela signifie, c'est que JMP va exécuter ce script et il donnera ce dt |
| |
nom à la 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 sur sc20. |
| |
C'est donc une méthode assez puissante. Le problème est que... c'est qu'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 fichiers 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 que vous vous débarrassez de tout ce qu'il y a ici, vous vous débarrassez de la référence à Big Class, et vous dites simplement ouvert sans argument du tout. |
| |
Et quand JSL essaie... quand JMP essaie d'interpréter cette ligne, ça dit, d'accord, l'utilisateur veut ouvrir quelque chose, mais je ne sais pas quoi... aucune idée de quoi. Montrons-leur un sélecteur de fichiers pour qu'ils puissent décider. |
| |
Alors laissons... lançons ça. dt = ouvert. |
| |
Exécutez le script. Voici votre sélecteur de fichiers 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, à droite. 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 pour choisir le fichier sont un titre que vous verrez dans la fenêtre du sélecteur, |
| |
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 pick file, en enregistrant 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 fichiers qui dit, hé, ne montre que les fichiers Excel de l'utilisateur à ouvrir, c'est ici. Je ne suis pas autorisé à modifier les 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 équivaut à choisir un 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 d'ouverture. Choisir un fichier n'ouvre pas un fichier, il sélectionne simplement un fichier. |
| |
Alors pour boucler la boucle, voici ce qu'il nous reste à faire. Créez notre table de référence en ouvrant le |
| |
Variable PF, qui pointe sur 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, quelques 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 lance cet exemple ici, cela va me donner un fichier pick. |
| |
Eh bien, ça m'a envoyé 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 choses 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 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 et cliquer, je vais juste exécuter le script. Je pense que vous savez déjà comment extraire le script du journal amélioré, alors voyons ce que fait le script. Ouvre les prix et il y a mon graphique, les pommes contre la date, le prix des pommes au fil du temps. |
| |
Alors regardez ce tableau de données, les prix, ouais il y a des pommes, mais j'ai aussi tous ces gars-là aussi, d'accord. Et si je veux laisser mon utilisateur me dire quel graphique il veut voir, quelle colonne il veut voir graphiquement. |
| |
C'est de cela qu'il s'agit dans cette section, laisser... laisser vos utilisateurs choisir. |
| |
D'accord. |
| |
Nous allons donc discuter de deux méthodes. Voici le premier. |
| |
C'est qu'il fonctionne sur les colonnes que l'utilisateur a sélectionnées. |
| |
Et et nous l'avons déjà vu, 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 à ce tableau de données. |
| |
Je vais sélectionner, peut-être trois colonnes et |
| |
allons courir |
| |
ce. En fait, je pense que je devrais exécuter dt. Exécutons les deux. |
| |
poulet, café et œufs. |
| |
D'accord. |
| |
Donc. |
| |
Lequel dois-je opérer ? Eh bien, vous savez comment fonctionner, comment parcourir une liste à l'aide d'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é plus d'un, 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. Il y a notre abonnement. Nous inscrivons la liste CNames pour obtenir le premier élément. |
| |
Nous allons donc exécuter cela. |
| |
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 graphes. 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 fait et ainsi de suite, nous allons obtenir un graphique du prix du poulet. |
| |
Bien. |
| |
D'accord, donc c'est une façon, 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... |
| |
nécessite que l'utilisateur sache qu'il doit ouvrir la table de données, sélectionner ceci, puis exécuter le script, et c'est un peu compliqué. Donc |
| |
au lieu de cela, 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 afficher un sélecteur ... sélecteur de colonne à l'utilisateur. |
| |
Encore une fois, il a beaucoup d'arguments. Je n'utilise qu'un couple. Ce que je fais, c'est que je dis, hé, donnez-moi un bouton qui dit choisir la marchandise, 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 quel dialogue riche j'ai pour très peu de code. C'est la vertu de ce dialogue de colonne que nous utilisons. Je vais donc choisir un café et cliquer sur OK. |
| |
Bien. Revenons 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'œil à 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 obtenir 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 commencent 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 du journal. C'est la majeure partie de votre script, |
| |
et puis il vous suffit d'écrire le tissu conjonctif, les parties qui maintiennent les choses ensemble et en font un script de production utilisable. Vous pouvez également voler ce code. Vous allez le voler dans l'index de script, vous pouvez certainement voler dans cette présentation. |
| |
Tous les matériaux sont avec cette présentation et vous pouvez également voler du livre de recettes JSL dans la communauté des utilisateurs JMP, une ressource fantastique qui a 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 pas trop transpirer la syntaxe. Il est simplement plus facile de saisir le code et de remplacer 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. |