HierarchyBelongsTo

This prefix is used to transform a parent-child hierarchy table to a table that is useful in a Qlik Sense data model. It can be put in front of a LOAD or a SELECT statement and will use the result of the loading statement as input for a table transformation.

The prefix creates a table containing all ancestor-child relations of the hierarchy. The ancestor fields can then be used to select entire trees in the hierarchy. The output table in most cases contains several records per node.

Syntax:  

HierarchyBelongsTo (NodeID, ParentID, NodeName, AncestorID, AncestorName, [DepthDiff])(loadstatement | selectstatement)

 

The input table must be an adjacent nodes table. Adjacent nodes tables are tables where each record corresponds to a node and has a field that contains a reference to the parent node. In such a table the node is stored on one record only but the node can still have any number of children. The table may of course contain additional fields describing attributes for the nodes.

The prefix creates a table containing all ancestor-child relations of the hierarchy. The ancestor fields can then be used to select entire trees in the hierarchy. The output table in most cases contains several records per node.

An additional field containing the depth difference of the nodes can be created.

Arguments:  

Argument Description
NodeID The name of the field that contains the node id. This field must exist in the input table.
ParentID The name of the field that contains the node id of the parent node. This field must exist in the input table.
NodeName The name of the field that contains the name of the node. This field must exist in the input table.
AncestorID A string used to name the new ancestor id field, which contains the id of the ancestor node.
AncestorName A string used to name the new ancestor field, which contains the name of the ancestor node.
DepthDiff A string used to name the new DepthDiff field, which contains the depth of the node in the hierarchy relative the ancestor node. Optional parameter. If omitted, this field will not be created.

Example:  

HierarchyBelongsTo (NodeID, AncestorID, NodeName, AncestorID, AncestorName, DepthDiff) LOAD * inline [

NodeID, AncestorID, NodeName

1, 4, London

2, 3, Munich

3, 5, Germany

4, 5, UK

5, , Europe

];

 

NodeID AncestorID NodeName AncestorName DepthDiff
1 1 London London 0
1 4 London UK 1
1 5 London Europe 2
2 2 Munich Munich 0
2 3 Munich Germany 1
2 5 Munich Europe 2
3 3 Germany Germany 0
3 5 Germany Europe 1
4 4 UK UK 0
4 5 UK Europe 1
5 5 Europe Europe 0

Did this information help you?

Thanks for letting us know. Is there anything you'd like to tell us about this topic?

Can you tell us why it did not help you and how we can improve it?