Creazione dinamica della struttura ad albero JSL da dati gerarchiciQualcuno può suggerire un metodo per creare una scatola ad albero nidificata dinamica utilizzando i dati gerarchici. Ho provato per un paio d'ore stasera e mi sta confondendo 
Di seguito ho alcuni dati fittizi per rappresentare le relazioni che sono profonde tre livelli. Ovviamente non voglio codificare questo in quanto non saprò in anticipo quanti livelli di "nidificazione" dovrò fare. In realtà saranno 10 o più livelli.
Ciao, Troia
Questo è quello con cui sto iniziando (tabella allegata)

Questo è ciò che voglio generare

AnaliticaSceneggiaturaRe: Creazione dinamica della struttura ad albero JSL da dati gerarchiciEcco qualcosa che ho messo insieme usando la tua tabella di esempio, che potrebbe aiutarti ad arrivare dove vuoi

Names Default To Here( 1 );
dt = Current Data Table();
maxLevels = Col Max( :EMPLEVEL );
dt << select where( :EMPLEVEL == 1 );
dtJoined = dt << subset( columns( :EMP_ID, :FULL_NAME ), selected rows( 1 ) );
For( m = 1, m <= N Cols( dtJoined ), m++,
Column( dtJoined, m ) << set name( Column( dtJoined, m ) << get name || "1" )
);
For( i = 2, i <= maxLevels, i++,
dt << select where( :EMPLEVEL == i );
dtTemp = dt << subset( columns( :EMP_ID, :FULL_NAME, :MGR_ID ), selected rows( 1 ) );
For( m = 1, m <= N Cols( dtTemp ), m++,
Column( dtTemp, m ) << set name( Column( dtTemp, m ) << get name || Char( i ) )
);
Eval(
Substitute(
Expr(
dtTemp2 = dtJoined << Join(
With( dtTemp ),
Merge Same Name Columns,
Match Flag( 0 ),
By Matching Columns( __emp__ = __mgr__ ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
)
),
Expr( __emp__ ), parse(":EMP_ID" || Char( i - 1 )),
Expr( __mgr__ ), Parse(":MGR_ID" || Char( i ))
)
);
Close( dtTemp, nosave );
Close( dtJoined, nosave );
dtJoined = dtTemp2;
);
theNameList={};
for(i=1,i<=maxLevels,i++,
insert into(theNameList, parse(":FULL_NAME" || char(i)))
);
Tabulate(
Show Control Panel( 0 ),
Add Table(
Row Table( Grouping Columns( eval(theNameList) ) )
)
)Re: Creazione dinamica della struttura ad albero JSL da dati gerarchiciPotresti prendere alcune idee da qui Albero delle directory: Esplora lo spazio utilizzato dalle cartelle o forse dall'indicizzatore di file su cui ho lavorato jthi-jmp-tools/file-indexer (github.com) (vedi bin/bin/DirectoryTreeHandler.jsl, non è ancora così generico come vorrei, ma spero che ci arrivi), il mio codice è attualmente un pasticcio, perché non ho avuto il tempo di finirlo e inizia il refactoring.
Nel mio codice l'input (corrente) è datatable in questo modo:

e il risultato finale attuale è qualcosa del genere:

Ho modificato l'elenco delle directory di input per includere una directory molto più profonda e sembrava non avere problemi. Penso che la parola magica qui potrebbe essere ricorsione

Si spera che la funzione get_directory_roots possa darti alcune idee.
Modificare:
Elenco delle funzioni JSL addin può anche fornire alcune idee, penso che non avesse più di 1 o due livelli
Re: Creazione dinamica della struttura ad albero JSL da dati gerarchiciPenso che questo si adatti alle tue esigenze da come le capisco:
Names Default to Here( 1 );
dt = Data Table( "DummyTable" );
relations = [=>];
For Each Row( dt,
relations[:FULL_NAME] = Tree Node( :FULL_NAME );
relations[:FULL_NAME] <<SET data="https://community.jmp.com/"></SET>
Re: Creazione dinamica della struttura ad albero JSL da dati gerarchici@ErraticAttach
Ottima soluzione!
Re: Creazione dinamica della struttura ad albero JSL da dati gerarchiciI diagrammi a lisca di pesce hanno un menu di scelta rapida per riorganizzarli. Usano tutti lo stesso albero displaybox. È possibile aggiungere altri controlli all'albero, simili all'etichetta. La piattaforma si nasconde in Analizza->QualitàAndProcesso->Diagramma.
dt = Open("/Z:/DummyTable.csv");
diagram = dt << diagram(parent(MGR_ID),child(EMP_ID),label(FULL_NAME));
// fishbone is the default, change it like this:
(report(diagram)[hierbox(1)])<<CHANGETYPE></CHANGETYPE>
Nidificato
lisca di pesce
Gerarchia
modifica: sembra che la piattaforma del diagramma potrebbe non essere in grado di riaprire un nodo chiuso in JMP 15/16 (tramite menu a comparsa). In JMP 14 può. Ho segnalato il problema.
Re: Creazione dinamica della struttura ad albero JSL da dati gerarchiciSi, sono d'accordo. Soluzione molto elegante. Mi stavo dirigendo verso il tracciamento delle relazioni genitore/figlio e le cose cominciavano a complicarsi.
Grazie a tutti per le risposte, molti ottimi frammenti di codice.
- Troia