
Questa dimostrazione illustrerà come gestire le colonne di dati e le righe di una tabella dati. Userò uno script per creare una nuova tabella dati con una colonna per iniziare. Quindi, nel diario del corso, nella sezione "Crea nuova tabella dati e colonna". Come potete vedere, stiamo usando la funzione "Nuova tabella". Memorizzeremo il riferimento all'oggetto tabella dati che verrà creato nella variabile dt. La tabella si chiamerà "Dati di test". Avrò una singola colonna chiamata pH. Il tipo di dati sarà numerico e il tipo di modellazione sarà continuo. Quindi userò l'argomento "Valori", che potrei anche dire "Valori impostati" (entrambi saranno sinonimi), per popolare la tabella dati utilizzando l'operatore indice, che è un operatore infisso. Quindi, conteremo da uno a sette con incrementi di uno. E poiché sto fornendo questi valori, questo sarà il numero di righe che questa tabella dati avrà. C'è un argomento facoltativo per aggiungere un numero specificato di righe che potrei usare se inizialmente non stessi popolando i valori. E vedrai anche se JMP scrive uno script per una tabella dati con quel messaggio di script get, che includerà l'argomento per aggiungere le righe. Specificheremo anche un formato usando l'argomento decimale fisso con un campo con tre cifre decimali. Attiveremo l'opzione di blocco sulla colonna in modo che non possa essere modificata senza sbloccarla. E useremo l'argomento di controllo dell'intervallo per assegnare quella proprietà alla colonna. E la sintassi qui LELE() sta semplicemente dicendo che è minore o uguale al valore nella colonna è minore o uguale a. E infine abbiamo un esempio dell'argomento di proprietà set, dove stiamo impostando la proprietà dei limiti di specifica. E poiché esiste più di un'opzione per indicare i limiti di specifica, abbiamo un elenco dei tre limiti: il limite di specifica inferiore, il limite di specifica superiore e il target. E ricordate anche che tutti questi argomenti facoltativi per la nuova colonna possono essere inviati come messaggi alla colonna dopo la sua creazione o, come vediamo qui, come argomenti per la nuova colonna. Quindi eseguirò lo script. E potete vedere nel log qui sotto che abbiamo creato questa istanza di un oggetto tabella dati chiamato dati di test. E ovviamente, questo è ciò che vedrei se passassi il mouse sulla variabile dt nel mio script. E ho la tabella dati con una singola colonna e sette righe. E possiamo vedere tutti gli elementi dello script indicati nella tabella stessa. Quindi, per prima cosa, so che il tipo di dati è numerico perché vedo che l'icona del tipo di modellazione indica che è continuo. E il tipo di modellazione continuo accetta solo dati numerici. Inoltre, i valori numerici sono giustificati a destra. Se i numeri fossero trattati come caratteri, sarebbero giustificati a sinistra. Se diamo un'occhiata alle icone nel pannello delle colonne, c'è l'icona del lucchetto, che indica che ho bloccato la colonna. Il piccolo segno di spunta indica il controllo dell'intervallo. L'asterisco indica un numero qualsiasi di proprietà aggiuntive che non hanno simboli univoci. Quindi, per accedere alla finestra di dialogo delle informazioni sulla colonna, ovviamente, ci sono diversi modi. Possiamo usare una scorciatoia cliccando su questo asterisco. E vediamo che quella proprietà è "limiti di specifica". Potrebbero esserci, ancora una volta, più di una proprietà elencata in questo menu a discesa. E posso selezionarla. E questo mi porta alle informazioni sulla colonna. Naturalmente, possiamo anche selezionare la colonna e usare il menu delle colonne o fare clic con il pulsante destro del mouse sulla colonna e selezionare "informazioni sulla colonna". Quindi ci sono i limiti di specifica con i valori indicati nell'argomento della proprietà impostata. Abbiamo anche quel controllo di intervallo. E ancora, è "minore o uguale", "minore o uguale" - quel LELE è indicato nella sintassi generica - e poi abbiamo i valori effettivi. Qui possiamo vedere che la colonna è stata bloccata. Il tipo di dati è numerico. Il tipo di modellazione è continuo. E il formato è quel decimale fisso con la larghezza del campo che è il numero massimo di caratteri che possono essere visualizzati nella colonna e tre cifre decimali. Quindi annullerò la finestra di dialogo delle informazioni sulla colonna. E andrò avanti e deseleziono la colonna pH. Ora, c'è un'opzione nel menu a discesa delle proprietà della colonna per impostare la propria proprietà utente della colonna. E se lo si fa in modo interattivo, l'opzione del menu si chiama semplicemente Altro. E si nomina la proprietà e il valore che assumerà. Ho uno script nel journal chiamato Aggiungi proprietà colonna utente. E lo stiamo inviando alla colonna pH. Questa colonna utente si chiamerà correttamente Calibrazione misuratore. E voglio solo inserire la data odierna formattata come stringa di caratteri mese, giorno, anno. E quindi il testo qui, il secondo argomento per impostare la proprietà, in questo caso, uso la funzione Oggi per recuperare il numero di secondi trascorsi dalla mezzanotte di gennaio al momento in cui eseguo questa riga di codice. Lo racchiudo nella funzione di formato e specifico il formato della stringa di caratteri in cui voglio che venga visualizzato. E di nuovo, questo potrebbe essere un processo di tentativi ed errori quando si scrive uno script. Se fornissi solo ciò che ho evidenziato - e credo di averlo fatto - c'è... sì. Volevo assicurarmi di aver specificato il numero corretto di parentesi. Eseguo questo, quello che ho appena evidenziato. Quindi lo seleziono. E premo Ctrl+R. E vedo che quella stringa di caratteri appare esattamente come la voglio nel log. Quindi potrei eseguire questo messaggio di proprietà impostata, questo codice con il messaggio di proprietà, inizialmente senza la funzione eval. E se lo facessi, quello che vedrei quando guardo nelle informazioni della colonna per la proprietà di calibrazione del misuratore è letteralmente il codice. In realtà non verrebbe valutato. Quindi la proprietà impostata potrebbe non valutare il suo secondo argomento, richiedendo di racchiuderlo nella funzione eval. Ora, eseguendolo al di fuori del messaggio di proprietà impostata, questo semplicemente... lasciatemi procedere con l'esecuzione... restituirà esattamente la stessa cosa. Quindi questo potrebbe essere qualcosa in cui inizialmente si ha solo il formato della funzione Oggi e poi si scopre che non ha restituito quello che si voleva nelle proprietà della colonna. E quindi ci si renderebbe conto che è necessario aggiungere quella eval. Quindi non selezionerò nulla di tutto ciò ed eseguirò questo script. Il messaggio che ricevo qui nel log è semplicemente "scriptable". Significa che ho fatto qualcosa che era scriptabile. Quindi a volte vi capiterà di eseguire del codice e che ciò che vi aspettavate non accada. E potreste vedere proprio questo messaggio "scriptable". Quindi dovete cercare di capire cosa è andato storto in quel caso, perché la parola "scriptable" non fornisce informazioni. Ma nel nostro caso, andiamo avanti e andiamo alla tabella. E di nuovo, possiamo semplicemente accedere alle informazioni sulla colonna cliccando su questo asterisco. E lo faccio in questo modo per mostrare che ora abbiamo un'altra voce in quel menu. Quindi, di nuovo, tutte le proprietà della colonna che non hanno icone univoche verranno visualizzate in questo menu asterisco. E farò clic su "Calibrazione contatore" in modo che quando si apre la finestra di dialogo delle informazioni sulla colonna, quella sia la proprietà selezionata. Ed ecco il risultato valutato dell'utilizzo della funzione Oggi e della formattazione come stringa di caratteri. Quindi lo annullerò. E userò la finestra dell'editor di script della proprietà Aggiungi colonna utente per sperimentare ancora un po' con questa tabella. Non deve essere così ampia ora. Quindi voglio inviare una nuova colonna come messaggio alla tabella dati in questo momento. E chiamerò questa nuova colonna Hydronium. E aggiungerò una formula dopo averla creata. E ovviamente, potrei aggiungere la formula come parte della creazione della colonna. E memorizzerò anche il riferimento all'oggetto colonna che risulta dal codice in una variabile. E la chiamerò semplicemente HYD, hyd per hydronium. E assegnerò a questo il risultato dell'invio di un messaggio a dt, perché è lì che abbiamo memorizzato il riferimento all'oggetto dati di prova. Quindi invio il messaggio a dt nuova colonna e poi apro parentesi e stringa di caratteri. L'unico argomento richiesto per la nuova colonna è il nome della colonna, Hydronium. E lo eseguo. E memorizzare il risultato in questa variabile significa che non devo digitare di nuovo l'intero nome Hydronium. Quindi non ho dovuto memorizzare quel riferimento all'oggetto. Posso comunque comunicare con la colonna. Ma questo mi risparmia un po' di digitazione per averle assegnato quel nome abbreviato. Ora, supponiamo, come ho detto, di voler aggiungere una formula a questa colonna. Quindi andrò a una nuova riga. E voglio stare attento a non eseguire di nuovo l'intero script per errore e creare una seconda colonna Hydronium. Quindi commenterò questa prima riga. E invierò un messaggio a quella variabile hyd. E il messaggio è set formula. E la formula la eleverò alla potenza del pH negativo, quindi eleverò a... e poi aprirò le parentesi... meno... e userò l'operatore di scoping con i due punti perché mi riferisco alla colonna pH, per sicurezza, nel caso ci sia un altro nome di variabile ph in circolazione nel mio namespace globale. Non sto usando Names Default to Here, anche se, in pratica, lo consiglierei come best practice. Quindi digiterò quel punto e virgola ed eseguirò questa riga dello script. Di nuovo, vediamo il messaggio scriptabile nel log. Ma possiamo esaminare la tabella e vedere che quei valori sono stati popolati. Ci sono un paio di altre cose con cui sperimentare lavorando con le nostre colonne e righe. Supponiamo di voler colorare le celle in una tabella dati per contrassegnare i valori che superano un certo numero. Quindi andrò a una nuova riga nella finestra dell'Editor script. Creerò una variabile chiamata callout. E le assegnerò il risultato della tabella dati memorizzata in dt che riceve il messaggio "get rows where". E quindi il mio confronto booleano sarà: i valori nella colonna pH sono maggiori di". Quindi eseguirò solo quella riga. E come potete vedere, rows e "get rows where" mi restituiscono un vettore colonna dei numeri di riga. E poi invierò un messaggio a pH. E poiché quel riferimento all'oggetto colonna non è memorizzato in una variabile, mi riferirò ad esso semplicemente per nome. Quindi pH riceverà il messaggio "color cells". Questo è un altro messaggio che possiamo inviare a una colonna. Userò il nome del colore come primo argomento. Ci sono anche valori di indice e si possono usare i valori RGB. Userò il nome come stringa di caratteri. Quindi colorerò quelle celle di rosso. E poi il secondo argomento è: quali celle vuoi colorare? Puoi colorare l'intera colonna o puoi fornire i numeri di riga. Quindi userò la variabile Callout, che memorizza le righe in cui il pH è maggiore di tre. Eseguirò solo quella riga. A proposito, nota che ho dimenticato di inserire un punto e virgola. Questo dimostra che il punto e virgola finale non è necessario. Serve solo quando ho argomenti aggiuntivi in arrivo. Se guardiamo la tabella dati ora, puoi vedere che quelle quattro celle sono state colorate di rosso. Quindi questa potrebbe essere una buona idea se hai una tabella dati di grandi dimensioni e hai forse dei limiti di specifica su alcune colonne. Si potrebbero colorare le celle in base a questi limiti di specifica per elementi fuori specifica, ad esempio, per segnalarli visivamente nella tabella dati prima ancora di iniziare a visualizzare i grafici. Non è obbligatorio colorare le celle, ma è un'opzione che può essere utilizzata. In questa dimostrazione, abbiamo visto un esempio di creazione di una nuova tabella dati con una colonna, aggiunta di una colonna a tale tabella dati e sperimentato un po' con alcune delle operazioni che possiamo eseguire con le nostre colonne e righe.
Ho provato a eseguire la proprietà Set senza "Eval", funziona ancora. (Attualmente utilizza JMP 16.2)
:pH << Set Property( "Meter Calibration2", Format( Today(), "m/d/y" ) );
