Problema : eseguo uno script per caricare i dati da un database. Cancello tutte le formule dalla tabella dati. Copio lo script della tabella usando il menu del triangolo rosso. Incollo lo script della tabella in una finestra di script. Eseguo lo script. La tabella risultante dallo script della tabella ha un raggruppamento di colonne diverso e genera le colonne (vedi screenshot che mostra il pannello Colonne dalla tabella originale e dalla tabella creata dallo script della tabella fianco a fianco. Vedi anche file allegati per riferimento).

Inizialmente sospettavo che ciò fosse dovuto al fatto che lo script della tabella non preservava gli spazi bianchi iniziali nei nomi delle colonne, ma come mostra lo screenshot seguente, gli spazi bianchi iniziali fanno effettivamente parte dello script della tabella, semplicemente non sono considerati nella tabella ricreata dal sceneggiatura della tabella.

C'è un modo per ricreare davvero la tabella di dati originale, inclusi gli spazi bianchi nei nomi delle colonne o è generalmente una strategia di scripting scadente?
Anche se non userei mai gli spazi bianchi iniziali nel nome della colonna (eviterei anche la maggior parte dei caratteri speciali), in questo caso direi che dovrebbe funzionare, poiché sembra essere un nome di colonna valido in JMP.Direi che questo è un bug con New Column.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
);
wait(1);
Column(dt, 2) << Set Name(" A");
wait(1);
dt << New Column(" A");
L'unica soluzione "rapida" che mi viene in mente è aggiungere << Imposta nome su nuova tabella script, ma non sono sicuro che ciò si attiverebbe prima che i raggruppamenti vengano eseguiti
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]), << Set Name(" A"))
);
quindi dovresti prima caricare lo script negli appunti e poi ottenerlo come testo e modificarlo prima di eseguirlo.
Questo è un esempio molto veloce che funziona con questo esempio:
Names Default To Here(1);
str = JSL Quote(dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
));
new_lines = {};
For Each({line}, Words(str, "\!N"),
If(Starts With(Trim Whitespace(line), "New Column("),
// get column name
col_name = Regex(Trim Whitespace(line), "^New Column\(\!"(.+?)\!",\s", "\1");
// add set name
last_idx = Contains(line, ")", -1);
new_line = Left(line, last_idx - 1) || ", << Set Name(\!"" || col_name ||"\!")),";
Insert Into(new_lines, new_line);
,
Insert Into(new_lines, line);
);
);
old_dt = Eval(Parse(str));
new_dt = Eval(Parse(Concat Items(new_lines, "\!N")));
@jthi Grazie. Temevo che la guida degli spazi bianchi fosse una cattiva pratica. Qualche elenco a cui questo bug può o può essere aggiunto o segnalato?
Inoltre, penso che sia più facile riscrivere il mio script per dare nomi di colonna diversi piuttosto che implementare le soluzioni alternative da te suggerite. (Ha etichettato la tua risposta accidentalmente come soluzione quando in realtà ho appena provato a rispondere.) Come sempre, grazie per il tuo prezioso contributo e gli instancabili sforzi per educare altri utenti JMP. Questo è estremamente utile.
Di solito ho contattato il supporto jmp con dei bug. Questo post dovrebbe essere un buon esempio della situazione, quindi ricorda di aggiungere un collegamento a questo.
È sicuramente (secondo me) una buona idea rinominare le colonne piuttosto che provare a gestire una sorta di strane soluzioni alternative. Quegli spazi bianchi potrebbero comunque causare problemi in seguito.