Come interrogare una tabella dati di grandi dimensioni in base al livello di una colonna e restituire le colonne il cui nome contiene quel livello?Vogliamo realizzare un'applicazione di monitoraggio della qualità da distribuire in decine di strutture di produzione (e infine pubblicare su JMP Live).
Per ogni struttura, disponiamo di una tabella dati molto alta e larga (chiamiamola dtBigBoy, <1000 colonne, 10.000-100.000 righe) che viene aggiornata da uno storico dei dati di processo che non può essere interrogato direttamente (otteniamo tutti i dati tra i timestamp di inizio/fine e concateniamo i dati aggiornati alla tabella esistente). Una delle colonne "Grade" contiene il nome del prodotto in fase di produzione in quel momento (per quella riga). La denominazione delle colonne è la seguente: Grade.Property.#. Ci sono almeno 1 colonna "Grade.Property.#" per ogni Grade. Uno dei casi utente è quando l'utente è interessato a un determinato Grade (ad esempio ABCD001) e desidera visualizzare tutti i dati delle proprietà.
- Qual è il modo più efficiente per farlo? Utilizzare il filtro dati locale su dtBigBoy e procedere con carte di controllo, ecc.?
OPPURE selezionare solo le righe in cui :Grade == Chosen.Grade e i nomi delle colonne contengono Chosen.Grade e creare un sottoinsieme?
- Come si crea una finestra di dialogo di selezione che legge la colonna :Grade e presenta i livelli in :Grade come scelte? La scelta dell'utente viene salvata nella variabile Chosen.Grade.
- Come selezionare le colonne il cui nome contiene Chosen.Grade?
- È più efficiente eseguire 1-3 operazioni OPPURE utilizzare JMP Table Query per ottenere le righe e le colonne di cui abbiamo bisogno da dtBigBoy?
Grazie in anticipo dalla umida e afosa Kuala Lumpur, Malesia!
Automazione e scriptingAccesso ai datiR: Come interrogare una tabella dati di grandi dimensioni in base al livello di una colonna e restituire le colonne il cui nome contiene quel livello?Non ne sono sicuro, ma credo che il filtro dati locale sarà simile a un sottoinsieme collegato; la tabella filtrata dipende dal fatto che la tabella rimanga aperta. 1e3 righe * 1e5 colonne * 8 byte/numero occupa meno di 1 GB e dovrebbe essere sufficiente in una memoria di oltre 16 GB. I sottoinsiemi collegati non dovrebbero aumentare significativamente la memoria richiesta.
Puoi provare la piattaforma di riepilogo in modo interattivo per ottenere una tabella riassuntiva della colonna dei voti. Puoi scaricare lo script da lì.
Puoi scrivere lo script della piattaforma del sottoinsieme più o meno allo stesso modo. Dovresti scrivere un ciclo per scegliere le colonne per il sottoinsieme.
Penso che sia improbabile che qualcuno sappia la risposta all'ultima domanda senza provarle entrambe. Credo che entrambe potrebbero essere abbastanza veloci.
R: Come interrogare una tabella dati di grandi dimensioni in base al livello di una colonna e restituire le colonne il cui nome contiene quel livello?A seconda del tipo di grafico che hai, non dovrebbero esserci troppi dati. Stai tracciando tutte le 1000 colonne contemporaneamente? L'utente sarebbe in grado di elaborare così tanti dati in una sola volta? Inizierei con il Filtro Dati Locale (usa Condizionale se è quello che vuoi) e poi passerei allo scripting se necessario (molto probabilmente non funzionerà in JMP Live). Cambiare le colonne è probabilmente la parte più difficile se non puoi semplicemente affidarti ai commutatori di colonna. Fornire alcuni semplici dati di esempio con qualche spiegazione aggiuntiva potrebbe essere utile.
Quando ho dovuto gestire oltre 4 milioni di righe, ho dovuto affidarmi a script con filtro dati locale, MA non era tanto la lentezza della visualizzazione singola, quanto piuttosto la macchinosità dell'aggiornamento del filtro dati locale: se qualcosa viene modificato, viene aggiornato immediatamente e non posso forzare l'aggiornamento solo in caso di modifiche specifiche. Quindi ho usato la tabella di riepilogo con il filtro dati locale con funzione di modifica e ho quindi aggiornato i dati visualizzati in base a ciò. Si potrebbe anche usare un filtro "totalmente" personalizzato utilizzando caselle di riepilogo e sottoinsiemi collegati.
R: Come interrogare una tabella dati di grandi dimensioni in base al livello di una colonna e restituire le colonne il cui nome contiene quel livello?Craige: Grazie per le informazioni sulla memoria e i suggerimenti! Li proveremo.
R: Come interrogare una tabella dati di grandi dimensioni in base al livello di una colonna e restituire le colonne il cui nome contiene quel livello?Jarmo:
Grazie per i suggerimenti.
No, non stiamo tracciando tutte le colonne contemporaneamente. Vogliamo creare un grafico IMR per Grado|Proprietà. Poiché ogni Grado e Proprietà ha specifiche diverse, dobbiamo suddividere il dt per Grado|Proprietà. Questo si traduce in molte colonne sparse. Vedi il frammento di codice seguente per una sola proprietà per 12 Gradi. Control Chart Builder non gradisce tutte le righe vuote.
Snippet of datatableSnippet of datatableFrammento di tabella dati
R: Come interrogare una tabella dati di grandi dimensioni in base al livello di una colonna e restituire le colonne il cui nome contiene quel livello?La situazione potrebbe essere cambiata dal 2021, ma questo post discute alcune opzioni relative ai valori mancanti nel generatore di grafici di controllo . Come disegnare grafici di controllo che ignorino i dati mancanti? (e ovviamente tramite scripting ci sono molte altre opzioni).
Modifica: Metodi di qualità e processo > Generatore di carte di controllo > Campioni esclusi e nascosti nel Generatore di carte di controllo