Hierarchy

hierarchy 前缀用于将父子层次表格转换成在 QlikView 数据模型中有用的表格。此前缀可能置于 LOADSELECT 语句前面,并会使用加载的语句结果作为表格转换的输入。

此前缀创建了一个扩展节点表格,通常其与输入的表格具有相同数目的记录,但除此之外, 所有层次结构级别均存储于单独的字段内。路径字段可以在树结构中使用。

Syntax:  

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

输入表格必须为相邻节点表格。相邻表格内每个记录对应一个节点,并且拥有一个包含父节点参考的字段。此类表格内的节点存储在一个记录上,但节点仍拥有任意数量的子节点。表格可能包含更多描述节点属性的字段。

输入表格通常只有一个节点记录,此时输出表格包含相同的记录数。但是,节点有时会带有多个父节点,即一个节点由输入表格中的几个记录表示。在此情况下,输出表格拥有的记录可能多于输入表格。

未见于节点 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 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