Hierarchy

Prefiks hierarchy służy do przekształcenia tabeli hierarchii nadrzędne-podrzędne w tabelę nadającą się do zastosowania 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 tworzy tabelę węzłów rozszerzonych, która zwykle zawiera tyle samo wierszy co tabela wejściowa, ale dodatkowo w osobnym polu zapisane są poziomy hierarchii. Pole ścieżki może być użyte w strukturze drzewa.

Syntax:  

Hierarchy (NodeID, ParentID, NodeName, [ParentName], [PathSource], [PathName], [PathDelimiter], [Depth])(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.

Tabela wejściowa zawiera zwykle dokładnie jeden rekord na każdy węzeł i w takim przypadku tabela wyjściowa będzie zawierać tyle samo rekordów. Niekiedy istnieją też jednak węzły o wielu elementach macierzystych, przez co jednemu węzłowi odpowiada kilka rekordów w tabeli wejściowej. W takim przypadku tabela wyjściowa może zawierać więcej rekordów od tabeli wejściowej.

Wszystkie węzły bez identyfikatora węzła nadrzędnego w kolumnie identyfikatora węzła (w tym węzły z brakującym identyfikatorem węzła nadrzędnego) zostaną uznane za węzły najwyższego poziomu. Ponadto zostaną załadowane jedynie węzły posiadające połączenie (bezpośrednie lub pośrednie) z węzłem najwyższego poziomu, co pozwala unikać odwołań cyklicznych.

Można tworzyć dodatkowe pola zawierające nazwę węzła nadrzędnego, ścieżkę węzła i głębokość węzła.

Arguments:  

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.
ParentName Ciąg znaków używany jako nazwa nowego pola ParentName. W przypadku pominięcia to pole nie zostanie utworzone.
ParentSource Nazwa pola zawierającego nazwę węzła użytą podczas budowania ścieżki do węzła. Parametr opcjonalny. W razie jego pominięcia zostanie użyte pole NodeName.
PathName Ciąg znaków używany do nazwania nowego pola Path, które zawiera ścieżkę od elementu najwyższego poziomu do węzła. Parametr opcjonalny. W przypadku pominięcia to pole nie zostanie utworzone.
PathDelimiter Ciąg znaków używany jako separator w nowym polu Path. Parametr opcjonalny. W razie jego pominięcia zostanie użyty znak „/”.
Depth Ciąg znaków używany do nazwania nowego pola Depth, które zawiera głębokość węzła w hierarchii. Parametr opcjonalny. W przypadku pominięcia to pole nie zostanie utworzone.

Example:  

Hierarchy(NodeID, ParentID, NodeName, ParentName, NodeName, PathName, '\', Depth) LOAD * inline [

NodeID, ParentID, NodeName

1, 4, London

2, 3, Munich

3, 5, Germany

4, 5, UK

5, , Europe

];

Wynik:

NodeID NodeName ParentID ParentName NodeName1 NodeName2 NodeName3 PathName Depth
5 Europe   - Europe - - Europe 1
3 Germany 5 Europe Europe Germany - Europe\Germany 2
2 Munich 3 Germany Europe Germany Munich Europe\Germany\Munich 3
4 UK 5 Europe Europe UK - Europe\UK 2
1 London 4 UK Europe UK London Europe\UK\London 3