Hierarchy
hierarchy プレフィックスを使用して、親子階層テーブルを、Qlik Sense データ モデルで有用なテーブルに変換します。これは、LOAD や SELECT ステートメントの前に置き、ロード ステートメントの結果をテーブル変換の入力として使用します。
このプレフィックスを使用すると、展開ノード テーブルが作成されます。通常、レコード数は入力テーブルと同じですが、階層の各レベルがさらに別の項目に格納されます。パス項目は、ツリー構造で使用できます。
構文:
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 | 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 |