Altoparlante
|
Trascrizione
|
| Giordano Hiller |
Ciao a tutti. Sono Jordan Hiller e questo discorso è Steal This Code! Tre aggiornamenti per gli script ottenuti dal registro avanzato. |
| |
Ed ecco l'ispirazione per questo discorso. È un libro di Abbie Hoffman, provocatrice e attivista. Sì, ha intitolato il suo libro, Steal this Book, che è un bel titolo. Non sono sicuro che sia un ottimo piano aziendale dare un nome al tuo libro così, ma comunque è molto accattivante. |
| |
Allora perché rubare questo codice? JMP vuole che tu rubi il codice. L'idea è che tu punti e clic e fai la tua analisi in JMP, |
| |
e quel codice dietro il tuo punta e clicca viene salvato. Viene salvato nel registro avanzato e puoi prenderlo e riutilizzarlo. |
| |
E questo è circa il 90% della tua sceneggiatura di produzione. Lo prenderai e lo riutilizzerai in modo che tu possa farlo |
| |
automatizza le attività comuni e fallo con un clic di un pulsante, invece di una sequenza di punti e clic. Quindi questo è l'intero obiettivo qui, salverai |
| |
script dal registro avanzato e questa è l'ossatura, lo scheletro del tuo script di produzione. |
| |
Rimane circa il 10% che devi scrivere tu stesso, e questo è il nostro obiettivo per questo discorso. Parleremo di parte di quel tessuto connettivo che tiene insieme gli script di produzione. |
| |
Quindi, in questo discorso, mi concentrerò con te, sai, non tanto sul nocciolo della sintassi, |
| |
molto di più sul quadro generale, e questo è in linea con quello che penso sia un buon modo per imparare la programmazione JSL. È molto meglio prendere il codice esistente e imparare dall'esempio. Usa quel codice. |
| |
Trova quello snippet che fa quello che vuoi fare. Lo troverai nella community degli utenti di JMP o forse nella guida allo scripting. |
| |
E basta copiarlo e adattarlo per il tuo uso. Non devi conoscere tutte le complessità della sintassi. In questo modo andrai molto lontano. L'apprendimento della sintassi arriva man mano che acquisisci esperienza. |
| |
Quindi parleremo di tre casi di studio su cose che puoi fare per migliorare il tuo codice dal registro avanzato, ma prima facciamo una revisione di JSL. Forse è un'introduzione ad alcune basi JSL per alcuni di voi. |
| |
Quindi la cosa importante da sapere su JSL se stai iniziando è che tutto è un oggetto. Tutto ciò che tu |
| |
vuoi fare qualcosa è un oggetto, quindi include tabelle di dati e colonne in tabelle di dati e piattaforme, come la piattaforma di distribuzione, il generatore di grafici, Fit Y by X, |
| |
e le segnalazioni che provengono da quelle piattaforme. Quindi, quando hai degli oggetti, il modo in cui operi su di essi è inviare loro dei messaggi. Quindi gli oggetti ricevono messaggi. Ecco un esempio davvero semplice che ho copiato dal registro avanzato. |
| |
Apri la tabella dei dati di Big Class nella directory dei dati di esempio ed esegui una semplice analisi della distribuzione, giusto. E questo è l'aspetto del codice, appena copiato dal registro. |
| |
Ora. |
| |
Quello che vogliamo fare, la prima cosa che vogliamo fare è nominare la tabella dei dati. Dagli un nome, e per questo ho preso il codice dalla riga cinque qui e l'ho migliorato. IO |
| |
aggiunto questo bctable= prima del resto, prima della parte aperta dell'istruzione, va bene. E quello che fa è, quando apriamo quella tabella di dati, creiamo questo nome, bctable. Sai, ho scelto bctable, vedrai dt nella documentazione. Usa quello che vuoi, questo è assegnato da te. |
| |
Quindi eseguiamolo evidenziandolo e facendo clic sul pulsante Esegui, aprendo Big Class e assegnando contemporaneamente il nome bctable. Ora la virtù di farlo, perché è importante, è perché ora ho questo |
| |
maniglia. È un hook che posso usare nel codice in seguito, bctable. Ogni volta che dico bctable parlo di Big Class. |
| |
COSÌ |
| |
ecco la riga successiva, ma comando di distribuzione, e ho modificato anche quella. E sai, prima qui dal registro che è un comando di distribuzione nudo. Non ha... |
| |
non punta a una tabella di dati. Quando lo esegui in questo modo, JMP lo eseguirà semplicemente sulla tabella dati che ha lo stato attivo, |
| |
la tabella dei dati corrente, che sembra essere di grande classe, perché l'hai aperta poco prima, ok. Ma è sempre bene essere espliciti. È una buona idea dire esplicitamente su quale tabella di dati vuoi operare, quindi lo eseguiremo in questo modo. |
| |
bctable, e poi le doppie frecce e poi i comandi di distribuzione. Ecco cosa abbiamo aggiunto, bctable con le doppie frecce. |
| |
E questa è la sintassi per inviare un messaggio. Quindi stiamo inviando il messaggio di distribuzione sulla destra alla tabella dei dati, da cui prende il nome bctable, sulla sinistra. E puoi vedere che è Big Class quando passo il mouse su bctable. Quindi gestendo il tutto, |
| |
otteniamo il rapporto di distribuzione |
| |
che volevamo. |
| |
Ora ecco... possiamo fare un ulteriore passo avanti e, spesso, dobbiamo farlo. Creeremo un nome per la piattaforma mentre la eseguiamo, quindi |
| |
ecco una linea che incorpora sia la doppia freccia che l'uguale, va bene. Quindi, uh... leggiamo questo da destra a sinistra. Prenderemo quel messaggio di distribuzione e lo invieremo a bctable. |
| |
E il risultato di tutto questo, che è la piattaforma, lo salveremo in questa variabile che chiamo distplat. |
| |
Facciamolo funzionare. |
| |
Va bene, sembra uguale, ma la differenza è che ora ho questa variabile JSL distplat che posso usare in seguito nel mio codice. |
| |
Per cosa lo useresti? Potresti usarlo per aggiungere opzioni di triangolo rosso all'output, quindi qui portiamolo ... |
| |
portiamo quel rapporto di distribuzione dove puoi vederlo. |
| |
E prenderemo quell'oggetto distplat, quella è... quella è la piattaforma di distribuzione. |
| |
Vedete, passandoci sopra, e percorriamo questa linea. Attiva il normale grafico del quintile nella piattaforma di distribuzione. Eccolo. |
| |
Va bene. |
| |
L'ultimo passo è prendere la piattaforma, portare questo oggetto qui e a |
| |
ottenere un report da esso, un oggetto report. Questa è questa linea. Invia il messaggio di report all'oggetto piattaforma e ora otteniamo un oggetto report. |
| |
E dobbiamo farlo se vuoi accedere a questi valori nel tuo codice -- qualsiasi numero o grafico o elemento grafico nel report -- ne avrai bisogno, ok. Questo oggetto rdistplat. Quindi eseguilo ancora una volta, rdistplat. |
| |
L'ho eseguito e non vedi nulla di visibile, ma quello che è successo è che ora ho questo oggetto, rdistplat. Dice che è una casella di visualizzazione e più avanti parleremo di come puoi usarla per accedere ai numeri qui nel rapporto. |
| |
Ok, vado a cancellare il mio registro |
| |
e inizia con il nostro |
| |
casi studio. |
| |
Quindi la prima tecnica che impareremo è ripetere lo stesso comando più e più volte su colonne diverse nella tabella dati, iterando su colonne con loop usando il comando for each. COSÌ |
| |
questa è un'esigenza molto comune, a volte è solo qualcosa di semplice che devi fare, come cambiare il formato o il tipo di modellazione di una colonna. |
| |
Potrebbe essere molto complesso come |
| |
prendere una... prendere una trasformazione della colonna ed eseguire un grafico di controllo e fare qualcosa con quel grafico di controllo. Quindi sì, scala; questa tecnica scala. |
| |
Ecco come raggiungeremo questo obiettivo nel codice JSL. Puntiamo e clicchiamo prima, giusto, facciamo quello che vogliamo fare. Fallo per una singola colonna, quindi prenderemo quel codice usando il registro avanzato, |
| |
e poi questo è lo scheletro della nostra sceneggiatura. E lo modificheremo per eseguire il ciclo su tutte le colonne su cui vogliamo eseguire quell'azione. |
| |
Il metodo che useremo per il ciclo for, per l'iterazione, è for each ed è stato introdotto in JMP 16, quindi questa tecnica non funzionerà nelle versioni precedenti di JMP. |
| |
Questo utilizza anche un concetto chiamato liste JSL, quindi ne parleremo un po' anche. |
| |
Ok, sto per iniziare |
| |
in JMP, vorrei iniziare dalla finestra iniziale. |
| |
E io... mi lascerò solo controllare il registro, per assicurarmi che sia pulito. No, devo rimuovere una cosa, cancellare il registro. Ok, quindi puntiamo e clicchiamo su ciò che vogliamo fare. Aprirò una tabella di dati chiamata sc20. |
| |
Questa tabella dati è a tua disposizione nei materiali di presentazione che troverai online. |
| |
E guardando questa tabella di dati, ha una colonna ID e poi ne ha circa 20 |
| |
colonne di dati. Questi hanno molti, molti decimali, troppa precisione e voglio troncarli a due decimali. Quindi cambiamo il formato in modo da mostrare solo le prime due cifre decimali dei dati. |
| |
Questa è una semplice operazione punta e clicca. Fare clic con il tasto destro, andare nelle informazioni della colonna, |
| |
e cambieremo il formato di visualizzazione dal migliore predefinito per correggere il decimale con due posizioni. |
| |
OK, e ora l'abbiamo fatto per NPN1, abbiamo anche altre 19 colonne per le quali vorremmo farlo. |
| |
Esaminiamo quindi il log migliorato. |
| |
E questo è tutto, questo è il codice di cui abbiamo bisogno per ottenerlo cambiando il formato per una colonna, NPN1, giusto. E poi per riutilizzarlo, vai al triangolo rosso e puoi salvare lo script negli appunti o anche in una nuova finestra di script. |
| |
Passerò a un altro file, dove ho svolto un po' di lavoro e quindi possiamo scavare un po' di più. |
| |
Va bene. |
| |
Quindi le prime due righe qui... tre righe, questo è il codice del log. Va bene, la prima cosa che facciamo è aprire la tabella dei dati. |
| |
E potresti aver notato che ho modificato un po ', ho eliminato il mio lungo nome di percorso, il mio lungo percorso di directory a questo file. |
| |
Se lo gestisci in questo modo, |
| |
funzionerà finché la tabella dati JMP, sc20, si trova nella stessa directory di questo file JSL. Quindi è proprio come un percorso di file locale in questa stessa directory in cui ti trovi attualmente. |
| |
Ad ogni modo, dal registro stiamo solo aprendo la tabella dei dati, e poi siamo qui, applicando quel cambio di formato, decimale fisso 10 caratteri due decimali. |
| |
La tabella... il riferimento alla colonna qui a sinistra è un modo per indirizzare una colonna. Esistono diversi modi, ma questo è molto comune che vedrai con i due punti. Riferimento tabella...riferimento...riferimento sul lato sinistro dei due punti e il nome della colonna sul lato destro dei due punti. |
| |
Quindi questo è di nuovo direttamente dal registro. |
| |
JMP utilizza questa modalità nel registro per indirizzare la tabella dati. Penso che sia meglio fare quello di cui abbiamo parlato, è meglio dare il nome JSL mentre lo apri, e poi usare quel nome JSL in futuro. Quindi, invece di questa faccenda prima dei due punti, l'ho cambiata in dt. |
| |
Quindi ecco lo stesso codice, solo...solo aggiustato un po', e quando lo eseguo, sì, ha l'effetto giusto. Apre la tabella dei dati e it |
| |
cambia il formato in due cifre decimali. Ok, quindi sì, ora che ce l'abbiamo, è una cosa abbastanza facile |
| |
cambia tutte le altre 19 colonne, giusto. Ecco... ecco NPN1, e poi posso semplicemente copiare quella riga e cambiare tutti e scriverla altre 19 volte. |
| |
Sì, certo che è inefficiente, e una delle grandi cose della programmazione è che tu ... non devi fare la stessa cosa più di una volta, giusto. Quindi diventa più facile da mantenere se noi... se lo scriviamo solo una volta, invece di scriverlo 19 volte, 20 volte. |
| |
Quindi ecco come lo facciamo. La prima cosa che facciamo è ottenere un elenco di tutte le colonne su cui vogliamo operare. |
| |
E quando dico una lista, non intendo solo una lista generica. Sto parlando di un elenco JSL, sto parlando di una particolare struttura dati che usi quando programmi in JSL. |
| |
Un elenco è solo un paio di oggetti contenuti in un contenitore ed è così che lo usiamo. Quindi ecco tre modi per creare un elenco di oggetti colonna. |
| |
Il primo modo è farlo manualmente, è semplicemente digitare tutto. Quindi, se dovessi eseguire questo, |
| |
tre riferimenti di tabella... tre riferimenti di colonna, NPN1, PNP1, PNP2. |
| |
Nota le parentesi graffe sia nel mio codice che anche quando passo il mouse su quella variabile CNames. Quando vedi quelle variabili ricci ... quelle parentesi graffe, sai che hai a che fare con l'elenco in JSL. |
| |
Ok, questo è un modo per ottenere una lista. Parliamo di un paio di altri modi. Questo è quello che useremo per questo esempio, in definitiva. Questo è |
| |
dicendo, ehi, prendi tutte le colonne continue nella mia attuale tabella di dati, beh nella tabella di dati che chiamo qui, dt. Quindi oggetto messaggio, crea un nuovo elenco. |
| |
Quindi eseguiamo questo. |
| |
E ora se passo il mouse su CNames, vedrai che è quello che vogliamo. Questa è la lista di tutti i 20 su cui vogliamo operare. |
| |
Ok, e l'ultimo modo per farlo è lasciare che l'utente selezioni quali colonne nella tabella dei dati. Sembra così. Ne selezionerò solo due. Selezioniamo IVP e PNP4, due colonne selezionate. |
| |
E se eseguo questo, |
| |
otteniamo un elenco con solo quelle due colonne selezionate dalla tabella dei dati. |
| |
Va bene, quindi, tuttavia, ottieni quell'elenco, il lavoro successivo è applicare quella riga di formattazione a ciascuno degli elementi nell'elenco, e questo si chiama looping o iterazione. |
| |
Quindi ecco il vecchio modo di farlo. Utilizza il comando for in JMP. Questo è quello che faresti prima di JMP 16 e l'ho messo qui, come riferimento nel caso tu sia ancora su JMP 15. Ma, |
| |
sai, è un po' complicato e proibitivo cercare nuovi utenti, quindi c'è una cosa molto più compatta e leggibile che puoi fare se stai usando un elenco in JMP 16. Se voglio ripetere un'azione su ogni elemento di un elenco, posso usarlo per ogni comando. |
| |
Va bene, e diamogli un'occhiata e vediamo cosa sta facendo. Prende tre argomenti, gli argomenti sono separati da virgole, li prenderemo da destra a sinistra. |
| |
L'ultimo argomento è quel comando format, giusto, applicando il formato, e invece di farlo per dt NPN1, invece di farlo per una colonna, ho messo un segnaposto qui e ho scelto la voce dell'elenco; Scegliete quello che volete. |
| |
Bene, questa è solo una parola, un nome di variabile, tu lo scegli. Ho scelto la voce dell'elenco. Quindi questo è il nostro segnaposto, e questo è il comando che vogliamo eseguire su ogni elemento dell'elenco. Quale lista? Questa lista, va bene. Quindi questa è la nostra lista, questa è la seconda |
| |
discussione. E poi il primo argomento è il segnaposto, giusto. Ci dice che stiamo usando quel segnaposto per contenere i valori delle cose nell'elenco. |
| |
È tra parentesi graffe, quindi assicurati di usarlo se riutilizzi questo codice. |
| |
Ecco come appare l'intera cosa, invece di più di 20 righe di codice, ho solo tre righe di codice, e questo include l'apertura della tabella dei dati, |
| |
ottenere un elenco di nomi di colonne e quindi ripeterlo ... ripetere quell'azione per tutte le 20 colonne continue. Per eseguire il tutto, o vedi come appare. |
| |
Ed eccolo lì. Ora ognuna di queste colonne |
| |
ha due cifre decimali visualizzate nel formato. |
| |
Ok, quindi quello era un esempio molto semplice di usare for each per fare qualcosa di molto semplice |
| |
su una colonna. |
| |
Lasciate che vi mostri un esempio un po' più interessante. |
| |
Ecco un esempio in cui, per lo stesso set di dati, per sc20, |
| |
Creerò una carta di controllo per ogni colonna e aggiungerò quelle carte di controllo a un diario e salverò l'intera dannata cosa come PDF, okay. COSÌ |
| |
usa lo stesso per ciascuno e ha gli stessi primi due argomenti, sai, l'elemento dell'elenco è il primo, un nome dell'elenco per il secondo. Ma ora ho un sacco di codice come terzo elemento ... come terzo argomento per ciascuno. |
| |
Quindi eccoci qui. Eseguiamo l'intero script. |
| |
Aprire, eseguire un mucchio di carte di controllo, metterle insieme in un diario. E ora, se guardo fuori sul mio desktop, ho creato questa cosa, il mio report.pdf, che ha tutti quei grafici di controllo, pagina uno, e le loro interruzioni di pagina per separarli. Quindi pagina uno, pagina due, pagina tre. |
| |
Quindi puoi guardare anche questo esempio nel tuo tempo libero. È incluso nei materiali di presentazione. |
| |
Ok, e questa è la nostra prima tecnica di cui stiamo parlando. Cancelliamo il registro per la nostra prossima tecnica. |
| |
Ok, estrazione di un valore da un report. Questo succede molto in JSL. Fai una sorta di analisi, forse è una distribuzione, forse è una regressione, devi |
| |
prendi qualcosa, raccogli qualcosa da lì. Forse è una media o una mediana. Forse è un coefficiente di pendenza della regressione o un valore P. |
| |
Quindi questo è il nostro lavoro, e la parte difficile di questo è che i report hanno una struttura gerarchica, altamente nidificata, e può essere un po' complicato percorrere quella gerarchia, viaggiare lungo quell'albero per trovare esattamente quello che vogliamo. Quindi ti insegnerò un trucco. |
| |
Il trucco è che puntiamo e clicchiamo lungo l'analisi, come al solito, e poi la cosa che vogliamo afferrare, |
| |
Cambierò il colore del testo in rosso, solo un piccolo cambiamento di formattazione. E poi, quando salviamo quello script nel registro, lo useremo per imparare come indirizzare quell'elemento rosso |
| |
in JSL. Quindi affrontiamolo insieme. |
| |
Di nuovo in JMP. |
| |
Aprirò Big Class, il buon vecchio Big Class ed eseguiamo una distribuzione sulla colonna dell'altezza. |
| |
Bene, ecco il mio rapporto di distribuzione da cui voglio estrarre qualcosa. Diciamo che è la mediana, in questo caso la mediana è 63, e la inserirò in una variabile JSL in modo da poterla riutilizzare in seguito, e sai scrivere con essa o fare un po' di matematica su di essa o qualcosa del genere . |
| |
Ecco il trucco per scoprire come... indirizzare quel numero 63. |
| |
Cambia il colore o, sai, il carattere o qualsiasi altra cosa di questa cosa che voglio prendere. Quindi come farlo se non l'hai mai visto, vale la pena saperlo. |
| |
C'è un pulsante sulla barra degli strumenti per le proprietà, credo che sia un nuovo pulsante in JMP 16. |
| |
Quindi, se attivi le proprietà per questo report. |
| |
Possiamo percorrere questo albero e trovare ciò di cui abbiamo bisogno. Quindi guarda questo. |
| |
numero col box, a destra. E nota che quando clicco su diverse parti del rapporto, il file corrispondente |
| |
elemento, il tipo di casella di visualizzazione che è, è evidenziato nel pannello delle proprietà. |
| |
Ok, quindi possiamo vedere che questa cosa che ha tutti questi risultati è una casella numerica con tutti questi numeri dentro e, tipo, ti ho detto che prenderemo questa cosa e cambierò il colore del testo al rosso. |
| |
Proprio così. |
| |
Ora chiuderò il pannello delle proprietà. |
| |
C'è il rapporto e inviamo questo script al registro avanzato. |
| |
Triangolo rosso, salva lo script nel registro. |
| |
E ora visualizza quel registro. |
| |
Questa è la parte che vogliamo. Ha, sai, il comando di distribuzione con la parte che cambia il colore del testo di quella mediana e quelle altre statistiche in rosso. Quindi diamo un'occhiata un po' più in dettaglio ora. |
| |
Ok, quindi ecco quel codice...lo stesso codice dal registro avanzato. L'ho appena copiato qui e l'ho formattato un po', così possiamo parlare di più di ciò di cui abbiamo bisogno. |
| |
Quindi l'intera ragione per cui l'abbiamo fatto era per ottenere questa parte, che ora interpreteremo, bene. Usa send to report e, al suo interno, dispatch. |
| |
E qui ci concentreremo davvero sui quattro argomenti da inviare. Abbiamo bisogno dei primi tre, il quarto argomento sta cambiando il colore, non è proprio quello che ci interessa. Siamo interessati ad affrontare il display box, l'elemento che vogliamo, ok. COSÌ |
| |
questo primo argomento è la navigazione. Ci dice, vai giù per visualizzare le caselle, queste sono in realtà caselle delineate, vai giù per delineare le caselle |
| |
Qui. Quindi diamo un'occhiata a quel rapporto. Ancora una volta sono sicuro che hai notato in JMP che in un report hai questi livelli di annidamento, giusto, e io ho solo un... |
| |
una distribuzione della scatola del contorno esterno. All'interno c'è l'altezza di una casella di contorno e, all'interno di essa c'è un quantile di casella di contorno, e all'interno di quel quantile c'è la roba che devo estrarre. |
| |
Quindi questo è quello che mi sta dicendo. Mi sta dicendo di scendere da quell'albero. Avevo solo bisogno dell'altezza e dei quantili e questo lo identificherà per noi. |
| |
Bene. I prossimi due argomenti ci dicono qualcosa su questo...questo elemento che stiamo provando, che abbiamo fatto diventare rosso. Ci dice... il terzo dice cos'è, è una casella numerica, l'abbiamo visto nelle proprietà. |
| |
E il secondo argomento ci dice il titolo |
| |
di quel numero col box. Questo è vuoto. Questo non ha un titolo e va bene. Possiamo... possiamo ancora usare queste informazioni per ottenere quei dati, quindi a volte vedrai un titolo qui, a volte no. |
| |
Ok, ora che abbiamo questo, prenderemo quell'informazione e la useremo |
| |
per estrarre la mediana. |
| |
Ecco il codice che lo fa. Inizia qui sulla linea 23 e passa attraverso la linea 29. |
| |
Stiamo aprendo di nuovo la tabella dei dati, |
| |
nominare la distribuzione, eseguire la distribuzione continua. |
| |
Noterai che non abbiamo nessuna di quelle spedizioni e mandiamo a segnalare, questo perché non abbiamo bisogno di trasformarlo in rosso nella nostra sceneggiatura di produzione. |
| |
Quindi sì, esegui l'analisi della distribuzione, dai un nome alla piattaforma. |
| |
Questo è importante, devi ... stai accedendo al livello del rapporto. Lo stai estraendo con questa riga, quindi stai creando rdist, questo oggetto report. |
| |
E poi, questa è la linea in cui avviene la magia. Questo è dove lo stiamo afferrando |
| |
quel valore mediano, assegnandolo alla variabile JSL, mdn, e per questo lo scriveremo nel log. Quindi vi dirò un po' di più su questo, ma prima eseguiamolo solo una volta del tutto, così vedete cosa fa. |
| |
Eseguirò la riga 23, whoops, facciamolo in questo modo invece. Eseguiamo la riga... le righe da 23 a 29. |
| |
Eseguita la distribuzione. Non è rosso e abbiamo estratto la mediana, ora è memorizzata in mdn, puoi vedere che il valore per quella variabile è 63. |
| |
la mediana è 63. Perfetto. |
| |
Bene. |
| |
Quindi ecco quella linea in cui stiamo estraendo il |
| |
il valore mediano, quel numero 63 dal rapporto. |
| |
Diamo un'occhiata a quello. Lo chiamerò qui, così possiamo farlo |
| |
fare riferimento a questo, come noi, mentre lo facciamo. |
| |
Quindi ecco quella linea. È solo di nuovo organizzato, in modo che possiamo guardare ogni elemento separatamente. |
| |
63, il valore mediano del rapporto. |
| |
Ecco come ci arriviamo. |
| |
Questo si chiama pedice...subscriptinig. Quando vedi le parentesi quadre nel codice JSL, significa che stai sottoscrivendo un oggetto. Quell'oggetto è un contenitore di qualche tipo, o caselle di visualizzazione, |
| |
spesso un elenco. Puoi anche sottoscrivere liste in questo modo. Quindi quello che stiamo facendo è, sì, stiamo estraendo elementi nidificati in questo oggetto report. |
| |
La prima cosa che andremo a fare è la casella del contorno dell'altezza. Te lo ricordi, e poi da lì scendiamo alla scatola dei quantili, te lo ricordi. |
| |
E ora siamo nel posto giusto. Dobbiamo solo prendere quello che vogliamo, quello che vogliamo è la cassetta dei numeri, giusto, e perché non ce l'aveva |
| |
un titolo che potremmo usare (quello era quassù, nessun titolo), invece ci riferiamo ad esso per numero. È la prima casella numerica in quella casella di contorno dei quantili. |
| |
Quindi potresti guardare questo e dire a te stesso, beh aspetta un minuto, ci sono dei numeri qui. Anche quella è una cassetta dei numeri, vero? No, in realtà non lo è. È una casella di stringhe e ricorda, puoi controllare tutta quella roba se vuoi. Questo è, ancora una volta, dalle proprietà. |
| |
E se clicco qui, |
| |
casella numerica, casella stringa, casella stringa. Li vedi qui? String...string number, quindi è il primo numero col box. |
| |
E questo prenderà tutti questi numeri. |
| |
Ok, l'ultima cosa che dobbiamo fare è questo pedice. Sottoscrivere in questo modo dice, prendimi il sesto elemento...1, 2, 3, 4, 5, 6. Questa è la mediana; sono 63. E quando eseguiamo questa riga, questo sottoscrive il rapporto; afferra quella mediana, in modo che possiamo riutilizzarla in seguito. |
| |
Quindi c'è un come prendere qualcosa da un rapporto. Ho un altro esempio che condividerò nei materiali di presentazione che avrò |
| |
un elemento che ha un titolo e puoi vedere, puoi usarlo come modello su cui fare il tuo lavoro, se ti imbatti in quella situazione. |
| |
Va bene, l'ultima cosa di cui parleremo è come ottenere input dal tuo utente, la persona che sta eseguendo lo script. |
| |
E lascia che scelgano quale file analizzeranno o anche quale colonna nella tabella dati analizzeranno. Quindi questo è forse il più comune |
| |
cosa che gli sceneggiatori principianti vogliono fare. Sai, ho impostato la mia sceneggiatura per fare qualcosa su una colonna e voglio dare qualcosa ad altre persone nella mia organizzazione |
| |
lasciare che lo facciano da soli su dati diversi, giusto. Quindi se tu...se generalizzi i tuoi script in questo modo per consentire ai tuoi utenti di scegliere un file o una colonna, o entrambi, |
| |
stai generalizzando il tuo copione e ne aumenti notevolmente il valore. Lo darai ad altre persone nella tua organizzazione. Possono replicare il tuo lavoro e farlo rapidamente senza passare attraverso tutti i clic. |
| |
Ok, quindi in questa sezione, è meno un caso di studio e più una lista del bucato. Stiamo andando... Ti mostrerò tre metodi che puoi consentire ai tuoi utenti di scegliere i file e due metodi che puoi utilizzare per consentire loro di scegliere le colonne. |
| |
E inizieremo con i metodi per scegliere i file. Come al solito, inizieremo facendo qualcosa nel registro e poi copiandolo. Ecco ... ecco come appare quando apri Big Class, lo ottieni solo nel registro, apri Big Class. |
| |
dt. Sto usando dt in questo caso, quindi, quando apro Big Class, |
| |
ora ha...dt punta a Big Class, okay. E poi andrei avanti con la mia sceneggiatura di produzione, giusto. |
| |
Ecco il punto, per consentire all'utente di scegliere quale file desidera, tutto ciò che dobbiamo fare è trovare un modo per consentire a dt di puntare a qualcos'altro. |
| |
Scrivi il resto del tuo script, usa dt, e poi all'inizio puoi cambiarlo. dt non punta più solo a Big Class; indicherà qualcos'altro. |
| |
Va bene, e questo è qualcos'altro che viene determinato dall'utente, |
| |
la persona che esegue lo script. Ok, ecco la cosa più semplice che puoi fare, penso, è che puoi...puoi usare questa riga invece di aprire una tabella di dati. Se lo usi all'inizio del tuo script per assegnare dt, |
| |
ciò significa che JMP eseguirà questo script e darà quel dt |
| |
nome a qualunque tabella di dati sia in primo piano. |
| |
Quindi dal punto di vista dell'utente, quello che fanno è aprire una tabella di dati, aprirò sc20 qui e creerò sc20 |
| |
la mia attuale tabella di dati. Lo vedi quassù? Ciò che è elencato in questa finestra è la tabella dei dati corrente. |
| |
E così, se il tuo utente apre una tabella di dati e quindi esegue lo script e quindi incontra questa riga, dt ora punterà a sc20. |
| |
Quindi questo è un metodo piuttosto potente. Il problema è che... richiede all'utente di sapere esattamente cosa fare. Devono sapere che devono prima aprire il file di dati e quindi eseguire lo script. |
| |
Possiamo fare qualcosa di un po' più robusto. Possiamo mostrare loro un selettore di file quando eseguono lo script, in modo che possano navigare attraverso la loro struttura di directory e trovare il file giusto da aprire. |
| |
Si scopre che questo è semplicissimo da fare. Quello che fai è sbarazzarti di tutte le cose qui dentro, ti sbarazzi del riferimento a Big Class e dici semplicemente aperto senza alcuna discussione. |
| |
E quando JSL tenta...quando JMP tenta di interpretare questa riga, dice, ok, l'utente vuole aprire qualcosa, ma non ho cosa...non ho idea di cosa. Mostriamo loro un selettore di file in modo che possano decidere. |
| |
Quindi facciamo... facciamolo funzionare. dt = aperto. |
| |
Esegui lo script. Ecco il tuo selettore di file generico e dal mio desktop aprirò Iris. |
| |
Iris è aperto e, naturalmente, ha il nome dt. |
| |
tutti i file JMP, tutti i file, giusto. Potrebbe mostrare un sacco di cose qui. |
| |
Quindi, se hai bisogno di più controllo, oops, se hai bisogno di più controllo su |
| |
le scelte che il tuo utente farà, invece di usare open, useremo qualcosa chiamato pick file. |
| |
Pick file è un comando che ha un paio di opzioni diverse. Ne sto usando solo tre. |
| |
Esaminiamo questo esempio. Quindi i primi tre argomenti per pick file sono un titolo che vedrai nella finestra di selezione, |
| |
una directory in cui verrà avviato il selettore e un filtro che ti dice quali file puoi aprire da quel selettore, giusto. Quindi eseguiamo questa... questa riga, questa sezione di codice, il comando pick file, salvando il risultato in PF. |
| |
Esegui quello. |
| |
Ok, nota che questo è l'argomento qui, seleziona il file excel. Questo è ciò che vediamo quassù nel titolo della finestra. |
| |
La cartella, il percorso nel secondo argomento, è lì che inizia. |
| |
E il terzo bit, il filtro file che dice, ehi, mostra solo all'utente i file excel da aprire, che è quaggiù. Non sono autorizzato a modificare i file excel. Sono limitato ai file excel. |
| |
Quindi diciamo panini e fai clic su apri. |
| |
Beh, aspetta un attimo, perché non si è aperto? |
| |
Bene, controlliamo. PF è uguale a pick file. Cos'è il PF? Ah, PF è il percorso verso la cosa che vogliamo aprire. Non abbiamo ancora emesso il comando di apertura. Pick file non apre un file, seleziona solo un file. |
| |
Quindi, per chiudere il cerchio, ecco cosa dobbiamo fare. Crea il nostro riferimento alla tabella aprendo il file |
| |
Variabile PF, che punta al file che vogliamo, il file excel che vogliamo. |
| |
Eccolo. Questo apre la tabella dei dati dei sandwich, e ora ho il mio dt e sono pronto per andare avanti con il mio script, proprio come volevo. |
| |
Lasciatemi fare una pausa qui per mostrarvi qualcosa di importante. Scegli file, se incontri qualcosa del genere e non conosci tutti gli argomenti e vuoi saperne di più, un paio di cose. Prima di tutto, ottieni un po ' |
| |
hover help, un piccolo pop up che contiene alcune informazioni sulla sintassi. Ecco un'opzione migliore. Fai clic destro su di esso nella finestra dello script, |
| |
e puoi cercarlo nell'indice di scripting. L'indice di scripting è uno strumento molto importante per qualsiasi programmatore JSL e |
| |
ha il comando che stai cercando. Ha l'elenco degli argomenti, del testo esplicativo e, cosa molto importante, ha un paio di esempi che puoi esaminare e vedere cosa fa. Quindi, se eseguo questo esempio qui, mi verrà fornito un file pick. |
| |
Beh, mi ha mandato da qualche parte in un posto in cui non voglio andare. |
| |
Chiudiamolo e basta. |
| |
Giusto e poi possiamo sperimentare e prendere questo codice, rubare questo codice e usarlo nel nostro... nel nostro script se vogliamo. |
| |
Ok, questo è l'indice di scripting. È disponibile anche dal menu di aiuto. Menu di scripting... cerca roba lassù. |
| |
tabella di dati corrente, un'apertura nuda o un file di selezione. Ci sono anche altri modi, ma quelli sono tre buoni per cominciare. |
| |
Ora parliamo di consentire ai tuoi utenti di scegliere su quale colonna vogliono operare. |
| |
Eccomi...ho copiato qualcosa dal registro. Ho aperto una tabella di dati chiamata prezzi. e ci ho fatto un grafico che mostra il prezzo delle mele nel tempo. |
| |
Non vi mostrerò la parte punta e clicca, eseguirò solo lo script. Penso che tu sappia già come estrarre lo script dal registro avanzato, quindi vediamo solo cosa fa lo script. Apre i prezzi e c'è il mio grafico, mele contro data, prezzo delle mele nel tempo. |
| |
Quindi guarda questa tabella di dati, i prezzi, sì, ci sono le mele, ma ho anche tutti questi ragazzi, giusto. Quindi cosa succede se voglio che il mio utente mi dica quale grafico vuole vedere, quale colonna vuole vedere rappresentata graficamente. |
| |
Questo è l'argomento di questa sezione, lasciare... lasciare che i tuoi utenti scelgano. |
| |
Va bene. |
| |
Quindi discuteremo due metodi. Ecco il primo. |
| |
Sta operando su colonne che l'utente ha selezionato. |
| |
E l'abbiamo visto prima, abbiamo visto questa sintassi prima, credo, nel nostro secondo caso di studio. Sì, è così che facciamo una lista |
| |
che contiene le colonne selezionate nella tabella dati. Quindi lasciatemi tornare a quella tabella di dati. |
| |
Selezionerò, forse tre colonne e |
| |
corriamo |
| |
Questo. In realtà penso che dovrei eseguire dt. Eseguiamo entrambi. |
| |
pollo, caffè e uova. |
| |
Va bene. |
| |
COSÌ. |
| |
Su quale voglio operare? Bene, sai come operare, come iterare su un elenco usando un ciclo, ma non lo stiamo facendo. Userò solo una scorciatoia. sto per dire guarda, |
| |
se il mio utente ne ha selezionati più di uno, rappresenta semplicemente il primo per loro. Quindi il mio utente ha selezionato pollo, caffè e uova prima di eseguire lo script. Voglio solo dare loro il grafico sul pollo. |
| |
Giusto, quindi questa è la riga successiva qui. C'è il nostro abbonamento. Stiamo abbonando l'elenco CNames per ottenere il primo elemento. |
| |
Quindi eseguiremo questo. |
| |
Ora ho quella bella variabile, mio col, |
| |
che ha il primo elemento della lista, pollo, il riferimento alla colonna con i due punti. |
| |
E ora possiamo eseguire il nostro generatore di grafici. Ora possiamo andare avanti con la nostra vita, l'unica differenza è che abbiamo sostituito dove c'erano le mele quassù, |
| |
quello ora è il mio col. Questo è l'unico cambiamento che abbiamo apportato e quindi, eseguendo questo, otterremo un grafico del prezzo del pollo. |
| |
Bene. |
| |
Va bene, quindi questo è un modo, ma ancora una volta, come abbiamo detto prima, questo richiede che l'utente sappia cosa deve fare. Questo richiede... |
| |
richiede che l'utente sappia che deve aprire la tabella dei dati, selezionarla e quindi eseguire lo script, e questo è un po' una seccatura. COSÌ |
| |
invece è un po' più affidabile mostrare all'utente una finestra di dialogo per la selezione delle colonne in fase di esecuzione. Ecco come appare. La sintassi è un po' complessa. Non entrerò in tutti i dettagli, parlandone ad alto livello. Stiamo aprendo la tabella dei dati proprio come prima. |
| |
Stiamo usando questo comando chiamato colonna dialogo |
| |
per mostrare all'utente un selettore...selettore di colonne. |
| |
Ancora una volta, ha molti argomenti. Ne sto usando solo un paio. Quello che sto facendo è dire, ehi, dammi un pulsante che dice scegli merce, e l'utente può scegliere una colonna per quello al massimo e deve sceglierne almeno una. |
| |
Quindi, eseguiamo questo script a partire dalla riga 60. |
| |
Prezzo di apertura, ecco il mio dialogo e guarda che dialogo ricco ho per pochissimo codice. Questa è la virtù di questa colonna di dialogo che stiamo usando. Quindi prenderò il caffè come selezione e farò clic su OK. |
| |
Bene. Tornando alla sceneggiatura, abbiamo appena eseguito questa riga. |
| |
Ed è il risultato della nostra scelta memorizzato in dlg. Diamo un'occhiata a questo. |
| |
Va bene, è un po' complicato. Dice che dlg è una lista, vedi le parentesi graffe, e ho alcune parentesi graffe nidificate, quindi è come liste nidificate. |
| |
Ecco l'abbonamento che ti porta lì. Non passerò molto tempo a spiegarlo, ma puoi copiare questo codice se... se hai bisogno di farlo. Quindi, per ottenere dal dialogo solo la parte che dice caffè, un riferimento di colonna al caffè lì, |
| |
ecco la sottoscrizione per creare il mio col, quindi esegui questa riga. |
| |
E ora, la mia colonna contiene proprio quel riferimento alla colonna del caffè, ed è identica a prima. Eseguiamo il generatore di grafici utilizzando |
| |
mio collega, sostituendolo con le mele e così otteniamo il caffè o qualsiasi altra cosa l'utente abbia scelto. |
| |
Ok, questo è tutto ciò che volevo condividere con te. Concluderò solo con un piccolo consiglio per chiunque stia iniziando in questo modo con la programmazione JSL. |
| |
Il consiglio è, sai, lasciare che JMP corregga il tuo codice, il più possibile. Ed è a questo che serve il registro avanzato, ruba quel codice dal registro. Questa è la maggior parte della tua sceneggiatura, |
| |
e poi devi solo scrivere il tessuto connettivo, le parti che tengono insieme le cose e le trasformano in una sceneggiatura di produzione utilizzabile. Puoi anche rubare quel codice. Lo ruberai dall'indice di scripting, puoi certamente rubare da questa presentazione. |
| |
Tutti i materiali sono con questa presentazione e puoi anche rubare dal libro di cucina JSL nella comunità degli utenti di JMP, una risorsa fantastica che ha molte attività JSL comuni e ti fornisce il codice necessario per realizzare queste cose. |
| |
E ancora, sottolineerò, davvero non preoccuparti troppo della sintassi. È solo più facile prendere il codice e sostituire ciò di cui hai bisogno. Non romperai nulla e imparerai le sottigliezze di questa sintassi con più esperienza. |
| |
Grazie per la vostra attenzione. |