Hierarchy
hierarchy 前缀用于将父子层次表格转换成在 Qlik Sense 数据模型中有用的表格。此前缀可能置于 LOAD 或 SELECT 语句前面,并会使用加载的语句结果作为表格转换的输入。
此前缀创建了一个扩展节点表格,通常其与输入的表格具有相同数目的记录,但除此之外, 所有层次结构级别均存储于单独的字段内。路径字段可以在树结构中使用。
语法:
Hierarchy (NodeID, ParentID, NodeName, [ParentName, [PathSource, [PathName, [PathDelimiter, Depth]]]])(loadstatement | selectstatement)
输入表格必须为相邻节点表格。相邻表格内每个记录对应一个节点,并且拥有一个包含父节点参考的字段。此类表格内的节点存储在一个记录上,但节点仍拥有任意数量的子节点。表格可能包含更多描述节点属性的字段。
此前缀创建了一个扩展节点表格,通常其与输入的表格具有相同数目的记录,但除此之外, 所有层次结构级别均存储于单独的字段内。路径字段可以在树结构中使用。
输入表格通常只有一个节点记录,此时输出表格包含相同的记录数。但是,节点有时会带有多个父节点,即一个节点由输入表格中的几个记录表示。在此情况下,输出表格拥有的记录可能多于输入表格。
未见于节点 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 |