계층적 데이터에서 동적 JSL 트리 상자 생성누군가 계층적 데이터를 사용하여 동적 중첩 트리 상자를 만드는 방법을 제안할 수 있습니까? 오늘 밤에 몇 시간 동안 시도해 보았는데 혼란스럽습니다. 
아래에는 세 가지 수준 깊이의 관계를 설명하는 더미 데이터가 있습니다. 분명히 나는 얼마나 많은 '중첩' 수준을 만들어야 하는지 미리 알 수 없기 때문에 이것을 하드 코딩하고 싶지 않습니다. 실제로는 10개 이상의 레벨이 됩니다.
건배, 트로이
이것이 내가 시작하는 것입니다 (표 첨부)

이것이 내가 생성하고 싶은 것입니다.

자동화 및 스크립팅Re: 계층적 데이터에서 동적 JSL 트리 상자 생성코드가 잘린 것 같아요
Re: 계층적 데이터에서 동적 JSL 트리 상자 생성닫힌 노드를 다시 열 수 없는 문제를 보고해 주셔서 감사합니다. @Craige_Hales .이 버그는 JMP 17에서 해결되었습니다.
Re: 계층적 데이터에서 동적 JSL 트리 상자 생성그래, 난 동의. 매우 우아한 솔루션입니다. 나는 부모/자식 관계를 추적하는 길로 향하고 있었고 상황이 지저분해지기 시작했습니다.
훌륭한 코드 조각과 답변을 보내주신 모든 분들께 감사드립니다.
- 트로이
Re: 계층적 데이터에서 동적 JSL 트리 상자 생성피쉬본 다이어그램에는 재정렬할 수 있는 마우스 오른쪽 버튼 클릭 메뉴가 있습니다. 그들은 모두 동일한 디스플레이 상자 트리를 사용합니다. 레이블과 유사하게 트리에 다른 컨트롤을 추가할 수 있습니다. 플랫폼은 Analyze->QualityAndProcess->Diagram 아래에 숨겨져 있습니다.
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>
NestedNested중첩됨
FishboneFishbone생선뼈
HierarchyHierarchy 계층
편집: 다이어그램 플랫폼이 JMP 15/16에서 닫힌 노드를 다시 열 수 없는 것 같습니다(팝업 메뉴를 통해). JMP 14에서는 가능합니다. 문제를 보고했습니다.
Re: 계층적 데이터에서 동적 JSL 트리 상자 생성@ErraticAttack
훌륭한 솔루션입니다!
Re: 계층적 데이터에서 동적 JSL 트리 상자 생성나는 이것이 당신의 요구에 적합하다고 생각합니다.
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: 계층적 데이터에서 동적 JSL 트리 상자 생성여기에서 몇 가지 아이디어를 얻을 수도 있습니다. 디렉토리 트리: 폴더가 사용하는 공간 탐색 아니면 내가 작업하고 있는 파일 인덱서에서 나온 것일 수도 있습니다. jthi-jmp-tools/file-indexer (github.com) (bin/bin/DirectoryTreeHandler.jsl을 참조하세요. 아직 제가 원하는 만큼 일반적이지는 않지만, 거기에 도달할 수 있기를 바랍니다.) 제 코드는 아직 완료할 시간이 없었기 때문에 현재 엉망입니다. 그리고 리팩토링을 시작하세요.
내 코드에서 (현재) 입력은 다음과 같이 데이터 가능합니다.

현재 최종 결과는 다음과 같습니다.

훨씬 더 깊은 디렉토리 하나를 포함하도록 입력 디렉토리 목록을 수정했는데 문제가 없는 것 같았습니다. 내 생각엔 여기서 마법의 단어가 재귀일 수도 있을 것 같아

get_directory_roots 함수가 여러분에게 몇 가지 아이디어를 제공할 수 있기를 바랍니다.
편집하다:
JSL 함수 목록 추가 기능은 몇 가지 아이디어를 제공할 수도 있지만 레벨이 1~2개 정도는 아닌 것 같습니다.
Re: 계층적 데이터에서 동적 JSL 트리 상자 생성다음은 샘플 테이블을 사용하여 원하는 위치에 도달하는 데 도움이 될 수 있는 내용입니다.

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) ) )
)
)