Hierarchy

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

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

Syntax:  

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

 

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

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

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

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

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

Arguments:  

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

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

];

 

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