Altoparlante | Trascrizione |
| wendymurphrey | Ciao e grazie per esserti unito alla nostra presentazione oggi. Siamo entusiasti di parlare con te degli scenari comuni incontrati dagli autori di script a vari livelli di esperienza. |
| Il nostro intento è quello di spiegare cosa sta succedendo in modo da avere gli strumenti e le conoscenze per evitare questi errori. Quindi iniziamo. |
| Forse perché non è aperto per impostazione predefinita, è facile dimenticare di controllare il registro per i messaggi. Ma il registro contiene informazioni utili sulle recenti esecuzioni di script. Quindi diamo un'occhiata più da vicino a questo esempio in JMP. |
| Qui possiamo vedere che lo script apre semplicemente una tabella di dati e tenta di effettuare una selezione di riga. Quando eseguiamo questo script, |
| otteniamo un messaggio di errore interattivo per l'errore fatale, ovvero quelle situazioni in cui lo script si interrompe a causa dell'errore. La finestra a comparsa è un nuovo comportamento per JMP 15 e può essere disattivata nelle preferenze. |
| Quando chiudiamo quel messaggio, possiamo controllare il registro e vediamo lo stesso messaggio dalla finestra, ma vediamo anche il numero di riga |
| Trova il nome del file di script per guidarci nell'area problematica. Ora, non affidarti esclusivamente a queste finestre pop-up perché nel registro appariranno anche altri messaggi importanti, |
| e non causano necessariamente una finestra pop-up. Quindi diamo un'occhiata a un altro esempio. |
| In questo script, l'autore tenta di aprire una tabella, creare un'analisi e stampare un messaggio nel registro. |
| E quando eseguiamo questo script, notiamo subito che la nostra analisi non è stata generata. |
| Quindi, di nuovo, controlliamo il registro |
| e vediamo che c'era una colonna che non è stata trovata nella tabella dei dati, ma lo script è continuato e ha stampato il nostro messaggio nel registro. |
| Quindi l'importante da asporto qui è sempre controllare il registro, soprattutto quando ciò che accade non soddisfa le tue aspettative. Potrebbe essere semplice come un nome di colonna con errori di ortografia. |
| Il concetto di tabella dati corrente è spesso descritto come tabella attiva. Ma cosa rende la tabella la tabella dati attiva o corrente e perché è importante per il tuo script? |
| Quando una tabella viene aperta, creata o utilizzata in altro modo, diventa la tabella dati corrente. Ma ci sono altri modi in cui una tabella può diventare attuale in fase di esecuzione che tu come autore dello script potresti non aver previsto. |
| Le loro attività che JMP elabora in background. Ad esempio, JMP potrebbe dover valutare una formula o aggiornare una finestra. |
| Sono questi processi in background che possono causare l'attivazione di una tabella diversa da quella che intendevi in fase di esecuzione. E questo può causare il fallimento dello script o, peggio, non ti rendi nemmeno conto che JMP ha utilizzato la tabella sbagliata. |
| Quindi qui ne abbiamo forniti alcuni |
| best practice per creare i tuoi script utilizzando riferimenti specifici della tabella dati. Questo è il modo in cui puoi assicurarti che venga utilizzata la tabella corretta, indipendentemente da quale tabella è attiva in fase di esecuzione. |
| In questo esempio, stiamo dimostrando come puoi inviare una chiamata bivariata a una tabella di dati specifica per assicurarti che i dati in quella tabella vengano utilizzati per la tua analisi. |
| Puoi anche utilizzare la nuova colonna come messaggio per una tabella di dati specifica, e questo assicurerà che la tua nuova colonna venga creata nella tabella desiderata e non vada a ciò che è corrente. |
| È inoltre possibile utilizzare riferimenti facoltativi alla tabella dati. Qui, stiamo solo dimostrando come puoi usarlo per fare riferimento alle colonne e parleremo più dettagliatamente del riferimento alle colonne tra un po'. |
| È inoltre possibile utilizzare riferimenti facoltativi alla tabella dati nelle funzioni; per ogni riga e sommario sono due dove questo è disponibile. |
| Vorremmo anche suggerire di evitare di utilizzare una tabella di dati... assegnando un riferimento alla tabella di dati utilizzando la funzione della tabella di dati corrente negli script di produzione. In questo esempio stiamo unendo due tabelle di dati e vorremmo assegnare un riferimento a quella tabella |
| creato dal join. Ora join restituisce un riferimento alla tabella appena creata. Quindi, invece di assegnare alla tabella dati corrente, vogliamo assegnare il riferimento quando viene creato il join. |
| Quindi qui, eseguiamo semplicemente il nostro compito quando chiamiamo il join e quando lo eseguiamo |
| possiamo vedere che in effetti la nostra nuova variabile DT fa riferimento alla tabella dei desideri e non è influenzata da quale tabella è corrente. |
| Essere in grado di identificare una colonna utilizzando una variabile JSL è un'attività comune e il metodo utilizzato dipende dall'uso previsto. |
| La funzione colonna restituisce un riferimento alla colonna come unità intera. Accetta una varietà di argomenti, come il nome della colonna è una stringa o una variabile stringa, |
| un indice o una variabile numerica che rappresenta un indice. Può essere indicizzato per fare riferimento al valore della colonna su una riga specifica. |
| Alcuni punti in cui è possibile utilizzare la funzione colonna sono nelle chiamate alla piattaforma, nell'invio di messaggi a una colonna o nell'assegnazione di un riferimento variabile a una colonna. |
| La funzione di colonna as restituisce un riferimento al valore sulla riga corrente |
| della colonna specificata. Accetta tutti gli stessi argomenti della funzione di colonna, ma è importante capire che in JMP la riga corrente è sempre zero se non diversamente gestita. |
| Quindi alcuni posti fantastici in cui utilizzare la funzione di colonna as sono nelle formule, per ogni riga, e seleziona dove, perché controllano la riga mentre valutano su ogni riga in base al loro design. Quindi diamo un'occhiata a un esempio di ciò che intendiamo. |
| Qui stiamo aprendo una tabella di dati di esempio. Abbiamo assegnato una variabile JSL al nome di una colonna e stiamo tentando di utilizzare la funzione di colonna nel nostro select where. |
| Ora, quando eseguiamo questo script, scopriamo che non è stata selezionata alcuna riga. Perché? Perché selezionare dove valuta su ogni riga, |
| l'utilizzo della funzione colonna senza alcun pedice non selezionerà alcuna riga. E ricordiamo che la funzione colonna restituisce un riferimento alla colonna come unità intera, quindi un'intera colonna di dati non sarà mai uguale a 14. |
| Quindi le soluzioni sono usare la funzione di colonna con un pedice di riga (e questo pedice di riga significa semplicemente la riga corrente, qualunque cosa sia mentre select where sta valutando), oppure puoi usare la funzione di colonna as per selezionare le tue righe. |
| L'uso di una variabile JSL nelle formule può essere problematico per alcuni motivi. La durata di una variabile JSL è limitata alla sessione JMP corrente e, al variare del valore della variabile, può variare anche il risultato della formula. |
| E a meno che tu non guardi la formula nell'editor di formule, potresti non renderti conto di avere un problema. |
| Quindi diamo un'occhiata al nostro esempio. Qui, sto semplicemente aprendo una tabella di dati e stabilendo un elenco di colonne che vorrei sommare. |
| Sto creando la mia nuova colonna formula e sto usando la mia variabile JSL nella mia funzione somma. Quindi eseguiamo questo. E possiamo vedere che la nostra nuova colonna è stata creata e popolata di dati. Ma diamo un'occhiata all'editor di formule. Non abbiamo mai detto che la nostra variabile JSL è stata utilizzata nella funzione somma. |
| E quando lo ignoriamo e apportiamo una modifica a una delle colonne dipendenti, abbiamo anche notato che la nostra formula di colonna non è stata aggiornata automaticamente. |
| Quindi salviamo e chiudiamo JMP, salviamo questa tabella e chiudiamo JMP. |
| E ricominceremo. |
| Ora ricorda che la durata di quella variabile JSL era limitata alla precedente sessione JMP. Quindi apriamo il tavolo e diamo un'occhiata a cosa succede. |
| Abbiamo notato che le nostre formule variabile...colonna non venivano ancora valutate. Quando diamo un'occhiata a questo, vediamo ancora la nostra variabile JSL, ma ora abbiamo una linea rossa sotto di essa. E ci passiamo sopra, vediamo il nome errore irrisolto. |
| Se proviamo a rivalutare la formula, otteniamo il messaggio di errore e ignorando gli errori, tutti i nostri dati verranno modificati come mancanti. Quindi come lo sistemiamo? |
| Quando utilizzi una variabile in una formula, devi fare qualcosa per indicare a JMP di sostituire la variabile con il suo valore prima di valutare la formula. Puoi usare sostituto per questo, ma oggi dimostreremo le funzioni di espressione. Quindi chiudiamo questo tavolo. |
| Apriremo una nuova copia della tabella e ristabiliremo il nostro elenco di colonne. |
| E ora diamo un'occhiata a come lavoriamo intorno a questo. |
| Quindi la funzione di espressione eval dice a JMP di valutare e sostituire qualsiasi variabile lì dentro ... nel suo argomento che è racchiusa in una funzione EXPR. |
| E poi restituirà l'espressione non valutata. Quindi in questo codice JMP sostituirà l'espressione Punteggi SAT e la sostituirà con il nostro elenco di colonne. |
| Quindi eseguiamo solo questa sezione e vediamo cosa succede. E vediamo che la funzione somma ora ha il nostro elenco di colonne che vogliamo sommare invece della variabile. |
| Ma in realtà non ha creato la colonna per noi. Viene semplicemente restituita questa espressione. Quindi, per valutarlo, aggiungiamo una funzione eval attorno alla nostra funzione di espressione eval. |
| E questo farà sì che JMP valuti l'intera nuova espressione di colonna dopo che si è verificata la sostituzione. Quindi, essenzialmente, l'e-mail dice, esegui... esegui ciò che viene restituito dall'espressione eval, che è this. |
| Quindi eseguiamolo e possiamo vedere che la nostra colonna è stata ora creata e abbiamo i dati come previsto. |
| E la nostra formula non ha più la nostra variabile, ha il nostro elenco di colonne. |
| E quando apportiamo una modifica ai dati in una colonna dipendente, la nostra formula ora si aggiorna automaticamente. |
| Quindi ora lo passerò a Justin per parlare di qualche altro errore da evitare. |
| Giustino Chilton | Va bene, quindi un altro errore che vediamo commettere dalle persone è quando impostano le proprietà delle colonne e la sintassi può essere un po' complicata. Quindi, prima di entrare nei dettagli, |
| parliamo di cos'è una colonna in termini di proprietà della colonna. Quindi essenzialmente una colonna è solo a |
| repository per queste informazioni sulla proprietà. Non esegue alcun controllo della sintassi per assicurarsene |
| quello che gli dai è corretto e questo gli consente di memorizzare tutto ciò che desideri. Ciò significa che ciò è dovuto al fatto che il consumatore della proprietà si aspetta che qualcosa sia in un formato specifico, che si tratti di una piattaforma JMP, utilizzando una proprietà di colonna o persino un'applicazione JSL. |
| Diamo quindi un'occhiata a un rapido esempio. |
| E qui, apriremo una tabella che abbiamo chiamato proprietà della colonna, solo per il test. Abbiamo una colonna chiamata NPN1 e una colonna chiamata test. E questa colonna ha limiti di specifica e una proprietà di accesso, ma vogliamo |
| aggiungere le proprietà del limite di specifica da testare. Quindi abbiamo qui, quello che pensiamo |
| è la sintassi corretta per impostare le proprietà della colonna dei limiti di specifica. Lo eseguiamo e non ci dà un errore ma quando noi |
| guarda la colonna, ci sono limiti di specifica su quella colonna. |
| E puoi, ma puoi dire che non è corretto. Quando abbiamo chiesto l'analisi della capacità di processo con i nostri limiti di specifica, |
| quando lo eseguiamo, ne otteniamo uno per NPN1 e ma non ne otteniamo uno per la colonna di test. Questo perché ciò che è memorizzato nella proprietà dei limiti di specifica per la colonna di test non è corretto. |
| Quindi un modo per farlo se sai già come utilizzare i limiti delle specifiche delle proprietà impostate, |
| puoi semplicemente inviare il messaggio di proprietà alla colonna NPN1, che è la colonna che sappiamo essere corretta. Quindi, se eseguiamo solo quella riga, otteniamo la sintassi corretta. |
| E questo in realtà ci mostra che questo dovrebbe davvero essere in forma di elenco invece che in argomenti separati. Quindi, in un altro modo, se non hai familiarità con la proprietà get, puoi andare alla colonna che sai essere corretta e copiare le proprietà della colonna. |
| E poi puoi incollarlo nel tuo script e vedrai che hai aggiunto le proprietà della colonna e un paio di proprietà impostate. Quindi aggiungere le proprietà della colonna è solo un modo per raggruppare più proprietà impostate. Possiamo rimuoverlo e possiamo rimuovere l'accesso extra |
| proprietà. Quindi, una volta che abbiamo finito di rimuoverlo, possiamo usare questa proprietà set per inviarlo alla nostra colonna di test con l'operatore send. Quindi ora quando eseguiamo questo, |
| noi... è... ha sovrascritto i nostri limiti di specifica, ma possiamo confermarlo eseguendo la nostra stessa distribuzione utilizzando i nostri limiti di specifica. |
| Quindi, e puoi vedere qui che abbiamo la nostra analisi della capacità di processo per entrambe le nostre colonne. Quindi questo è solo un esempio di come ottenere i limiti delle specifiche, ma lo stesso può essere applicato a qualsiasi proprietà di colonna che devi applicare e ottenere la sintassi per in JSL. |
| Quindi il prossimo errore di cui parleremo è la manipolazione dei comandi di invio. Quindi cos'è un comando di spedizione? |
| È la cosa che appare nello script salvato quando si salva nella finestra dello script del menu del triangolo rosso o si salva negli appunti. |
| E appare quando aggiungi qualcosa come una linea di riferimento o modifichi qualcos'altro come chiudere una casella di contorno. E questo comando è stato sviluppato come un modo interno per consentire a JMP di ricreare grafici |
| con la personalizzazione che hai fatto. E non era previsto che gli utenti lo facessero |
| personalizzalo con variabili dinamiche. Ciò significa che alcuni degli argomenti nel comando dispatch non accettano variabili JSL. Quindi diamo un'occhiata a un esempio di dove ciò potrebbe accadere. Quindi ecco una sceneggiatura. Noi abbiamo un |
| table e una variabile stringa che utilizzerà poco dopo. E quindi questo è essenzialmente ciò che verrebbe restituito dalla finestra di salvataggio nello script. Quindi, quando lo eseguiamo, |
| possiamo vedere che il nostro comando di invio che imposta il minimo massimo e l'incremento per l'asse di misurazione |
| qui è impostato da zero a 1.4. Ora possiamo vedere che il comando dispatch si basa su |
| titolo della casella di contorno qui, ma quel titolo di casella di contorno è in realtà basato sul nostro input y. Quindi diciamo che volevamo che questo fosse un input dinamico da parte di un utente e tutto ciò che abbiamo questa variabile. Potremmo usare la variabile per la Y. |
| Ma poi dovremmo anche usare quello che è il nome di quella colonna qui. Quindi, quando lo eseguiamo, vedrai effettivamente che non otteniamo le impostazioni dell'asse corrette da 0,4 a 1,2, il che non è ... quindi ciò significa che ciò che abbiamo inviato non è stato elaborato. |
| Quindi ci sono un paio di modi per affrontare questo problema. E il primo utilizzerà la soluzione di espressione eval di cui Wendy ha parlato pochi minuti fa. Quindi qui vedi che abbiamo la stessa espressione eval. In realtà vogliamo avvolgere la concatenazione che abbiamo provato nell'esempio precedente |
| Qui. |
| E così l'espressione eval dirà valuta l'intera faccenda. Quindi, quando eseguiamo eval EXPR, |
| sostituisce semplicemente l'intera cosa con la nostra stringa concatenata e poi, ricorda quando facciamo l'eval, |
| corre quell'espressione. Quindi qui abbiamo da 0 a 1,4. Quindi questo è un modo. |
| Ma a volte può ancora diventare un po' complicato. E come dovresti davvero manipolare quei comandi di invio perché stai ancora usando i comandi di invio e devi sapere come funzionano. Quindi il modo più comune per farlo è rimuovere del tutto questo comando dispatch. |
| Quindi, e usa ciò che chiamiamo subscripting della casella di visualizzazione. Quindi qui lo eseguirò con il comando dispatch rimosso e abbiamo le nostre impostazioni dell'asse originali. |
| E poi quello che faremo è, prima di non sapere davvero come scrivere questo, solo guardandolo. Quindi andremo a questa icona, questa casella di contorno, clic destro |
| modificare e mostrare la struttura ad albero. Quindi, questo ci mostra la struttura ad albero della casella di visualizzazione all'interno di questa casella di contorno e all'interno di questa casella di contorno, puoi vedere che questa casella axix è quella che vogliamo cambiare. Quindi all'interno di questo contorno c'è il riquadro dell'asse uno. |
| Quindi possiamo andare a scrivere la nostra sceneggiatura. Utilizziamo questa funzione di report per ottenere il livello di report della piattaforma, OBJ1. |
| Quindi inseriamo un pedice per ottenere il titolo della casella di contorno che sappiamo dovrebbe essere, in base al nome della nostra colonna. |
| E poi all'interno di ciò vogliamo... e vogliamo essere il più specifici possibile, in modo che se le cose dovessero cambiare in una versione futura di JMP avremmo meno probabilità di avere problemi. |
| Quindi, all'interno di questo, vogliamo il riquadro dell'asse 1 ed è così che otteniamo il riquadro dell'asse, quindi possiamo prendere le stesse informazioni dal comando dispatch e convertirle semplicemente nei messaggi che inviamo al riquadro dell'asse. |
| E poi puoi vedere qui che ora le nostre impostazioni degli assi vanno da zero a 1,4. |
| Quindi un altro modo più potente per farlo è usare XPath. Fa la stessa cosa, ma può essere un po' più complicato, ma consente anche una maggiore flessibilità per le cose nelle versioni future di JMP perché puoi utilizzare i dati sottostanti su una scatola. |
| Quindi l'ultimo errore di cui parleremo è usare solo lo spazio dei nomi globale. COSÌ |
| potresti non saperlo, ma quando crei un simbolo senza specificare dove va, va nello spazio dei nomi globale. Quindi questo è ottimo per gli script veloci quando stai solo prendendo in giro qualcosa per il tuo uso personale, |
| ma potrebbe non essere una buona idea per gli script che invii ai colleghi o per gli script che pubblichi o per i componenti aggiuntivi che pubblichi nella Community. |
| Quindi qualche dettaglio in più su come funzionano l'ambito e la ricerca del nome in JMP. Inizi dal basso qui in questo diagramma. L'ambito locale può essere qualsiasi numero di ambiti, con cui sono funzioni e box locale. |
| Quindi, soprattutto, se non trova il simbolo o non lo hai specificato per andare in locale a seconda che tu stia scrivendo o leggendo, |
| poi c'è l'ambito here, e ne esiste essenzialmente uno per file. E c'è un ambito globale, che essenzialmente è un ambito per la tua sessione di JMP. E poi a destra, abbiamo l'ambito dello spazio dei nomi, che è qualcosa che devi davvero cercare esplicitamente per farlo |
| accesso. Diamo un'occhiata a un esempio. Questo eliminerà tutti i miei simboli e poiché non ho specificato dove dovrebbero andare, andrà in globals. Quindi x è 5. Ma cosa succede se qualcun altro ha una sceneggiatura là fuori che è come, beh, anch'io |
| avere un |
| variabile x che voglio usare. E non ho intenzione di specificare dove metterlo. Quindi lo imposterò a 10. |
| Ma poi quando torni al tuo script e forse questa è una variabile che hai impostato e poi hai qualche callback su un pulsante... pulsante |
| azione che si basa su quella variabile, quindi vai a usarla e la variabile è cambiata su di te e probabilmente non è desiderata. |
| Quindi quali sono alcuni modi in cui possiamo affrontare questo problema? Bene, il modo più semplice per farlo è usare i nomi di default qui(1). Ciò significa che nulla finirà nell'ambito globale, a meno che tu non gli dica esplicitamente di andarci. Quindi diamo un'occhiata |
| a questo |
| esempio. Quindi tutto ciò che abbiamo fatto è aggiungere questo nome predefinito a here(1). Può andare con... generalmente va all'inizio della tua sceneggiatura, ma può davvero andare ovunque. |
| Vado, pulirò i miei simboli e imposterò questa variabile x uguale a 5. Quindi qui abbiamo qualche altra scrittura che è |
| dice che dice che voglio accedere alla tua, alla tua x. Ma in realtà questo x non può mai accedere a questo x in questo qui spazio dei nomi. COSÌ |
| copiamo parte dello script e facciamo X uguale a 50. |
| E quindi la X nella scrittura della mano destra è 50, ma questo non ha avuto effetto sulla X nella scrittura della mano sinistra. Ecco cosa, è un ottimo modo per separare facilmente i tuoi simboli da altri script e applicazioni. |
| L'altra opzione consiste nell'utilizzare uno spazio dei nomi personalizzato. Questo è un po' più avanzato, ma può essere molto potente. Quindi eccomi di nuovo qui ... cancella il mio |
| simboli e quindi creando un nuovo spazio dei nomi, impostando una variabile x all'interno dello spazio dei nomi e mostrandola. Quindi ha un valore di cinque. |
| E hai un altro copione qui fuori. Forse questa è una delle tue sceneggiature e tu lo sai |
| myNS esiste. Quindi puoi provare ad accedervi, e puoi farlo benissimo, perché conosci il nome di questo. Ma è molto meno probabile che qualcuno di malvagio cambi il tuo simbolo a tua insaputa. COSÌ |
| Posso cambiare questo simbolo e sarà ancora 10 ma se faccio solo X, non avrà alcun effetto sul risultato della X dallo spazio dei nomi. |
| Lo restituirò a Wendy, che ci parlerà di alcune risorse trascurate. |
| wendymurphrey | Grazie, Giustino. Sono disponibili molte risorse per saperne di più su JSL e molte di esse sono gratuite. Qui abbiamo collegato per te alcuni dei luoghi più comuni in cui cercare e saperne di più su JSL. |
| Offriamo anche supporto tecnico a cui puoi rivolgerti e ci sono anche un paio di libri sull'argomento. Naturalmente, ti invitiamo sempre a dare un'occhiata alle nostre risorse di formazione e ai piani che hanno lì per te. |
| Assicurati di dare un'occhiata al documento associato a questa presentazione sulla community di JMP, poiché ci sono alcuni altri errori che abbiamo coperto per te, che non abbiamo avuto il tempo di discutere oggi. Grazie per aver guardato. |