Hierarchy

hierarchyプレフィックスは、親子階層テーブルをQlikView データ モデルで有用なテーブルに変換する際に使用します。これは、LOADSELECT ステートメントの前に置き、ロード ステートメントの結果をテーブル変換の入力として使用します。

このプレフィックスを使用すると、展開ノード テーブルが作成されます。通常、レコード数は入力テーブルと同じですが、階層の各レベルがさらに別の項目に格納されます。パス項目は、ツリー構造で使用できます。

構文:  

Hierarchy (NodeID, ParentID, NodeName, [ParentName], [PathSource], [PathName], [PathDelimiter], [Depth])(loadstatement | selectstatement) 

入力テーブルは、隣接するノード テーブルでなければなりません。通常、隣接するノード テーブルは、各レコードがノードと一致し、親ノードへの参照を含む項目が含まれます。このようなテーブルでは、ノードは 1 つのレコードにしか保存されませんが、子ノードをいくつでも持つことができます。当然のことながら、テーブルには、ノードの属性が記述された追加項目が含まれている可能性があります。

通常、入力テーブルには各ノードに 1 件のレコードが含まれており、出力テーブルにも同数のレコードが含まれます。しかし、場合によっては複数の親を持つノードがあり、1 つのノードが入力テーブル内にある複数のレコードで表されることがあります。その場合、出力テーブルのレコード数は入力テーブルを上回ります。

ノード ID 列にない 親 ID を持つノード (親 ID がないノードを含む) はすべて、ルートとみなされます。また、直接/間接を問わず、ルート ノードに接続されているノードのみをロードし、循環参照を回避します。

親ノードのノード名とノードのパス、ノードの階層レベルを含む追加項目を作成することもできます。

引数:  

引数 説明
NodeID ノード ID を含む項目の名前。 この項目は入力テーブルになくてはなりません。
ParentID 親ノードのノード ID を含む項目の名前。 この項目は入力テーブルになくてはなりません。
NodeName ノード名が含まれる項目の名前。 この項目は入力テーブルになくてはなりません。
ParentName 新しいParentName項目に名前を付けるための文字列。省略すると、この項目は作成されません。
ParentSource ノード パスの構築に使用するノード名が含まれた項目の名前。このパラメータはオプションです。省略すると、NodeNameが使われます。
PathName 新しいPath項目に名前を付けるための文字列で、ルートからノードへのパスが含まれます。このパラメータはオプションです。省略すると、この項目は作成されません。
PathDelimiter 新しいPath項目の区切り記号として使用する文字列。このパラメータはオプションです。省略すると '/' が使われます。
Depth 新しいDepth項目に名前を付けるための文字列で、ノードの階層レベルを含みます。このパラメータはオプションです。省略すると、この項目は作成されません。

例:  

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

];

結果:

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

参照項目: