
Cette démonstration illustre la gestion des colonnes et des lignes d'une table de données. J'utiliserai un script pour créer une nouvelle table de données avec une seule colonne. Dans le journal de cours, à la section « Créer une nouvelle table et une nouvelle colonne de données », je clique sur « Créer une nouvelle table de données et une nouvelle colonne ». Vous pouvez voir que nous utilisons la fonction « new table ». Nous allons stocker la référence d'objet de la table de données ainsi créée dans la variable dt. La table s'appellera « Données de test ». J'aurai une seule colonne appelée pH. Les données seront de type numérique et la modélisation continue. J'utiliserai ensuite l'argument « values », que je pourrais aussi appeler « set values » (ces deux termes étant synonymes), pour renseigner la table de données à l'aide de l'opérateur d'index, un opérateur infixe. Nous allons donc compter de un à sept par incréments de un. Comme je fournis ces valeurs, cela correspond au nombre de lignes de la table de données. Il existe un argument facultatif permettant d'ajouter un nombre spécifié de lignes, que je pourrais utiliser si je ne remplissais pas initialement les valeurs. Vous verrez également que si JMP écrit un script pour une table de données avec ce message de script get, il inclura l'argument permettant d'ajouter les lignes. Nous spécifierons également un format à l'aide de l'argument décimal fixe avec un champ à trois décimales. Nous activerons l'option de verrouillage sur la colonne afin qu'elle ne puisse pas être modifiée sans la déverrouiller. Nous utiliserons l'argument de vérification de plage pour affecter cette propriété de colonne. La syntaxe ici LELE() indique simplement que la valeur de la colonne est inférieure ou égale à. Enfin, nous avons un exemple d'argument de propriété set, où nous définissons la propriété des limites de spécification. Et comme il existe plusieurs options pour indiquer les limites de spécification, nous avons une liste de trois limites : la limite de spécification inférieure, la limite de spécification supérieure et la cible. N'oubliez pas non plus que tous ces arguments facultatifs de la nouvelle colonne peuvent être envoyés sous forme de messages à la colonne après sa création ou, comme illustré ici, comme arguments de la nouvelle colonne. Je vais donc exécuter le script. Vous pouvez voir dans le journal ci-dessous que nous avons créé cette instance d'un objet de table de données appelé « données de test ». Voici ce que je verrais si je survolais la variable dt dans mon script : la table de données contient une seule colonne et sept lignes. Tous les éléments du script sont indiqués dans la table elle-même. Je sais que le type de données est numérique, car l'icône de modélisation indique qu'il est continu. Or, le type de modélisation continu n'accepte que les données numériques. De plus, les valeurs numériques sont justifiées à droite. Si les nombres étaient traités comme des caractères, ils seraient justifiés à gauche. Si l'on observe les icônes du panneau des colonnes, on remarque l'icône de verrouillage, indiquant que la colonne a été verrouillée. La petite coche indique la vérification de la plage. L'astérisque indique ensuite d'autres propriétés qui n'ont pas de symbole unique. Pour accéder à la boîte de dialogue d'informations sur la colonne, plusieurs options s'offrent à vous. Un raccourci consiste à cliquer sur cet astérisque. La propriété concernée correspond aux limites de spécification. Plusieurs propriétés peuvent être répertoriées dans ce menu déroulant. Je peux les sélectionner. Cela m'amène aux informations sur la colonne. On peut également sélectionner la colonne et utiliser le menu des colonnes, ou faire un clic droit dessus et sélectionner les informations sur la colonne. On y trouve les limites de spécification avec les valeurs indiquées dans l'argument de propriété défini. On vérifie également la plage de valeurs. L'option « inférieur ou égal » (ce LELE est indiqué dans la syntaxe générique) est ensuite affichée, ainsi que les valeurs réelles. On constate que la colonne a été verrouillée. Le type de données est numérique. Le type de modélisation est continu. Le format est un décimal fixe dont la largeur de champ correspond au nombre maximal de caractères pouvant être affichés dans la colonne, avec trois décimales. Je vais donc annuler la boîte de dialogue d'informations sur la colonne. Je vais ensuite désélectionner la colonne pH. Le menu déroulant des propriétés de la colonne propose une option permettant de définir votre propre propriété de colonne utilisateur. Si vous le faites de manière interactive, l'option s'appelle simplement Autre. Il suffit de nommer la propriété et de lui attribuer la valeur souhaitée. J'ai un script dans le journal appelé « Ajouter une propriété de colonne utilisateur ». Nous l'envoyons à la colonne pH. Cette colonne utilisateur s'appellera « Étalonnage de l'appareil ». Je souhaite simplement saisir la date du jour au format « mois, jour, année ». Le texte ici, le deuxième argument pour définir la propriété, dans ce cas, j'utilise la fonction Aujourd'hui pour récupérer le nombre de secondes écoulées depuis minuit, en janvier, au moment où j'exécute cette ligne de code. J'intègre ce nombre dans la fonction de formatage et spécifie le format de chaîne de caractères souhaité. L'écriture d'un script peut nécessiter des essais et des erreurs. Si je fournissais simplement ce que j'ai mis en surbrillance – et je pense que c'est possible – il y a… oui. Je voulais m'assurer d'avoir spécifié le bon nombre de parenthèses. Exécutons ce que je viens de mettre en surbrillance. Je sélectionne cela. J'appuie sur Ctrl+R. Je constate que la chaîne de caractères apparaît exactement comme je le souhaite dans le journal. Je pourrais donc exécuter ce message de définition de propriété, ce code avec le message de propriété, sans la fonction eval au départ. Si je faisais cela, ce que je verrais en consultant les informations de colonne pour la propriété d'étalonnage du compteur serait littéralement le code. Il ne serait pas réellement évalué. Il se pourrait donc que la propriété set n'évalue pas son deuxième argument, ce qui nécessiterait de l'encapsuler dans la fonction eval. En l'exécutant en dehors du message de définition de propriété, cela va simplement – je vais l'exécuter – renvoyer exactement le même résultat. Il se peut donc que vous utilisiez initialement le format de la fonction Today, puis que vous découvriez qu'elle ne renvoie pas le résultat souhaité dans les propriétés de colonne. Vous réaliserez alors qu'il faut ajouter cette évaluation. Je ne sélectionne donc rien et j'exécute ce script. Le message que j'obtiens dans le journal est simplement « scriptable ». Cela signifie que j'ai effectué une opération scriptable. Il arrive donc que, lors de l'exécution d'un code, le résultat attendu ne se produise pas. Vous pourriez alors voir ce message « scriptable ». Il faut alors essayer de comprendre ce qui s'est passé, car le mot « scriptable » n'apporte pas vraiment d'informations. Dans notre cas, passons au tableau. Là encore, il suffit d'accéder aux informations de colonne en cliquant sur cet astérisque. Je procède ainsi pour montrer qu'un autre élément est désormais disponible dans ce menu. Toutes les propriétés de colonne sans icône unique apparaîtront dans ce menu. Je clique sur « Calibration de l'appareil » pour que la boîte de dialogue d'informations de colonne s'ouvre et que cette propriété soit sélectionnée. Voici le résultat évalué de l'utilisation de la fonction Today et de son formatage en chaîne de caractères. Je vais donc annuler cela. Je vais utiliser la propriété Ajouter une colonne utilisateur de la fenêtre de l'éditeur de script pour expérimenter davantage avec cette table. Elle n'a plus besoin d'être aussi large. Je souhaite donc envoyer une nouvelle colonne comme message à la table de données. Je vais appeler cette nouvelle colonne « Hydronium ». J'ajouterai une formule après sa création. Bien sûr, je pourrais l'ajouter lors de la création de la colonne. Je vais également stocker la référence d'objet de colonne résultant du code dans une variable. Je l'appellerai simplement HYD, hyd pour hydronium. J'attribuerai le résultat de l'envoi d'un message à dt, car c'est dans cette variable que nous avons stocké la référence d'objet de données de test. J'envoie donc le message à dt « new column », puis j'ouvre les parenthèses et la chaîne de caractères. Le seul argument requis pour une nouvelle colonne est le nom de la colonne, « Hydronium ». Je lance l'exécution. Stocker ce résultat dans cette variable m'évite de retaper le nom complet « Hydronium ». Je n'ai donc pas eu à stocker cette référence d'objet. Je peux toujours communiquer avec la colonne. Mais cela m'évite un peu de saisie grâce à ce nom abrégé. Supposons maintenant, comme je l'ai mentionné, que je souhaite ajouter une formule à cette colonne. Je vais donc passer à une nouvelle ligne. Je veux éviter de réexécuter accidentellement le script et de créer une deuxième colonne « Hydronium ». Je vais donc commenter cette première ligne. J'envoie un message à cette variable « hyd ». Ce message est « set formula ». Je vais élever la formule à la puissance du pH négatif, donc « eleve to », puis j'ouvre les parenthèses (< minus ) et j'utilise l'opérateur de portée deux-points, car je fais référence à la colonne « pH », par sécurité, au cas où une autre variable nommée « ph » circulerait dans mon espace de noms global. Je n'utilise pas « Noms par défaut ici », même si cela serait recommandé en pratique. Je vais donc saisir ce point-virgule et exécuter cette ligne du script. Le message scriptable apparaît à nouveau dans le journal. Mais nous pouvons examiner la table et constater que ces valeurs ont été renseignées. Il existe d'autres possibilités pour expérimenter avec nos colonnes et nos lignes. Supposons que je souhaite colorer les cellules d'une table de données pour signaler les valeurs dépassant un certain nombre. Je vais donc ouvrir une nouvelle ligne dans l'éditeur de script. Je vais créer une variable appelée « callout ». Je vais lui attribuer le résultat de la table de données stockée dans dt recevant le message « get rows where ». Ma comparaison booléenne sera alors : les valeurs de la colonne « pH » sont supérieures à. J'exécuterai donc cette ligne. Vous pouvez voir que « rows » et « get rows where » me renvoient un vecteur de colonnes contenant les numéros de lignes. J'enverrai ensuite un message à « pH ». Comme cette référence d'objet colonne n'est pas stockée dans une variable, je vais simplement y faire référence par son nom. pH va donc recevoir le message « color cells ». Voici un autre message que nous pouvons envoyer à une colonne. J'utiliserai le nom de la couleur comme premier argument. Il y a aussi des valeurs d'index et vous pouvez utiliser les valeurs RVB. J'utiliserai le nom comme une chaîne de caractères. Je vais donc colorer ces cellules en rouge. Le deuxième argument est : quelles cellules souhaitez-vous colorer ? Vous pouvez colorier la colonne entière ou fournir les numéros de ligne. J'utiliserai donc la variable Callout, qui stocke les lignes où pH est supérieur à trois. J'exécuterai uniquement cette ligne. Au fait, remarquez que j'ai oublié de mettre un point-virgule. Cela montre que ce point-virgule final n'est pas nécessaire. Il ne l'est que lorsque j'ai d'autres arguments. Si nous examinons maintenant la table de données, vous pouvez voir que ces quatre cellules ont été colorées en rouge. Cela peut être intéressant si vous disposez d'une table Big Data avec des limites de spécification sur certaines colonnes. Vous pouvez colorer les cellules en fonction de ces limites pour les éléments hors spécifications, par exemple, afin de les signaler visuellement dans la table de données avant même de commencer à consulter les graphiques. Colorier les cellules n'est pas obligatoire, mais c'est une option. Dans cette démonstration, nous avons vu un exemple de création d'une table de données avec une colonne, d'ajout d'une colonne à cette table et de quelques manipulations possibles avec les colonnes et les lignes.
J'ai essayé d'exécuter la propriété Set sans "Eval", cela fonctionne toujours. (Utilise actuellement JMP 16.2)
:pH << Set Property( "Meter Calibration2", Format( Today(), "m/d/y" ) );
