HierarchyBelongsTo
Prefiks ten służy do przekształcenia tabeli hierarchii nadrzędne-podrzędne w tabelę nadającą się do użycia w modelu danych QlikView. Podanie go przed instrukcją LOAD lub SELECT sprawi, że wynik instrukcji ładującej będzie używany jako dane wejściowe dla transformacji tabeli.
Prefiks powoduje utworzenie tabeli zawierającej wszystkie relacje nadrzędny-podrzędny w całej hierarchii. Wybierając pola nadrzędne, można następnie wybierać całe drzewa hierarchii. Tabela wyjściowa zwykle zawiera kilka rekordów dla każdego węzła.
Składnia:
HierarchyBelongsTo (NodeID, ParentID, NodeName, AncestorID, AncestorName, [DepthDiff])(loadstatement | selectstatement)
Tabela wejściowa musi być tabelą węzłów sąsiadujących. Tabela węzłów sąsiadujących to tabela, w której każdy rekord odpowiada jednemu węzłowi i zawiera pole z odwołaniem do węzła macierzystego. W takiej tabeli każdy węzeł jest zapisany tylko w jednym rekordzie, ale mimo to może mieć dowolną liczbę węzłów potomnych. Tabela może oczywiście zawierać dodatkowe pola opisujące atrybuty węzłów.
Można utworzyć dodatkowe pole opisujące różnice między głębokością węzłów.
Argumenty:
Argument | Opis |
---|---|
NodeID | Nazwa pola zawierającego identyfikator węzła. To pole musi istnieć w tabeli wejściowej. |
ParentID | Nazwa pola zawierającego identyfikator węzła nadrzędnego. To pole musi istnieć w tabeli wejściowej. |
NodeName | Nazwa pola zawierającego nazwę węzła. To pole musi istnieć w tabeli wejściowej. |
AncestorID | Ciąg znaków używany do nazwania nowego pola identyfikatora węzła nadrzędnego, które zawiera identyfikator węzła nadrzędnego. |
AncestorName | Ciąg znaków używany do nazwania nowego pola węzła nadrzędnego, które zawiera nazwę węzła nadrzędnego. |
DepthDiff | Ciąg znaków używany do nazwania nowego pola DepthDiff, które zawiera głębokość węzła w hierarchii względem węzła nadrzędnego. Parametr opcjonalny. W przypadku pominięcia to pole nie zostanie utworzone. |
Przykład:
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
];
Wynik:
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 |