Hierarchy

hierarchy 前置詞用來將上/下層階層表格轉換為可以在 QlikView 資料模型中使用的表格。它可以放在 LOADSELECT 陳述式的前面,而且將使用載入陳述式的結果作為表格轉換的輸入。

此前置詞會建立展開的節點表格,這一般會有與輸入表格相同的記錄數,不過除此之外階層中的各個層級會儲存在個別的欄位中。路徑欄位可以在樹狀結構中使用。

Syntax:  

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

此輸入表格必須是相鄰節點表格。相鄰節點表格是各個記錄對應於一個節點的表格,其中有欄位包含上層節點的參考。在這類表格中,節點僅儲存在一筆記錄內,但是節點仍可有任何數目的子節點。當然,表格可包含其他用來描述節點屬性的欄位。

輸入表格通常對於各個節點只有一筆記錄,因此,輸出表格將包含相同筆數的記錄。不過,有時候節點會有多個上層節點,也就是一個節點由輸入表格中的多筆記錄表示。若是如此,輸出表格的記錄會比輸入表格多。

上層識別碼不在節點資料行中的所有節點 (包括遺失上層識別碼的節點) 將被視為根節點。另外,只有直接或間接連線到根節點的節點才會載入,以避免循環參照。

可建立包含上層節點名稱、節點路徑和節點深度的其他欄位。

Arguments:  

引數 描述
NodeID 包含節點識別碼的欄位名稱。 此欄位必須存在於輸入表格中。
ParentID 包含上層節點識別碼的欄位名稱。 此欄位必須存在於輸入表格中。
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 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