Hierarchy
hierarchy 前置詞用來將上下層式階層表格轉換為可以在 Qlik Sense 資料模型中使用的表格。它可以放在 LOAD 或 SELECT 陳述式的前面,而且將使用載入陳述式的結果做為表格轉換的輸入。
此前置詞會建立展開的節點表格,這一般會有與輸入表格相同的記錄數,不過除此之外階層中的各個層級會儲存在個別的欄位中。路徑欄位可以在樹狀結構中使用。
語法:
Hierarchy (NodeID, ParentID, NodeName, [ParentName, [PathSource, [PathName, [PathDelimiter, Depth]]]])(loadstatement | selectstatement)
此輸入表格必須是相鄰節點表格。相鄰節點表格是各個記錄對應於一個節點的表格,其中有欄位包含上層節點的參考。在這類表格中,節點僅儲存在一筆記錄內,但是節點仍可有任何數目的子節點。當然,表格可包含其他用來描述節點屬性的欄位。
此前置詞會建立展開的節點表格,這一般會有與輸入表格相同的記錄數,不過除此之外階層中的各個層級會儲存在個別的欄位中。路徑欄位可以在樹狀結構中使用。
輸入表格通常對於各個節點只有一筆記錄,因此,輸出表格將包含相同筆數的記錄。不過,有時候節點會有多個上層節點,也就是一個節點由輸入表格中的多筆記錄表示。若是如此,輸出表格的記錄會比輸入表格多。
上層識別碼不在節點資料行中的所有節點 (包括遺失上層識別碼的節點) 將被視為根節點。另外,只有直接或間接連線到根節點的節點才會載入,以避免循環參照。
可建立包含上層節點名稱、節點路徑和節點深度的其他欄位。
引數:
引數 | 描述 |
---|---|
NodeID | 包含節點識別碼的欄位名稱。 此欄位必須存在於輸入表格中。 |
ParentID | 包含上層節點識別碼的欄位名稱。 此欄位必須存在於輸入表格中。 |
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 |