HierarchyBelongsTo

이 접두사는 부모-자식 계층 구조 테이블을 QlikView 데이터 모델에서 유용한 테이블로 변환하는 데 사용됩니다. 이 접두사는 LOAD 또는 SELECT 문 앞에 넣을 수 있으며 로드 문의 결과를 입력으로 사용하여 테이블 변환을 수행합니다.

이 접두사를 사용하면 계층 구조의 모든 상위-자식 관계를 포함하는 테이블이 생성됩니다. 그러면 상위 필드를 사용하여 계층 구조의 전체 트리를 선택할 수 있습니다. 대부분의 경우 출력 테이블은 노드당 여러 레코드를 포함합니다.

구문:  

HierarchyBelongsTo (NodeID, ParentID, NodeName, AncestorID, AncestorName, [DepthDiff])(loadstatement | selectstatement)

 

입력 테이블은 인접 노드 테이블이어야 합니다. 인접 노드 테이블이란 각 레코드가 한 노드에 해당하고 부모 노드에 대한 참조를 포함하는 필드를 가지는 테이블입니다. 이러한 테이블에서 노드는 한 레코드에만 저장되지만 노드가 가질 수 있는 자식의 수에는 제한이 없습니다. 물론 테이블은 노드의 특성을 나타내는 추가 필드를 포함할 수 있습니다.

노드의 깊이 차이를 포함하는 추가 필드를 만들 수 있습니다.

인수:  

인수 설명
NodeID 노드 ID가 포함된 필드의 이름입니다. 이 필드는 입력 테이블에 존재해야 합니다.
ParentID 부모 노드의 노드 ID가 포함된 필드의 이름입니다. 이 필드는 입력 테이블에 존재해야 합니다.
NodeName 노드의 이름이 포함된 필드의 이름입니다. 이 필드는 입력 테이블에 존재해야 합니다.
AncestorID 상위 노드의 ID를 포함하는 새 상위 ID 필드의 이름을 지정하는 데 사용되는 문자열입니다.
AncestorName 상위 노드의 이름을 포함하는 새 상위 필드의 이름을 지정하는 데 사용되는 문자열입니다.
DepthDiff 계층 구조에서 상위 노드에 상대적인 노드의 깊이를 포함하는 새 DepthDiff 필드의 이름을 지정하는 데 사용되는 문자열입니다. 선택적인 파라메타입니다. 생략된 경우 이 필드가 생성되지 않습니다.

​예:  

HierarchyBelongsTo (NodeID, AncestorID, NodeName, AncestorID, AncestorName, DepthDiff) LOAD * inline [

NodeID, AncestorID, NodeName

1, 4, London

2, 3, Munich

3, 5, Germany

4, 5, UK

5, , Europe

];

결과:

NodeID AncestorID NodeName AncestorName DepthDiff
1 1 London London 0
1 4 London UK 1
1 5 London Europe 2
2 2 Munich Munich 0
2 3 Munich Germany 1
2 5 Munich Europe 2
3 3 Germany Germany 0
3 5 Germany Europe 1
4 4 UK UK 0
4 5 UK Europe 1
5 5 Europe Europe 0

참조 항목: