Cosa ti ha ispirato a richiedere questa lista dei desideri?
Scrivo sempre script più o meno complicati per "pulire" le mie tabelle dati (rimuovere script di tabella, variabili di tabella, proprietà di colonna, ...)
Quale miglioramento vorresti vedere?
Fornire una piattaforma semplice per ripulire la tabella dati. Ciò dovrebbe dare la possibilità di rimuovere script di tabella, variabili di tabella, proprietà di colonna, stati di riga e tutte le diverse modifiche. Nel migliore dei casi l'utente potrebbe decidere quali rimuovere. Alcune di queste potrebbero essere implementate in Subset, ma ritengo che questa dovrebbe anche essere una piattaforma separata.
Perché questa idea è importante?
Rende più semplice la creazione di nuove tabelle dati da quelle esistenti, senza che vengano trasferite informazioni non pertinenti.
Idea interessante @jthi . Come fai oggi?
A seconda dei casi, posso:
- Esegui queste operazioni manualmente
- Scrivili (se si tratta di automatizzazione)
- A volte salto la pulizia e potrei ritrovarmi con una tabella dati un po' disordinata, ma non è un problema finché non condivido la tabella.
Molto probabilmente scriverò un componente aggiuntivo (ho già iniziato, ma mi sono imbattuto in una "piccola" aggiunta di funzionalità con un sacco di funzionalità non necessarie) per eseguire queste specifiche attività di pulizia dei "metadati", dato che le eseguo abbastanza regolarmente.
Finché il desiderio non riceverà abbastanza consensi, questo script potrebbe aiutare.
Crea uno script per la tabella dati corrente e, a seconda delle impostazioni, rimuove gli script, le proprietà delle colonne e l'espressione add rows().
Names Default To Here( 1 );
removeScripts = 1;
removeColumnProperties = 1;
remove rows = 1;
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << copy table script( "no data" );
tableScript = Eval( Eval Expr( Parse( Expr( Get Clipboard() ) ) ) );
tableScriptList = Substitute( Name Expr( tableScript ), Expr( New Table() ), Expr( List() ) );
If( removeScripts,
tableScriptList = Filter Each( {part}, tableScriptList, Not( Head( Part ) == Expr( New Script() ) ) )
);
tableScriptList = Transform Each( {part}, tableScriptList,
If(
Head( part ) == Expr( New Column() ) & removeColumnProperties,
Substitute( Name Expr( part ), Extract Expr( part, Set Property( Wild List() ) ), . ),
Head( part ) == Expr( Add Rows() ) & remove rows, .,
Name Expr( part )
)
);
newtableScript = Substitute( Name Expr( tableScriptList ), Expr( List() ), Expr( New Table() ) );
newtableScript;
È ben lungi dall'essere la situazione ideale.
Il sostituto è piuttosto pericoloso: non sostituisce solo l'espressione che l'utente voleva sostituire, ma sostituisce tutte le espressioni corrispondenti!
ad esempio qualsiasi elenco rimasto alla fine dello script verrà sostituito da New Table() !!!
Ogni nuova table() presente in uno script di tabella verrà sostituita da List() [e quindi da New table() alla fine :]
Conosci qualche soluzione alternativa per impedire a JMP di farlo?
Capo Sostituto ?
Con questo problema in mente, ho scritto questo desiderio:
:folded_hands: Indicizzazione delle espressioni: accesso in lettura e scrittura
Non appena sarà disponibile, aggiornerò lo script e lo renderò più robusto.