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 chiamato il suo libro, Steal this Book, che è un titolo fantastico. Non sono sicuro che sia un ottimo business plan dare un nome così al tuo libro, ma comunque è molto accattivante. |
| |
Allora perché rubare questo codice? JMP vuole che tu rubi il codice. L'idea è di puntare e fare clic e di eseguire l'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% del tuo script di produzione. Lo prenderai e lo riutilizzerai in modo che tu possa |
| |
automatizza le attività comuni e fallo con un clic di un pulsante, invece di una sequenza di punta e clic. Quindi questo è l'intero obiettivo qui, risparmierai |
| |
script dal registro avanzato e queste sono le ossa, lo scheletro del tuo script di produzione. |
| |
È rimasto circa il 10% che devi scrivere tu stesso, e questo è il nostro obiettivo per questo discorso. Parleremo 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 con l'esempio. Usa quel codice. |
| |
Trova quel frammento che fa quello che vuoi fare. Lo troverai nella community di utenti di JMP o forse nella guida agli script. |
| |
E copialo e adattalo per il tuo uso. Non è necessario conoscere tutte le complessità della sintassi. Andrai davvero lontano in questo modo. Imparare la sintassi arriva man mano che acquisisci esperienza. |
| |
Quindi parleremo di tre casi di studio sulle cose che puoi fare per migliorare il tuo codice dal registro avanzato, ma prima facciamo una revisione di JSL. Forse è un'introduzione ad alcune nozioni di base di JSL per alcuni di voi. |
| |
Quindi la cosa importante da sapere su JSL se stai iniziando è che tutto è un oggetto. tutto quello che tu |
| |
vuole fare qualcosa è un oggetto, in modo che includa tabelle e colonne di dati nelle tabelle di dati e piattaforme, come la piattaforma di distribuzione, il generatore di grafici, Fit Y by X, |
| |
e i report 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 molto semplice che ho copiato dal registro avanzato. |
| |
Apri la tabella di dati Big Class nella directory dei dati di esempio ed esegui una semplice analisi di distribuzione, giusto. Ed ecco come appare quel codice, appena copiato dal registro. |
| |
Ora. |
| |
Quello che vogliamo fare, la prima cosa che vogliamo fare è nominare la tabella 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 ciò 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 eseguiamo questo 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 |
| |
maneggiare. È 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 quello. E sai, prima qui dal log c'è un semplice comando di distribuzione. 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 una 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, quindi le doppie frecce e quindi i comandi di distribuzione. Quindi questo è quello che abbiamo aggiunto, bctable con le doppie frecce. |
| |
E questa è la sintassi per inviare un messaggio. Quindi stiamo inviando il messaggio di distribuzione a destra alla tabella dati, da cui prende il nome bctable, a sinistra. E puoi vedere che questa è la grande classe quando passo il mouse sopra bctable. Quindi gestendo l'intera faccenda, |
| |
otteniamo il rapporto di distribuzione |
| |
che volevamo. |
| |
Ora ecco... possiamo fare un ulteriore passo avanti e, spesso, abbiamo bisogno di farlo. Creeremo un nome per la piattaforma mentre la eseguiamo, quindi |
| |
ecco una linea che incorpora sia la doppia freccia che gli uguali, va bene. Quindi, uh... leggiamo questo da destra a sinistra. Prenderemo quel messaggio di distribuzione e lo invieremo al bctable. |
| |
E il risultato di tutto ciò, che è la piattaforma, lo salveremo in questa variabile che chiamo distplat. |
| |
Facciamolo funzionare. |
| |
Va bene, sembra lo stesso, 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 le opzioni del triangolo rosso all'output, quindi qui portiamolo ... |
| |
portiamo quel rapporto di distribuzione dove puoi vederlo. |
| |
E prenderemo quell'oggetto distplat, questa è la... quella è la piattaforma di distribuzione. |
| |
Vedi, passandoci sopra, ed eseguiamo questa linea. Attiva il grafico del quintile normale nella piattaforma di distribuzione. Eccolo. |
| |
Va bene. |
| |
L'ultimo passo è prendere la piattaforma, prendere questo oggetto qui e... |
| |
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 rapporto - 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 diverse colonne nella tabella dati, iterando su colonne con loop usando per ogni comando. 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 |
| |
prendendo... prendendo una trasformazione della colonna ed eseguendo un grafico di controllo e facendo qualcosa con quel grafico di controllo. Quindi sì, scala; questa tecnica scala. |
| |
Ecco come raggiungere questo obiettivo nel codice JSL. Prima puntiamo e clicchiamo, a destra, facciamo quello che vogliamo fare. Fallo per una singola colonna, e poi 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, per l'iterazione, è per ciascuno, ed è stato introdotto in JMP 16, quindi questa tecnica non funzionerà nelle versioni precedenti di JMP. |
| |
Questo utilizza anche un concetto chiamato elenchi JSL, quindi parleremo un po' anche di questo. |
| |
Ok, sto per iniziare |
| |
in JMP, iniziamo dalla finestra iniziale. |
| |
E ho intenzione di... fammi solo controllare il registro, assicurarmi che sia pulito. No, devo rimuovere una cosa, cancellare il registro. Ok, quindi puntiamo e facciamo clic su ciò che vogliamo fare. Ho intenzione di aprire una tabella 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 quindi 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 posizioni decimali dei dati. |
| |
Questa è una semplice operazione punta e clicca. Fare clic con il tasto destro, andare nella colonna informazioni, |
| |
e cambieremo il formato di visualizzazione dal valore predefinito migliore per correggere i decimali con due posizioni. |
| |
OK, e ora lo abbiamo fatto per NPN1, abbiamo anche altre 19 colonne per cui vorremmo farlo. |
| |
Quindi esaminiamo il registro avanzato. |
| |
Ed eccolo, questo è il codice di cui abbiamo bisogno per ottenere la modifica del 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 fatto un po' di lavoro e così possiamo approfondire un po' di più. |
| |
Va bene. |
| |
Quindi le prime due righe qui... tre righe, questo è il codice del registro. Ok, la prima cosa che facciamo è aprire la tabella dei dati. |
| |
E potresti aver notato che ho modificato un po ', ho modificato il mio nome di percorso lungo, il mio lungo percorso di directory a questo file. |
| |
Se lo esegui 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. |
| |
Quindi, comunque, dal log stiamo solo aprendo la tabella dei dati, e poi siamo qui, applicando quel cambio di formato, decimale fisso di 10 caratteri due decimali. |
| |
La tabella... il riferimento alla colonna qui a sinistra è un modo per indirizzare una colonna. Ci sono diversi modi, ma questo è molto comune che vedrai con i due punti. Tabella ref...ref...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 questo modo nel log 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... corretto un po', e quando lo eseguo, sì, ha l'effetto giusto. Apre la tabella dei dati ed è |
| |
cambia il formato in due posizioni decimali. Ok, quindi sì, ora che ce l'abbiamo, è una cosa abbastanza facile da fare |
| |
cambia tutte le altre 19 colonne, a destra. Ecco... ecco NPN1, e poi posso semplicemente copiare quella riga e cambiare tutti e scriverla altre 19 volte. |
| |
Sì, ovviamente è inefficiente, e una delle cose grandiose 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 un elenco, non intendo solo un tipo generico di elenco. Sto parlando di una lista 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 a tabelle... tre riferimenti a colonne, NPN1, PNP1, PNP2. |
| |
Nota le parentesi graffe sia nel mio codice che quando passo il mouse sopra 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 tabella di dati corrente, bene nella tabella di dati che nomino 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 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 ciclo o iterazione. |
| |
Quindi ecco il vecchio modo per 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, diamo 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, lo scegli tu. 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, ok. 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. |
| |
Quindi questo è l'aspetto dell'intera faccenda, invece di più di 20 righe di codice, ho solo tre righe di codice, e questo include l'apertura della tabella dei dati, |
| |
ottenendo un elenco di nomi di colonne e quindi ripetendolo... ripetendo 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 posizioni decimali visualizzate nel formato. |
| |
Ok, questo è stato un esempio molto semplice dell'uso di ciascuno per fare qualcosa di molto semplice su |
| |
su una colonna. |
| |
Lascia che ti mostri un esempio leggermente più interessante. |
| |
Ecco un esempio in cui, per lo stesso set di dati, per sc20, |
| |
Creerò un grafico di controllo per ogni colonna e aggiungerò quei grafici di controllo a un diario e salverò l'intera dannata cosa come PDF, ok. Così |
| |
sta usando lo stesso per ciascuno, e ha gli stessi primi due argomenti, sai, l'elemento dell'elenco è il primo, un nome di 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. |
| |
Aprendo, eseguendo un mucchio di carte di controllo, mettendole insieme in un diario. E ora, se guardo 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, estraendo un valore da un rapporto. Succede spesso 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 ciò che vogliamo. Quindi ti insegnerò un trucco. |
| |
Il trucco è puntare e fare clic durante l'analisi, come al solito, e poi la cosa che vogliamo prendere, |
| |
Cambierò il colore del testo in rosso, solo una piccola modifica alla formattazione. E poi, quando salviamo quello script nel log, lo useremo per imparare come indirizzare quell'elemento rosso |
| |
in JSL. Quindi esaminiamolo insieme. |
| |
Di nuovo in JMP. |
| |
Aprirò Big Class, 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 metterò in una variabile JSL in modo che possa riutilizzarla in seguito, e sai scrivere con essa o fare qualche calcolo 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 rapporto. |
| |
Possiamo viaggiare lungo questo albero e trovare ciò di cui abbiamo bisogno. Quindi guarda questo. |
| |
casella col numero, a destra. E nota che quando clicco su diverse parti del rapporto, il 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 col numero con tutti questi numeri e, tipo, ti ho detto che prenderemo questa cosa e cambierò il colore del testo in 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 visualizzando 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, 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'unico motivo per cui l'abbiamo fatto è stato per ottenere questa parte, che ora interpreteremo, va bene. Utilizza send to report e, al suo interno, dispatch. |
| |
E qui ci concentreremo davvero sui quattro argomenti da trattare. Abbiamo bisogno dei primi tre, il quarto argomento è cambiare il colore, non è proprio quello che ci interessa. Ci interessa 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. Di nuovo, sono sicuro che hai notato in JMP che in un rapporto hai questi livelli di annidamento, giusto, e ho solo un... |
| |
una distribuzione del riquadro di contorno esterno. All'interno c'è un'altezza del riquadro di contorno e, all'interno c'è un quantili di riquadro di contorno, e all'interno di quei quantili uno è il materiale 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 ci identificherà. |
| |
Bene. I prossimi due argomenti ci dicono qualcosa su questo... questo elemento che stiamo provando, che abbiamo trasformato in rosso. Ci dice... il terzo dice di cosa si tratta, è una casella col numero, 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 così. 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 riaprendo la tabella dei dati, |
| |
nominare la distribuzione, eseguire la distribuzione continua. |
| |
Noterai che non abbiamo nessuna di quelle spedizioni e inviamo a rapporto, questo perché non abbiamo bisogno di trasformarlo in rosso nel nostro script di produzione. |
| |
Quindi sì, esegui l'analisi della distribuzione, dai un nome alla piattaforma. |
| |
Questo è importante, devi... stai accedendo al livello di report. 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 ti parlerò un po' di più su questo, ma prima eseguiamolo insieme una volta, così vedrai cosa fa. |
| |
Eseguirò la riga 23, ops, facciamo in questo modo. Eseguiamo la riga... le righe dalla 23 alla 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 media è 63. Perfetto. |
| |
Tutto a posto. |
| |
Quindi ecco quella riga in cui stiamo estraendo il |
| |
il valore mediano, quel numero 63 dal rapporto. |
| |
Diamo un'occhiata a quello. Lo richiamerò qui in modo che possiamo |
| |
fare riferimento a questo, come noi, come 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 display box, |
| |
spesso un elenco. Puoi anche sottoscrivere gli elenchi in questo modo. Quindi quello che stiamo facendo è, sì, stiamo estraendo elementi nidificati in questo oggetto report. |
| |
La prima cosa che vedremo è 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 casella col numero, giusto, e perché non ce l'aveva |
| |
un titolo che potremmo usare (quello era quassù, nessun titolo), invece lo chiamiamo per numero. È la prima casella col numero 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 casella col numero, vero? No, in realtà non lo è. È una casella di colonna di stringhe e ricorda, puoi controllare tutte quelle cose se vuoi. Questo è, di nuovo, dalle proprietà. |
| |
E se clicco qui, |
| |
casella col numero, casella col per stringa, casella col per stringa. Li vedi qui? String...string number, quindi è la prima casella col numero. |
| |
E questo afferrerà 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, quella sottoscrive il rapporto; prende quella mediana, in modo che possiamo riutilizzarla in seguito. |
| |
Quindi c'è un modo per prendere qualcosa da un rapporto. Ho un altro esempio che condividerò nei materiali di presentazione che avranno |
| |
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 il mio script per fare qualcosa su una colonna e voglio dare qualcosa ad altre persone della mia organizzazione |
| |
per lasciare che lo facciano da soli su dati diversi, giusto. Quindi, se... 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 script e stai aumentando notevolmente il suo 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 di bucato. Stiamo per...ti mostrerò tre metodi che puoi consentire ai tuoi utenti di scegliere i file e due metodi che puoi usare 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, ottieni questo nel registro, apri Big Class. |
| |
dt. Sto usando dt in questo caso, quindi, quando apro Big Class, |
| |
ora ha... dt punta a Big Class, ok. E poi andrei avanti con la mia sceneggiatura di produzione, giusto. |
| |
Ecco il punto, per consentire al tuo 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 questa è un'altra cosa è determinata dall'utente, |
| |
la persona che esegue lo script. Ok, questa è 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 dello script per assegnare dt, |
| |
ciò significa che JMP eseguirà questo script e darà quel dt |
| |
nome a qualunque tabella di dati sia davanti. |
| |
Quindi, dal punto di vista dell'utente, quello che fanno è aprire una tabella di dati, aprirò qui sc20 e creerò sc20 |
| |
la mia tabella dati attuale. Lo vedi quassù? Quello che è elencato in questa finestra è la tabella di dati corrente. |
| |
E così, se il tuo utente apre una tabella di dati e poi esegue lo script e poi incontra questa linea, dt ora punterà a sc20. |
| |
Quindi questo è un metodo piuttosto potente. Il problema è che... richiede che l'utente sappia esattamente cosa fare. Devono sapere che devono prima aprire il file di dati e poi 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 è semplicemente sbarazzarti di tutte le cose qui dentro, sbarazzarti del riferimento a Big Class e dire semplicemente aperto senza alcun argomento. |
| |
E quando JSL prova... quando JMP prova a 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 andiamo... eseguiamo questo. 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 farà il tuo utente, 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 inizierà 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 è quello che vediamo qui 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 i file excel dell'utente da aprire, è qui sotto. Non sono autorizzato a cambiare da 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'è PF? Ah, PF è il percorso verso la cosa che vogliamo aprire. Non abbiamo ancora emesso il comando di apertura. Scegli file non apre un file, seleziona solo un file. |
| |
Quindi, per chiudere il cerchio, ecco cosa dobbiamo fare. Crea la nostra tabella di riferimento aprendo il |
| |
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. |
| |
Permettetemi di fermarmi 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, prendi un po' |
| |
hover help, un piccolo pop-up che contiene alcune informazioni sulla sintassi. Ecco un'opzione migliore. Fare clic con il tasto 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 davvero importante, ha un paio di esempi che puoi scorrere e vedere cosa fa. Quindi, se eseguo questo esempio qui, mi darà un file di selezione. |
| |
Beh, mi ha mandato da qualche parte in un posto dove non voglio andare. |
| |
Chiudiamolo e basta. |
| |
Bene, allora 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... guarda le cose lassù. |
| |
tabella dati corrente, un file aperto nudo o un file di selezione. Ci sono anche altri modi, ma questi sono tre buoni per cominciare. |
| |
Ora parliamo di lasciare che i tuoi utenti scelgano su quale colonna vogliono operare. |
| |
Eccomi... ho copiato qualcosa dal registro. Ho aperto una tabella di dati chiamata prezzi. e ho fatto un grafico su di esso che mostra il prezzo delle mele nel tempo. |
| |
Non ti mostrerò la parte punta e clicca, eseguirò solo lo script. Penso che tu sappia già come estrarre lo script dal registro avanzato, quindi vediamo 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 lasciare che il mio utente mi dica quale grafico vogliono vedere, quale colonna vogliono vedere graficamente. |
| |
Ecco di cosa tratta questa sezione, lasciare che i tuoi utenti scelgano. |
| |
Va bene. |
| |
Quindi discuteremo di due metodi. Ecco il primo. |
| |
E' operante su colonne che l'utente ha selezionato. |
| |
E lo abbiamo già visto, abbiamo visto questa sintassi in precedenza, credo, nel nostro secondo caso di studio. Sì, è così che facciamo una lista |
| |
che contiene le colonne selezionate nella tabella dati. Quindi fammi 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 solo 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 sottoscrivendo l'elenco CNames per ottenere il primo elemento. |
| |
Quindi eseguiremo questo. |
| |
Ora ho quella bella variabile, il mio col, |
| |
che ha il primo elemento dell'elenco, 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 le mele quassù dov'erano, |
| |
quello ora è il mio col. Questa è l'unica modifica che abbiamo apportato, quindi eseguendo questa operazione, otterremo un grafico del prezzo del pollo. |
| |
Bene. |
| |
Va bene, questo è un modo, ma ancora una volta, come abbiamo detto prima, questo richiede che l'utente sappia cosa deve fare. Questo richiede... |
| |
Il metodo richiede che l'utente sappia che deve aprire la tabella dei dati, selezionarlo e quindi eseguire lo script, e questo è un po' una seccatura. Così |
| |
invece è un po' più robusto mostrare una finestra di dialogo per la selezione delle colonne all'utente 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 dialogo di colonna |
| |
per far emergere un selettore...selettore di colonne per l'utente. |
| |
Di nuovo, ha molti argomenti. 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 quella al massimo e deve sceglierne almeno una. |
| |
Quindi qui, 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 prendo il caffè come selezione e faccio clic su OK. |
| |
Bene. Tornando allo script, abbiamo appena eseguito questa riga. |
| |
Ed è il risultato della nostra scelta è memorizzato nel dlg. Diamo un'occhiata a questo. |
| |
Va bene, è un po' complicato. Dice che dlg è una lista, vedi le parentesi graffe, e ho delle parentesi graffe annidate, quindi è come le liste nidificate. |
| |
Ecco la sottoscrizione che ti porta lì. Non ho intenzione di spendere 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 il subscripting per creare il mio col, quindi esegui questa riga. |
| |
E ora, la mia colonna contiene proprio quel riferimento alla colonna del caffè, ed è identico a prima. Eseguiamo il generatore di grafici utilizzando |
| |
my col, 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. Chiudo 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, rubare 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 uno script 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 JMP, una risorsa fantastica che ha molte attività JSL comuni e ti dà il codice necessario per realizzare queste cose. |
| |
E ancora, ho intenzione di sottolineare, davvero non sudare troppo la 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. |