Domanda sui riferimenti alla tavola (da Russel)
Questa domanda è emersa nel thread su " Re: Sessione pratica 2022Q1 - Principianti" - e mi piacerebbe che anche altri si unissero alla discussione, quindi l'ho inserito nel forum di discussione.
Domanda sui riferimenti alle tabelle che hai mostrato oggi: se elabori più tabelle in sequenza come parte di uno script, iteri i riferimenti alle tabelle all'infinito (dt1, dt2, dt3,...) o esiste una soluzione più intelligente?
Background: manipolo spesso le tabelle (unire, concatenare, dividere, ecc.) e talvolta ho parecchie tabelle che apro, elaboro e chiudo in sequenza prima di passare alla tabella successiva nello stesso script finché non ottengo la tabella finale che desidero .
Re: Domanda sui riferimenti alle tabelle (da Russel)@Georg Grazie!
Re: Domanda sui riferimenti alle tabelle (da Russel)CIAO @Ressel , non contiene informazioni sulla creazione/scrittura dell'SQL, ma più sulla distribuzione delle query in JMP tramite una query SQL o in modi diversi. Quindi il mio modo abituale è utilizzare uno strumento diverso per scrivere quel semplice SQL (come "seleziona nome da big_class dove età> 15") e distribuire semplicemente quello script in JMP. Ma vedrai diversi esempi di come potrebbe apparire.
Re: Domanda sui riferimenti alle tabelle (da Russel)Ciao, sì, sono state modificate molte impostazioni anche se non ricordo esattamente quali. Voglio dire, questo era nelle mani del supporto tecnico SAS, del nostro supporto IT e del mio. È stata utilizzata una notevole quantità di tempo per cercare di risolvere questo problema. Non è servito a nulla. (E di recente ho iniziato a diventare leggermente esperto di dati.)
Inoltre, non ho problemi a ottenere i dati caricandoli tramite uno script e manipolando la tabella, anche se sembra davvero inefficiente, dato che ogni volta carico 100.000 di righe, elimino la maggioranza e ripeto un passaggio simile con la tabella successiva . Immagino che il generatore di query probabilmente farebbe lo stesso lavoro, ma su un'interfaccia diversa? Al momento ho accesso ai dati di cui ho bisogno, ma; a seconda del carico di lavoro; Potrei esaminare l'importazione di SQL semplice in JMP. (Non sapevo fosse possibile.)
Il collegamento seguente contiene informazioni sulla creazione di SQL da utilizzare con/in JMP?
Grazie!
Re: Domanda sui riferimenti alle tabelle (da Russel)A proposito, forse vuoi dare un'occhiata a questa presentazione, si tratta di ottenere dati dal database con JMP:
https://community.jmp.com/t5/Discovery-Summit-Europe-2021/Strategies-and-Examples-for-Data-Acquisition-From-Distributed/ta-p/349225
Re: Domanda sui riferimenti alle tabelle (da Russel)Hai provato a modificare le impostazioni in Preferenze per Query Builder? Ciò potrebbe cambiare molto, per impostazione predefinita vengono trasferiti molti dati per ogni modifica (tutti i livelli nel database, anteprime, ecc.).
Inoltre, una volta effettuata la query tramite GUI, puoi convertirla in SQL personalizzato per creare un semplice SQL. Questo verrà quindi elaborato solo nel database ed è molto più veloce.
Il mio metodo più noto consiste nel fare sempre le cose pesanti sul database, ma questo dipende sempre dall'ambiente. Esistono altri strumenti che consentono di definire la query nel database, che è possibile utilizzare in JMP (ad esempio SQL Query Builder, a seconda del fornitore del database).
Inoltre potresti chiedere al tuo IT (ad esempio all'amministratore del database) di aiutarti con determinate query necessarie regolarmente e importare il semplice SQL in JMP.
Ottenere i dati dal database nel formato corretto è fondamentale e vale la pena esaminare infine l'intero processo.
Re: Domanda sui riferimenti alle tabelle (da Russel)Ho già provato a utilizzare il generatore di query. Era incredibilmente lento e continuava a bloccarsi costantemente. Quindi ho contattato il supporto tecnico SAS, ma non sono riusciti a risolvere il problema. Di conseguenza mi sono limitato a gestire le singole tabelle in uno script, che; data la pessima prestazione del generatore di query; è molto più conveniente ed efficiente. Potrebbe essere che ciò sia dovuto al fatto che le tabelle che sto caricando contengono circa 100.000+ righe: questa è stata almeno la conclusione del supporto tecnico. Ahimè, non ho praticamente nessun altro a cui rivolgermi se non questi tavoli "enormi".
Inoltre, penso di aver bisogno urgentemente di familiarizzare con il debug. Anche se riesco a "discutere" alcune righe di codice utili, non sto considerando l'architettura, l'estetica o; difatti; come creare uno script di cui è possibile eseguire il debug. Purtroppo per me è ancora un concetto estraneo.
Re: Domanda sui riferimenti alle tabelle (da Russel)C'è anche la possibilità di manipolare le tabelle nel database (definizione della query, ad esempio, tramite Query Builder o in SQL nativo). Ciò è vantaggioso per set di dati di grandi dimensioni, poiché si evita il traffico e si carica pesantemente il server. Quindi devi anche gestire meno tabelle in JMP.
Re: Domanda sui riferimenti alle tabelle (da Russel)I nomi di handle/riferimento descrittivi aiuteranno te (o qualcun altro che deve modificare il tuo codice) ad un certo punto. Ciò semplifica anche la stampa di debug, quando puoi utilizzare Show(dt_batchid_loc); ad esempio per vedere il nome delle tabelle create.
Inoltre potrebbe essere utile utilizzare Output table("nome della tabella") durante la creazione di tabelle. Questo ti aiuterà se (quando) devi eseguire il debug del codice. Se non lo fai (tendo a saltarlo e mi perseguita di tanto in tanto) è molto più facile vedere quale tabella è aperta da un nome come "BatchID_with_Loc" rispetto a "Riepilogo 3041 senza titolo di QC , Loc" o qualcosa del genere.
Re: Domanda sui riferimenti alle tabelle (da Russel)Grazie per le risposte Qualcosa in più sullo sfondo di ciò con cui sto lavorando.
Carico le tabelle dalla nostra implementazione di Google Cloud Platform tramite ODBC. Queste tabelle vengono regolarmente aggiornate con i dati di produzione più recenti. Ad esempio, la prima tabella che carico (la faccio riferimento come dt ) presenta ID batch, nomi di parametri per diversi parametri QC, risultati di misurazione e unità di misura in colonne separate. L'ho diviso per nome del parametro QC (e faccio riferimento all'output come dt2 , chiusura dt ). Quindi, ad esempio, carico un'altra tabella che fa riferimento incrociato agli ID lotto con le sedi di produzione (a cui faccio riferimento come dt3 ). Dopodiché potrei unirmi dt2 con dt3 , creando dt4 e così via, finché non avrò una tabella che conterrà tutte le informazioni di cui penso di aver bisogno prima di procedere con qualsiasi analisi. In alcuni script sto elaborando quasi 10 tabelle, tutte referenziate come dt(n) . Questo è ciò che il mio attuale livello di abilità consente.
Ho un piano a medio termine per utilizzare uno script del genere per i grafici di controllo. Al momento valuto solo visivamente le tendenze e invio screenshot o grafici esportati in HTML a diversi stakeholder.
Ciò che apprendi da questa conversazione è utilizzare riferimenti a tabelle più descrittivi. Queste sono anche le cosiddette maniglie?
Re: Domanda sui riferimenti alle tabelle (da Russel)Sono d'accordo con @martindemel , dipende da dove si trovano i file, dall'ordine in cui li elabori e da cosa vuoi fare con essi. JSL dispone di molte funzioni integrate esterne al registro avanzato che possono essere d'aiuto. Per esempio, File nella directory ti dà un elenco di tutti i file in una directory. Seleziona File ti consente di selezionare in modo interattivo uno o più file da una directory. Sebbene il registro avanzato svolga un buon lavoro di acquisizione delle operazioni interattive, è comunque necessario sostituire i riferimenti ai nomi delle tabelle codificati con riferimenti alle variabili alle tabelle. @martindemel ha mostrato parte di questo utilizzo dt = Apri(... Nella maggior parte dei casi un'operazione JSL che apre un file restituirà un handle alla tabella dati che viene creata. Gli handle della tabella dati vengono creati anche quando invii un messaggio a una tabella con un'operazione dal Tabelle menù. Ad esempio, se stai creando un sottoinsieme, la sintassi
subsetDT = dt << Subset(...
ti consentirà di acquisire il riferimento alla tabella appena creata. Le altre operazioni sulla tabella funzionano in modo simile.
Re: Domanda sui riferimenti alle tabelle (da Russel)CIAO @Ressel ,
dipende davvero da cosa vuoi fare alla fine. Se hai, diciamo, 100 tabelle di dati che vuoi elaborare nello stesso modo e che vuoi chiudere in seguito, un ciclo (per aprire, elaborare, chiudere ogni tabella) farebbe il lavoro meglio che aprire tutte le 100 tabelle e poi elaborarle una dopo l'altro. Uno dei motivi è che non crei così tanti handle di Windows che potrebbero provocare un altro problema a livello di sistema.
In generale sarei un po' più descrittivo nel nome della variabile di tabella, così da capire meglio di cosa si tratta, se ha senso. "dt" è principalmente per lo sporco hack 
È inoltre possibile ottenere tutte le tabelle di dati aperte e quindi scorrerle utilizzando
Get Data Table List();
Questa probabilmente sarebbe una mossa intelligente.
Come si sentono gli altri a riguardo?