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 |