Ciao a tutti. Benvenuti a questa presentazione sull'uso di punta e clicca e sulle competenze di base di decifrazione del codice per importare dati complessi. Oggi sono in compagnia della mia collega Wendy Tseng. Siamo entrambe system engineer presso JMP. Mi chiamo Monique Roerdink Lander.
Parleremo dell'importazione di dati complessi, un'operazione nata dalle numerose sfide che ho incontrato quando lavoravo nel settore Ricerca e Sviluppo. Oggi parleremo di tre esempi, tutti relativi all'importazione di più dati, di più immagini, di più tabelle di dati da siti web o di più pagine PDF.
Si tratta di fonti di dati non semplici e potrebbero essere pensate per integrare altri tipi di dati, come i dati sperimentali. Quando ho dovuto affrontare queste sfide, inizialmente non ero esperto di scripting. Ho imparato a farlo per affrontare queste difficoltà, ma non tutti hanno il tempo o l'interesse per imparare JSL.
Ciò significa che potrebbe essere difficile importare questo tipo di dati in modo efficiente e che potreste rinunciare a tutto perché non avete tempo da dedicargli. Non deve essere necessariamente difficile, soprattutto con l'introduzione del Workflow Builder di JMP, introdotto in JMP 17 e arricchito con funzionalità estese più importanti in JMP 18.
Oggi mostreremo un modo per automatizzare l'importazione di questo tipo di dati. Useremo Workflow Builder e non useremo codice, ma solo JSL. Faremo un po' di decifrazione JSL o di cracking del codice, come lo chiamiamo noi. Daremo per scontato che abbiate una conoscenza di base di Workflow Builder e, in caso contrario, ci immergeremo direttamente nell'argomento. Oggi vi mostreremo tre esempi. Nel primo esempio, la mia collega Wendy affronterà l'argomento dell'automazione dell'importazione di immagini in una tabella dati.
È una cosa che devo fare. Dovrei fare molto. Lavoravo nella formulazione di detersivi e facevo test di usura e lavaggio sugli occhiali, e mi ritrovavo con centinaia di foto di occhiali. Volevo inserire queste foto nella mia tabella dati per collegarle ai dati dell'analisi delle immagini.
Per me, all'epoca, era piuttosto complicato. Wendy ci mostrerà come farlo in modo efficiente. Dopo questo esempio, nel secondo, vi spiegherò come rendere più efficienti l'importazione e le necessarie operazioni di pulizia dai file PDF. Infine, Wendy ci spiegherà come importare i dati da un sito web. Con questo, passo la parola a Wendy.
Grazie, Monique. In questo primo esempio, ti mostrerò come integrare le immagini per migliorare la comprensione e la comunicazione dei dati. Diamo un'occhiata a ciò di cui stiamo parlando. Invece di occhiali, guarderemo immagini di cani.
Questo set di dati che vedete di fronte a voi contiene immagini di cani in questa colonna. Ho 28 righe qui, 28 immagini di cani. Queste immagini sono state unite a un set di dati pubblicamente disponibile dell'American Kennel Club, dove abbiamo diverse informazioni sui cani, tra cui informazioni come la frequenza della toelettatura e la perdita di pelo.
Poi quello che esamineremo è il loro comportamento. Ecco un grafico che mostra l'impegno del cane, popolarità rispetto al comportamento. Se passo il mouse su un punto particolare, si ottiene un'immagine di quel cane. Ecco l'Affenpinscher. Questo è un esempio divertente, ma questo dà davvero vita a ciò che stiamo vedendo nei dati. Come ho messo insieme questi dati? Beh, come ho detto, c'è un set di dati disponibile al pubblico, l'American Kennel Club, e ho catturato queste immagini in una cartella e le ho unite.
Daremo un'occhiata a questo e permettetemi di fare prima uno zoom indietro per darvi un'anteprima di ciò che vedrete in questo primo esempio. Inizierò introducendo l'importazione di più file come un modo per importare facilmente le immagini in una cartella. Poi vedrete Workflow Builder in azione per prendere queste immagini e unirle a un set di dati AKC per creare un'immagine. Vedremo alcune evoluzioni di questo esempio, passando da semplice a complesso.
Nell'ultima iterazione vedremo l'utilizzo di un JSL personalizzato per creare un prompt utente in Workflow Builder. Iniziamo innanzitutto dando un'occhiata all'utilizzo dell'importazione di più file per importare le immagini. Ho una cartella chiamata AKC che contiene immagini di cani. Contiene anche altri file, ma principalmente immagini di cani, e come potete vedere le immagini dei cani sono state denominate utilizzando il nome della razza. Questo è importante perché lo useremo per unirlo al set di dati AKC, che contiene anch'esso il nome della razza. Prima di iniziare, avvio un nuovo flusso di lavoro e premo il pulsante "Registra".
Ora importiamo più file e andiamo alla cartella in cui si trovano. Questa è la cartella AKC e vogliamo selezionare i file che contengono solo immagini. Poi aggiungeremo una colonna per il nome del file perché vogliamo che il nome della razza venga inserito nella tabella dati. Ora potete vedere che sono state importate 28 immagini in un unico passaggio. Poi ho la colonna per il nome del file che posso usare per le modifiche. Devo eliminare il file .JPG in modo da poterlo unire al nome della razza nella cartella AKC.
Proseguo e interrompo il flusso di lavoro. Voglio solo mostrare che JMP sta catturando questi passaggi sotto forma di JSL in questo flusso di lavoro per me. Procediamo e apriamo il flusso di lavoro completato. Qui potete vedere il flusso di lavoro completato e lo riprodurrò per voi. È qualcosa che ho registrato prima, quando ho importato i dati e creato quei passaggi, ma una cosa che voglio commentare è che quando si utilizza l'importazione di più file, JMP nominerà la tabella dati in arrivo con il primo nome file, sottolineando l'ultimo nome file.
Nella mia cartella AKC, il mio primo cane era un Affenpinscher e l'ultimo un Otterhound. Procedo con questo flusso di lavoro, ed ecco il risultato. È lo stesso grafico che hai visto prima, con l'eccezione che ho sostituito i punti con le foto dei cani invece dei punti stessi.
Ora, diamo un'occhiata a queste categorie di comportamento. Ho quattro categorie di comportamento, a partire da "vigile", "reattivo", fino a "estroverso". Nel set di dati completo dell'AKC, dove ho 277 righe, ci sono più categorie di quelle che avete visto in quel grafico perché avevo solo 28 foto. Ho volutamente escluso i cani che sono distaccati e diffidenti. Questo per mostrarvi quanto sia riutilizzabile questo flusso di lavoro.
Aggiungeremo quattro cani alla nostra cartella AKC che sono distaccati, e poi rieseguiremo questo flusso di lavoro in modo che possiate vedere quanto sia adattabile. Anche in questo caso, questo flusso di lavoro è stato creato con 28 cani. Lasciatemi aprire la cartella qui. L'ultimo cane era un Otterhound. Aggiungeremo sul lato destro questi quattro cani che sono distaccati e li inseriremo nella cartella AKC, non nella cartella AKC2.
Ecco la nostra cartella AKC. Incollerò i nuovi cani. Ora abbiamo aggiunto i cani distaccati alla cartella AKC e riproporremo il flusso di lavoro. Ora potete vedere che i cani distaccati sono stati aggiunti al grafico. Ecco quanto è flessibile Workflow Builder. Abbiamo registrato un flusso di lavoro che importa le immagini, le unisce al set di dati AKC, esegue una pulizia dei dati e crea un grafico. Quindi, quando aggiungiamo altri file a quella cartella, possiamo semplicemente premere "Esegui" e tutto verrà aggiornato.
Analizziamo uno di questi passaggi del flusso di lavoro. La prossima evoluzione della complessità, un po' di decifrazione del codice, ma non troppa. Possiamo osservare questo passaggio di importazione di file multipli e dare un'occhiata al JSL che è stato acquisito. JMP comunica con un percorso di cartella specifico in cui risiedono le foto del mio cane.
Se ho un'altra cartella a cui voglio fare riferimento, posso semplicemente modificare questo percorso. Ho un'altra cartella chiamata AKC2 che contiene ancora più foto di cani. Tutto quello che faccio è entrare qui e apportare questa piccola modifica, poi possiamo ripetere il flusso di lavoro e questa volta vedrete 53 cani invece di 32, e il grafico risultante sarà molto più popolato.
Un modo piuttosto semplice per monitorare il codice è osservare le impostazioni dei passaggi e apportare piccole modifiche al codice JSL. Ora, in questa iterazione finale, apporteremo un'ulteriore modifica. Se questo è un flusso di lavoro che voglio condividere con altri affinché possano eseguirlo, avrebbe senso modificare questo primo passaggio in modo che all'utente venga richiesto di impostare la propria cartella di file dalla propria directory.
Riprenderemo questo passaggio e lo scorreremo fino in fondo. Invece di usare il passaggio "Importa dati", possiamo sostituirlo con "Crea finestra". L'unica altra modifica che consiglierei è anche quella di sostituire il percorso di questa cartella con qualcosa di generico come "desktop" o "Qui metterò i documenti". Procediamo e procediamo con questo primo passaggio.
Ora potete vedere che la cartella predefinita è Documenti. Tutte le mie selezioni sono state mantenute, come la colonna Aggiungi nome file, e all'utente viene chiesto di accedere alla cartella in cui si trovano le sue immagini. Per concludere questo esempio, abbiamo provato a usare l'importazione di più file per importare le immagini in un'unica tabella, e poi abbiamo provato a usare Workflow Builder per creare un flusso di lavoro adattabile. A questo punto, passo la parola a Monique per il secondo esempio.
Certo. Grazie, Wendy. Lasciami condividere il mio schermo. Ecco fatto. Nascondo il controllo della riunione. Ecco fatto. Bene. Possiamo tutti convenire che erano molto più carini delle foto di occhiali. Era un esempio davvero carino. Nel secondo esempio, esamineremo i dati da un PDF.
Il perché. Quando facevo ricerca, a volte mi immergevo in un argomento e trovavo informazioni preziose in qualche file PDF. Potrebbero essere tabelle di riferimento chimiche, magari dati sulla composizione. Potrebbero essere informazioni sui tensioattivi fornite dai fornitori, dalle nostre materie prime. Potrebbero essere report analitici.
Spesso i dati erano molti e non volevo importarli manualmente, semplicemente copiandoli in una tabella dati. Come si importano questi dati in JMP? Quello che mostrerò oggi è, innanzitutto, la procedura guidata di importazione PDF "punta e clicca", molto simile alla procedura guidata di importazione Excel e ad altre procedure guidate di importazione.
Un ottimo punto di partenza. Lo useremo insieme a Workflow Builder e poi faremo qualcosa di simile a quello che stava facendo Wendy, manipolando il codice sorgente qua e là per automatizzare l'importazione e semplificare un po' alcune parti del processo.
Poi, in JMP 18, è stata introdotta una nuova funzionalità interessante in Workflow Builder che aiuta davvero a risolvere un problema di pulizia. Dopo aver importato molte pagine PDF, dobbiamo ripulirle, e potrebbero esserci molte tabelle da ripulire. Workflow Builder ora ci consente di esaminarle. Mostrerò anche questo. Chiudo qui. Per iniziare, presenterò prima il PDF con cui lavoreremo. Lo apro. Eccolo.
Esamineremo questo esempio, un file PDF di due pagine che elenca la composizione in acidi grassi dei grassi più comuni. A pagina uno, elenca la composizione dei grassi di origine animale, e a pagina due, elenca quella di un grasso e di oli di origine vegetale.
Sembra una tabella formattata in modo piuttosto ordinato, ma se osserviamo la prima pagina più in dettaglio, notiamo che, sebbene abbia un bell'aspetto per un PDF, per una tabella dati JMP presenta alcuni problemi. Questo indica che ci sono molte cose da fare dopo aver importato questi dati per ottenere un formato utilizzabile.
Ad esempio, non abbiamo intestazioni di colonna, in realtà. Questa prima colonna è in realtà una categoria. Poi abbiamo una colonna con le percentuali. Un'altra colonna con le percentuali qui. Abbiamo due colonne qui che elencano gli acidi grassi. Una elenca i saturi e l'altra gli insaturi.
Poi abbiamo anche quest'altra colonna. Un altro problema è che abbiamo dei sottotitoli. Ad esempio, questo grasso di manzo è un sottotitolo. Contiene dei subtotali. È qualcosa che potremmo voler eliminare, ma ovviamente dobbiamo anche prendere questo sottotitolo e riempirlo con uno spazio vuoto.
Questo è un altro problema. Come ho detto, alcune di queste sottointestazioni sono distribuite su due righe, e questo ovviamente creerà problemi anche in JMP, perché JMP non le riconoscerà come appartenenti alla stessa riga.
Poi abbiamo anche dati come questi che si estendono su più colonne. Ci sono molti problemi che dovremo risolvere dopo aver importato questi dati. Torniamo al nostro diario e diamo prima un'occhiata al risultato finale. Quello che vogliamo fare è usare JMP per importare entrambe le pagine, preferibilmente lavorando solo su una di queste, e poi eseguire tutti i passaggi di pulizia.
Di nuovo, preferiamo lavorare solo su una pagina, poi applichiamo JMP a entrambe le pagine e poi uniamo i dati, così possiamo usarli. Ho registrato il tutto in un flusso di lavoro. Questo è il risultato finale, e lo ricreeremo in seguito. Lasciatemi prima riprodurre questo flusso di lavoro.
Ho due pagine che si aprono e il generatore di flussi di lavoro sta esaminando tutti questi passaggi di pulizia. Ce ne sono molti. Li esegue prima sulla prima tabella dati, e ora li reimposta e li esegue sulla seconda tabella dati. Quindi, una volta completata l'operazione, unirà entrambe le tabelle dati e otterrà un output dai dati combinati.
Ecco fatto. In questo caso, stiamo esaminando i grassi saturi rispetto a quelli solo saturi. Bene, lasciatemi chiudere questi output riavvolgendo o reimpostando il mio flusso di lavoro. In realtà chiuderò completamente questo flusso di lavoro e ne aprirò uno vuoto. Lo aggiungo qui a destra nel mio progetto su cui sto lavorando oggi.
Bene, iniziamo dall'inizio e apriamo il PDF. Dirò questo. Ero tentato di mostrare un esempio in cui l'importazione del PDF funziona perfettamente, ma immagino che per ometterlo, dovete solo credermi: a volte avete un PDF e lo aprite con JMP, e JMP riconoscerà perfettamente la tabella dati che vi serve, e sono solo due clic, e l'avete in una tabella dati. Questo è l'esempio perfetto.
Ora farò un esempio non perfetto. Apro questo PDF. Posso fare doppio clic sul mio link qui e si aprirà la procedura guidata di importazione PDF. Potete vedere subito nell'anteprima a sinistra che JMP non riconosce questa tabella come dovrebbe essere. Ne riconosciamo una parte, ma non è qualcosa che possiamo usare.
La prima cosa che dobbiamo fare è selezionare "Ignora tutte le tabelle", che reimposterà tutto. Ora che abbiamo reimpostato tutto, posso semplicemente usare il mouse e selezionare questa tabella qui.
Quando lo faccio, JMP cerca di indovinare dove si trovano le mie colonne. Ingrandisco un po' la visualizzazione. Questo vi fa vedere che non ha visto tutte le colonne. Questo è dovuto ad alcuni di quei problemi che si verificano quando abbiamo intestazioni che si estendono su più colonne.
Non è un problema, perché posso aggiungerli manualmente cliccando con il tasto destro del mouse. Ad esempio, posso andare qui a destra della mia % di peso, cliccare con il tasto destro del mouse e aggiungere un separatore di colonna. Poi devo fare la stessa cosa qui, dove avevamo la seconda colonna % di peso, e aggiungerò un separatore di colonna qui e un separatore di colonna qui.
In questo caso, questo è il massimo che si possa ottenere per questa tabella. Solo per sottolineare, sotto il triangolo rosso ci sono alcune opzioni. Ad esempio, puoi impostare il numero di righe da utilizzare come intestazione, uno strumento molto utile.
In questo caso, importerò solo questa prima tabella. Ora, potrei ovviamente effettuare la stessa selezione qui a pagina 2, e non sarebbe troppo impegnativo perché si tratta solo di un file PDF di due pagine. E se avessi una tabella di 10 o 20 pagine? Ci vorrebbero un sacco di clic e di aggiunta di tutti questi divisori di colonna, e potrebbe essere un po' noioso farlo. Lo farò.
Ora inserisco la prima pagina e vediamo cosa possiamo fare da lì. Faccio clic su OK. Ho dimenticato di avviare il registratore di flusso di lavoro, quindi John mi chiede di farlo. Dico di sì, per favore registra. Ecco la tabella e anche questo passaggio registrato. Interrompo la registrazione. Faccio doppio clic sul passaggio di registrazione e lo sposto un po', così possiamo dare un'occhiata al JSL.
Ecco il codice per il primo passaggio dell'importazione. Possiamo vedere cosa sta succedendo. Questa è la posizione in cui si trova questo file. Poi c'è una funzione di tabella PDF, un'altra funzione di tabella e poi c'è qualcosa chiamato nome tabella. In effetti, questo è il nome della mia tabella dati. Vedo qualcosa su righe, etero, e poi vedo pagina 1. Poi vedo rettangolo. Quello doveva essere il rettangolo che stavo disegnando, e vedo bordo colonna. Quelle devono essere le coordinate di dove volevo avere tutti quei divisori.
Quando vedo questo, sono davvero tentato di giocare un po' con quella pagina, quando ho una seconda pagina. Facciamolo. Volevamo inserire quella seconda pagina. Prendiamo questa e inseriamola per la seconda. Facciamolo anche qui, nel nome della tabella. Cambieremo quella prima in una seconda.
Ora voglio eseguire questo codice, e posso farlo direttamente da qui semplicemente cliccando con il tasto destro del mouse e selezionando "Esegui script". Facciamolo. Ora si è aperta una seconda tabella. La rimpicciolisco un po'. La riprendo e guardo la seconda tabella che si è aperta.
Ho capito subito che era un successo perché in questa tabella dati ho inserito gli oli e i grassi di origine vegetale. Questa era la mia prima tabella di pagine con i grassi animali. È stato un modo molto semplice per modificare lo script che il generatore di flussi di lavoro ha acquisito per me, importando una seconda pagina. Copiare e incollare, lasciatemi tornare su questo argomento, copiare e incollare o modificare questo codice qui potrebbe essere più veloce rispetto a cliccare manualmente e aggiungere tutti questi divisori di colonna. Potrebbe essere una soluzione che potrebbe far risparmiare tempo.
Quello che voglio fare ora è anticipare la seconda parte, la pulizia. Prima la farò, e poi vi mostrerò perché voglio farlo. Quello che voglio fare è avere un passaggio che apra entrambe queste tabelle di dati. Quello che devo sapere è come JMP registrerà i dati quando importo due tabelle con una procedura guidata di importazione PDF. Se non lo so, il modo più semplice per farlo è semplicemente ricominciare la registrazione. Per prima cosa, reimposto i miei output qui, chiudo questo, giusto per conservarlo.
Ora ricomincerò a registrare e cliccherò su un PDF. Ignorerò tutte le tabelle. Non mi interessa tanto come dovrebbero apparire esattamente queste tabelle. Voglio solo vedere cosa succede se ho due tabelle ciascuna su una pagina. Clicco su "Ok". Darò un'occhiata al codice del passaggio per questo.
Questo è il codice del passaggio per quello. Per prima cosa, credo che sia stato inserito qui. Quando ho importato le due tabelle, sembra che JMP ripeta la funzione tabella. Ho una tabella qui, poi ho una virgola e poi ho un'altra tabella. Questa sembra essere la costruzione per importare due tabelle.
Ora che lo so, posso eliminare questo passaggio. Non ne ho bisogno. Posso tornare a questo passaggio. Ora, quello che voglio fare è ingrandirlo ancora un po': posizionerò il cursore a sinistra di questa parentesi della mia prima tabella, perché così evidenzierò la parentesi di chiusura. Ecco qua. Ora so che devo copiare tutto questo. Premerò semplicemente Ctrl + C. Poi, prima di questo, trascino questo verso il basso, e lo inserisco con Ctrl + C, e aggiungo quella virgola, proprio come abbiamo scoperto.
Ora posso cambiare questo, prima lo riporterò a uno. Riporterò il titolo a uno e la pagina a uno, e poi il secondo avrà pagina 2 e pagina 2. Bene, chiudiamo tutto e vediamo se funziona.
Quando eseguo questo passaggio, ottengo effettivamente quelle due tabelle di dati. Ecco come le ottengo ora in un unico passaggio. Perché ho fatto tutto questo? Ve lo mostrerò. Chiuderò i miei output. Chiuderò questo flusso di lavoro e ne aprirò uno nuovo. Lasciatemi anche agganciarlo di nuovo a destra.
Questo flusso di lavoro prevede questo passaggio. Faccio doppio clic su di esso, dove sto importando due tabelle. Ecco la mia tabella 1, ed ecco la mia tabella 2 per la pagina 2. Poi ho registrato i passaggi di pulizia e li ho eseguiti tutti sulla tabella 1. Quando evidenzio il primo passaggio, puoi vedere che si trova a pagina 1. Ho raggruppato tutti i miei passaggi di pulizia e puoi vedere che sono molti. Non entreremo nei dettagli in questa presentazione, ma avremo una risorsa in seguito per consultarli.
Ciò che conta è, ora che abbiamo eseguito tutti questi passaggi di pulizia su una di queste tabelle dati, come possiamo fare lo stesso sulla seconda? In JMP 18, è diventato davvero facile. L'unica cosa che dobbiamo fare è cliccare con il tasto destro del mouse e digitare "larghezza di gruppo" per ciascuna tabella. Torno indietro. Ho selezionato tutti i passaggi di pulizia che voglio ripetere, quindi clicco con il tasto destro del mouse e digito "larghezza di gruppo" per ciascuna tabella.
Ora JMP ha raggruppato o raggruppato questi passaggi per ogni elemento. Tuttavia, dice che non è stata selezionata alcuna origine. Devo fare qualcosa al riguardo. Devo dire a JMP su cosa eseguire il ciclo di questi passaggi. Per farlo, nelle impostazioni dei passaggi, esaminerò l'origine. È davvero semplice. L'unica cosa che devo dire a JMP è di indirizzarlo al passaggio del flusso di lavoro che genera i miei output multipli.
In questo caso, selezionerò il passaggio "Importa in pagine PDF". Questo è il passaggio in cui ho creato due tabelle. Ora JMP saprà che deve eseguire tutti questi passaggi su entrambi gli output generati qui. Vediamo se funziona.
Ora lo faccio. Abbiamo due output aperti. È in esecuzione. No, non è in esecuzione. Sta eseguendo i passaggi sulla prima tabella. Poi, a un certo punto, quando ha finito, dovrebbe passare alla seconda. Ecco fatto, e lo esegue sulla seconda tabella. Penso che sia una funzionalità davvero interessante, soprattutto se si hanno più di due tabelle.
Ho un PDF che ho importato di recente e che conteneva 13 pagine. Dopo aver importato le 13 pagine, ho ripulito una delle tabelle e poi ho esaminato tutti i passaggi per tutte e 13. Era molto bello. Bene, questo è ciò che volevo mostrare.
Passiamo all'ultimo esempio. Questo è un esempio, Importa dati da un sito web. È tratto direttamente da quello che facevo quando ero in Ricerca e Sviluppo. Avevo bisogno di ottenere dati sulla durezza dell'acqua. La durezza dell'acqua è un fattore importante da considerare in fase di formulazione. Ho trovato delle ottime informazioni su un sito web. Le ho formulate con molta cura. Wendy ci spiegherà come farlo in modo molto più elegante. Smetterò di condividere e lascerò la parola a te, Wendy.
Bene, sembra interessante. Bene, diamo un'occhiata all'esempio 3 e analizzeremo più da vicino il For Each, o un altro modo per descrivere il For Each è semplicemente il loop. Andiamo a dare un'occhiata al sito web in cui Monique ha trovato questi dati sulla durezza dell'acqua. Mi trovo su HydroFlow USA e, se arriviamo a quest'area di mappe interattive, posso navigare verso una mappa degli Stati Uniti.
HydroFlow USA fornisce dati sulla durezza dell'acqua a livello di città. Andrò in uno degli stati, il Minnesota, dove risiediamo entrambi, e cliccherò su questo link per mostrarvi questa pagina che contiene informazioni sul Minnesota. C'è una tabella con le città, i relativi codici postali e la durezza dell'acqua in due unità di misura diverse.
Osservando questo URL, gli altri URL degli altri stati seguono la stessa struttura: il nome dello stato seguito dalla durezza dell'acqua. Il problema di Monique era riuscire ad accedere a questi dati sul web per poter integrare la nostra analisi.
Utilizzando JMP, sono riuscito a importare tutti i dati sulla durezza dell'acqua di tutti gli stati in una tabella dati come questa. Potete vedere che ci sono 855 righe perché ogni stato contiene più righe corrispondenti alle città. Poter disporre di questi dati ha permesso a Monique di ampliare la sua analisi. Se clicco play su questa tabella, potete vedere, molto semplicemente, che permette di ricreare la durezza dell'acqua a livello di stato.
In questo esempio 3, vi mostrerò alcuni strumenti. Uno di questi utilizza Internet Open di JMP per accedere ai dati da una pagina web. Poi prenderemo Internet Open e lo collegheremo in un ciclo. Lo inseriremo in un ciclo in modo da poter riunire i dati di tutti gli stati in una tabella.
Iniziamo dando un'occhiata a Internet Open. Per prima cosa, catturo l'URL del sito web. Premo Ctrl + C su questa pagina web che contiene la durezza dell'acqua del Minnesota e avvio un flusso di lavoro. Premo "Registra" e ora andiamo su File, "Pagina Web Internet Open". Incollo l'URL e clicco su "OK".
JMP sta rilevando una tabella in quella pagina. Procedo e seleziono OK. Questo dovrebbe darvi un'idea di cosa è possibile fare per importare dati che risiedono in una singola pagina.
Andiamo al flusso di lavoro e interrompiamo la registrazione. Quando osservo cosa è stato registrato, JMP sta eseguendo questo JSL, o ha registrato questo JSL. È semplicemente un'istruzione aperta con il nome URL e alcuni dettagli aggiuntivi sul fatto che si tratti di una tabella HTML. Pensando al futuro, non vorremmo dover accedere a ciascuna delle 51 pagine separatamente.
L'ideale sarebbe avere un unico passaggio di importazione da ripetere per tutti gli stati. Ora torniamo alla durezza dell'acqua, ma prima diamo un'occhiata a un esempio presente nella documentazione di JMP che descrive il funzionamento di "for each".
Seguendo questo link nei materiali, arriverete direttamente all'esempio. Parlerò dell'esempio nelle slide e poi lo svilupperemo insieme. Oddio. Vediamo. Lasciate che vi mostri le mie slide.
Mi assicurerò che questo problema venga risolto nella versione caricata. Bene, nell'esempio della documentazione JMP, l'obiettivo era creare un set di grafici, e si trattava semplicemente di tre grafici di distribuzione per ciascun genere. Il set di dati utilizzato nell'esempio è il diabete, dove sono presenti due generi; il modo in cui è stato costruito è stato creare un sottoinsieme dal set di dati sul diabete con genere 1 e genere 2, creando quei grafici di distribuzione solo per il genere 1 e quindi inserendo quel passaggio 2 in un grafico per ciascuno in modo che il flusso di lavoro funzioni sia per il genere 1 che per il genere 2 senza dover effettivamente registrare i passaggi per il genere 2.
Diamo un'occhiata a come creare questo da zero. Avvio un nuovo flusso di lavoro e premo Registra. Andiamo a cercare il dataset sul diabete. Ecco il dataset sul diabete, e qui potete vedere il genere 1, il genere 2. Per prima cosa creeremo un sottoinsieme per genere. Ripetiamolo perché vogliamo deselezionare le righe. Creiamo un sottoinsieme per genere. Qui nell'anteprima potete vedere il genere 1, il genere 2. Dovrei ottenere due tabelle, e così è. Ecco il genere 1, il genere 2.
Inizierò con il genere 1 e creerò le mie visualizzazioni. Semplificheremo le cose e creerò una distribuzione con tre variabili. Ora passerò al mio flusso di lavoro. Andiamo al flusso di lavoro corretto. Qui potete vedere che ho effettivamente registrato diversi passaggi perché ho dovuto rifare questo processo più volte.
Vedrete come si prepara la salsiccia. Elimineremo i passaggi che non mi servono perché l'ho reinviato. Facciamolo solo per assicurarci di avere ciò che ci serve. Aprite la tabella dati, create un sottoinsieme della tabella dati in genere 1, genere 2, e poi dovrei ottenere la distribuzione per il genere 1. Ecco fatto. Genere 1, genere 2, e questi sono solo i dati per il genere 1.
Ora, per ciascuno, eseguo questo passaggio del report, clicco con il pulsante destro del mouse e dico "Raggruppa con per ciascuno". Questo è ciò che voglio che venga ripetuto. Ora, se arrivo a questo "per ciascuno", il passaggio del flusso di lavoro già selezionato è il passaggio precedente in cui ho effettuato il sottoinsieme, quindi non sono necessarie modifiche. Ora, quando rieseguo il flusso di lavoro, vedrete due distribuzioni in esecuzione, una per ciascun genere. Ecco fatto. Ecco il genere 1 ed ecco il genere 2.
Come possiamo usare questo tipo di framework per ottenere i dati che vogliamo sulla durezza dell'acqua da HydroFlow? Facciamo un po' di pulizia qui. Torniamo alle diapositive, quindi adattiamole alla durezza dell'acqua. Sapendo che volevo scorrere gli stati, concettualmente, ho pensato: "Creo una tabella proprio come l'esempio del diabete, e poi la suddivido in tabelle individuali per ogni stato che contiene l'URL". Registro l'apertura di Internet per uno degli stati, e poi inserisco quell'apertura di Internet in un "for each" in modo che esegua l'apertura di Internet per tutti gli stati.
Eseguiamo il flusso di lavoro che ho completato. Una cosa che noterete quando eseguirò questo flusso di lavoro è che ci saranno solo una manciata di stati, perché ci vorrebbe troppo tempo se li includessi tutti. Eseguirò il flusso di lavoro subito prima delle fasi di pulizia dei dati, così possiamo discuterne e poi riprodurre il resto.
La tabella "Stati" viene aperta e poi suddivisa nei singoli stati che contengono l'URL. Ora puoi vedere l'apertura di Internet per ciascuno di questi stati. Se guardi l'area di lavoro, ho creato l'apertura di Internet per questi cinque stati.
Se torno al flusso di lavoro e abilito i restanti passaggi, vedrai tutti questi dati combinati in un'unica tabella di stati, ancora una volta, in questa situazione con solo cinque stati, e poi un grafico che mostra la durezza dell'acqua.
Diamo un'occhiata al flusso di lavoro, ecco come funziona ogni passaggio. È qui che inizio a descrivere un'ulteriore complessità presente in questo esempio. Per importare l'HTML, in modo che Internet si aprisse, era necessario aggiungere del codice JSL personalizzato. Se espando questo passaggio, ho modificato questo passaggio di importazione che era stato registrato dal generatore di flussi di lavoro. Ora torno alla diapositiva in modo che possiamo parlare di queste modifiche specifiche.
Questa istruzione è ciò che viene registrato da Workflow Builder quando eseguo un'apertura Internet sull'Alabama. Poiché voglio fare riferimento a tutti gli stati, la sostituirò con qualcosa di generico, una variabile chiamata semplicemente "indirizzo web". Quindi, se pensiamo solo alla tabella dell'Alabama, devo poter fare riferimento per l'indirizzo web a una cella specifica in questa tabella dati, e quella cella contiene l'URL.
Utilizzando il linguaggio di scripting JMP, è possibile parlare con una tabella dati: si dice tabella dati e al suo interno si trova il nome della tabella dati.
Quindi, quando facciamo riferimento a una colonna in quella tabella dati, chiameremmo la tabella dati, aggiungeremmo i due punti e poi il nome della colonna. In questo caso, lo stato della tabella dati sarebbe uguale a Alabama, l'URL è il nome della colonna. Infine, poiché vogliamo una cella specifica che contenga l'URL, aggiungiamo queste parentesi. Per tutti gli stati, è sufficiente il numero 1, perché tutte le tabelle contengono una sola riga, e quella è la cella che contiene l'URL.
Per concludere questo esempio, avete visto Internet Open come un modo per importare dati da una pagina web. Poi abbiamo approfondito il for each usando l'esempio della documentazione JMP. Infine, avete avuto modo di vedere come l'ho adattato per accedere ai dati da Internet Open con un po' di codice JSL personalizzato. Infine, passerò il resto a Monique per concludere.
Sì. Grazie, Wendy. Oggi ti abbiamo mostrato come importare dati di ogni tipo, immagini, dati da PDF, dati da pagine web e come automatizzare tutto questo senza bisogno di script. Workflow Builder è uno strumento fantastico. Puoi spingerti ancora oltre dando un'occhiata al codice JSL che registra per te e apportando piccole modifiche. Non aver paura di dare un'occhiata a quel JSL e di immergerti. Grazie per essere qui con noi oggi e speriamo che questo articolo ti sia stato utile.