Attivazione e disattivazione delle tabelle di dati privatiPer mantenere puliti molti dei miei script, uso spesso "privato". Tuttavia, se sto risolvendo i problemi di uno script, avere tabelle come private si intromette e devo commentare e, si spera, ricordarmi di rimuovere il commento mentre apporto modifiche per vedere se le modifiche funzionano.
C'è un modo o JMP dispone già di un modo globale per attivare o disattivare le tabelle private? Nella mia testa potrei prendermi il tempo per creare duplicati del mio codice con e senza private e legarlo a una variabile di test, ma non sembra la risposta migliore.
Non ero sicuro che ci fossero idee là fuori su come farlo. Grazie!
Automazione e scriptingRi: Attivazione e disattivazione delle tabelle dati privateOttimo, Vince! È simile a quello che ho finito per fare, ma è molto più elegante nel consentire a dataview di andare in entrambe le direzioni.
Ri: Attivazione e disattivazione delle tabelle dati privateConcordato @Craige_Hales E @txnelson su quei punti.@Ressel , il motivo principale per cui di solito opto per le tabelle private è quando ho uno script che apporta modifiche/aggiornamenti/ecc molte tabelle. Se vengono lasciati soli, possono essere molto appariscenti sullo schermo di fronte a un utente mentre le finestre si alzano, si allontanano, ecc. Se sono invisibili, l'utente potrebbe vedere molte attività nell'elenco delle finestre che possono anche essere una distrazione.
Opto per le tabelle private la maggior parte delle volte in quanto consentono l'interfaccia più pulita per l'utente con solo i passaggi visivi necessari che sono visivi. A seconda del numero di tavoli e del computer dell'utente, i vantaggi della RAM sono anche un aumento della velocità complessiva.
Ri: Attivazione e disattivazione delle tabelle dati privateJim ha ragione; una tabella privata non ha una struttura di finestra del sistema operativo creata, mentre una tabella invisibile ha una finestra che non viene visualizzata. Potrebbe esserci un piccolo risparmio di CPU e memoria che potrebbe sommarsi se ci sono centinaia o migliaia di tabelle.
L'unica volta che ho usato privato è stato quando ho scritto FileSnapper e volevo che l'applicazione funzionasse silenziosamente senza disturbare l'ambiente JSL per qualsiasi altro JSL in esecuzione. Per lo più non riesci a rilevare affatto la tabella dei dati privati. Ha un nome di colonna che si intromette un po'.
Ri: Attivazione e disattivazione delle tabelle dati privateNathan, è utile?
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
privateTable = Function({bool,dt},{default local},
table_name = dt << Get Name;
If(!bool & !(dt << HasDataView), // no table but you want one
print("making "||table_name||" public");
dt << New Data View;
Return(dt);
, // elif
bool & dt << HasDataView, // you have a table but want it private
print("making "||table_name||" private");
dt_sub = dt << Subset( All rows, Selected columns only( 0 ), "private" );
close(dt, no save);
dt_sub << Set Name(table_name);
return(dt_sub);
, // else just return what's given
print("passthrough");
return(dt);
)
);
dt = privateTable(1, dt); // should make it private
wait(2);
dt = privateTable(1, dt); // should do nothing
wait(2);
dt = privateTable(0, dt); // should do make it visible
wait(2);
dt = privateTable(1, dt); // should do make it private again
Ri: Attivazione e disattivazione delle tabelle dati privateRisparmiare RAM è il vantaggio.Una tabella privata non crea alcun oggetto visibile.Tutti questi oggetti dovrebbero essere mappati alla memoria se sono visibili.
Ri: Attivazione e disattivazione delle tabelle dati privateQuali sono esattamente i vantaggi dell'utilizzo di tavoli privati? Salvare la memoria?
Ri: Attivazione e disattivazione delle tabelle dati privateSÌ! Questo è sicuramente sul mio radar. Ho una libreria di funzioni/utilità che tengo a portata di mano (e distribuisco) molte di quelle cose, e il passaggio all'aspetto delle funzioni personalizzate è un piano a lungo termine per molte delle funzioni più dinamiche.
Ri: Attivazione e disattivazione delle tabelle dati privateSe hai bisogno di questa funzione spesso, potresti trarre vantaggio dalla creazione della funzione personalizzata Creazione di funzioni, trasformazioni e formati personalizzati (jmp.com) .In questo modo puoi anche vedere la funzione personalizzata direttamente dall'indice di scripting.
Ri: Attivazione e disattivazione delle tabelle dati privateGrazie a tutti! Ho finito per fare quanto segue che, sebbene non ideale, dovrebbe funzionare abbastanza bene. Ho creato una funzione e ho una variabile nella parte superiore del mio script per attivare/disattivare sostanzialmente il privato
seePrivateTables = 1;
unprivatizeTable = Function({bool,tableName},{default local},
If(bool == 1,
tableName << New Data View;
Return(tableName)
,
Return(tableName)
)
);
// ... various code
dt1 = dt << Summary(.... , private);
dt1 = unprivatizeTable(seePrivateTables, dt1);Finché ricordo di chiamare quella funzione quando creo nuove tabelle, dovrei essere in grado di attivare e disattivare le tabelle private in blocco.
Ri: Attivazione e disattivazione delle tabelle dati privateLe tabelle visibili e invisibili vengono monitorate da JMP. Puoi tenerli d'occhio nella finestra di casa, ad esempio. Le tabelle private vengono tracciate solo dal codice che le crea. Se non riesci a chiudere una tabella privata prima di sovrascrivere la variabile JSL che contiene il suo handle, la tabella è ancora in memoria ma irraggiungibile. Verrà chiuso al termine di JMP. (Window->CloseAllDataTables non riesce a trovare le tabelle private e non le chiude.)
Sono anche abbastanza sicuro che JMP non esponga un modo per rendere privata una tabella visibile o invisibile. Puoi trasformare un tavolo privato in uno invisibile, se hai la maniglia, in questo modo:
dtA = Open( "$SAMPLE_DATA/Big Class.jmp", private );
// getting the data box makes it invisible
b = dtA << New Data Box();
// then show window makes it visible
dtA << Show Window;
Sfortunatamente, la parola chiave invisibile È una parola chiave e non può essere passata come variabile, almeno a open(). Non sono sicuro del sottoinsieme, ecc. Probabilmente il meglio che puoi fare è aggiungere una chiamata a una funzione utente che fa qualcosa come sopra dopo ogni punto in cui crei o apri una tabella.
Ri: Attivazione e disattivazione delle tabelle dati privatePotresti essere in grado di rendere visibile la tabella privata utilizzando << Nuova visualizzazione dati. Non sono al 100% cosa fa in questo contesto, ma sembra rendere visibili le tabelle private e l'ho usato per il debug:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp", private);
wait(2);
dt << New Data View;
non ho idea di come renderlo di nuovo privato, ma << Show Window(0); lo renderà almeno invisibile.
Ri: Attivazione e disattivazione delle tabelle dati privateNon sono a conoscenza della possibilità di attivare e disattivare Private, poiché richiederebbe la creazione al volo di tutti gli oggetti di visualizzazione in memoria.Tuttavia, è possibile utilizzare il messaggio Mostra finestra per visualizzare/nascondere tabelle di dati normali o invisibili.
data table("Daily Blood Pressure")<<SHOW window=""></SHOW>