Saltar al contenido principal Saltar al contenido complementario

Hierarchy

El prefijo hierarchy se utiliza para transformar una tabla jerárquica padre-hijo en una tabla que sea útil en un modelo de datos Qlik Sense. Se puede poner frente a una sentencia LOAD o SELECT y usará el resultado de la sentencia de carga como entrada para una transformación de tabla.

El prefijo crea una tabla de nodos expandidos, la cual contiene normalmente el mismo número de registros que una tabla de entrada, pero además, cada nivel de la jerarquía se almacena en un campo aparte. El campo path puede utilizarse en una estructura arbórea.

Sintaxis:  

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

 

La tabla de entrada debe ser una tabla de nodos adyacentes. Las tablas de nodos adyacentes son tablas en las que cada registro se corresponde con un nodo y tiene un campo que contiene una referencia al nodo padre. En este tipo de tabla, el nodo se almacena en un único registro, pero puede tener un número indeterminado de hijos. La tabla puede por supuesto contener campos adicionales que describan atributos para los nodos.

El prefijo crea una tabla de nodos expandidos, la cual contiene normalmente el mismo número de registros que una tabla de entrada, pero además, cada nivel de la jerarquía se almacena en un campo aparte. El campo path puede utilizarse en una estructura arbórea.

Normalmente, la tabla de entrada tiene exactamente un registro por nodo y en dicho caso la tabla resultante contendrá el mismo número de registros. No obstante, a veces hay nodos con múltiples padres, esto es, un nodo viene representado por varios registros en la tabla de entrada. Si éste es el caso, la tabla resultante podrá contener un número mayor de registros que la tabla de entrada.

Todos los nodos con un id paterno que no se encuentre en la columna nodeid (incluidos aquellos nodos que hayan perdido su id de padre) se considerarán como raíces. Asimismo, únicamente se cargarán los nodos que posean una conexión a un nodo raíz – directa o indirecta – evitándose con esto las referencias circulares.

Los campos adicionales que contengan el nombre del nodo padre, la ruta del nodo y la profundidad del nodo se podrán crear sin problema.

Argumentos:  

Argumentos
Argumento Descripción
NodeID El nombre del campo que contiene el ID de nodo. Este campo debe existir en la tabla de entrada.
ParentID El nombre del campo que contiene el ID de nodo del nodo padre. Este campo debe existir en la tabla de entrada.
NodeName El nombre del campo que contiene el nombre del nodo. Este campo debe existir en la tabla de entrada.
ParentName Una cadena utilizada para nombrar el nuevo campo ParentName. Si se omite, dicho campo no se creará.
ParentSource Es el nombre del campo que contiene el nombre del nodo empleado para crear la ruta al nodo. Se trata de un parámetro opcional. Si se omite, se utilizará NodeName.
PathName Una cadena que se utiliza para nombrar el nuevo campo Path, que contiene la ruta de la raíz al nodo. Se trata de un parámetro opcional. Si se omite, dicho campo no se creará.
PathDelimiter Una cadena utilizada como delimitador en el nuevo campo Path. Se trata de un parámetro opcional. Si se omite, se utilizará "/".
Depth Una cadena utilizada para nombrar el nuevo campo Depth, que contiene la profundidad del nodo en la jerarquía. Se trata de un parámetro opcional. Si se omite, dicho campo no se creará.

Ejemplo:  

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

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.