Cargar datos jerárquicos
Las jerarquías de n niveles desequilibrados se utilizan a menudo para representar dimensiones geográficas u organizativas en los datos, entre otras cosas.
Estos tipos de jerarquías se almacenan normalmente en una tabla de nodos adyacentes, que es una tabla en la que cada registro corresponde a un nodo y tiene un campo que contiene una referencia al nodo padre.
IDNodo | IDParentNode | Título |
---|---|---|
1 | - | Director General |
2 | 1 | Director Regional |
3 | 2 | Director de Oficina |
4 | 3 | Director de Departamento |
En este tipo de tabla, el nodo se almacena en un único registro, pero puede tener cualquier número de hijos. La tabla puede por supuesto contener campos adicionales que describan atributos para los nodos.
Una tabla de nodos adyacentes es óptima para el mantenimiento, pero difícil de utilizar en el trabajo diario. En las consultas y el análisis se suelen emplear otras representaciones en vez. La tabla de nodos expandidos es una representación habitual, en la que cada nivel de la jerarquía se almacena en un campo aparte. Los niveles en una tabla de nodos expandidos se pueden usar fácilmente, por ej. en una estructura de árbol. La palabra clave hierarchy se puede usar en el script de carga de datos para transformar una tabla de nodos adyacentes en una tabla de nodos expandidos.
Ejemplo:
IDNodo | IDParentNode | Título | Title1 | Title2 | Title4 | Title4 |
---|---|---|---|---|---|---|
1 | - | Director General | Director General | - | - | - |
2 | 1 | Director Regional | Director General | Director Regional | - | - |
3 | 2 | Director de Oficina | Director General | Director Regional | Director de Oficina | - |
4 | 3 | Director de Departamento | Director General | Director Regional | Director de Oficina | Director de Departamento |
Un inconveniente de la tabla de nodos expandidos es que no es fácil utilizar los campos de nivel para búsquedas o selecciones, dado que se necesita un conocimiento previo acerca de qué nivel explorar o seleccionar. Una tabla de antepasados supone una representación diferente que resuelve este problema. Esta representación también se conoce con el nombre de tabla puente.
Una tabla de antepasados contiene un registro por cada relación hijo-antepasado que encuentra en los datos. Contiene claves y nombres de los hijos y antepasados. Es decir, cada registro describe a qué nodo pertenece un nodo específico. La palabra clave hierarchybelongsto se puede usar en el script de carga de datos para transformar una tabla de nodos adyacentes en una tabla de ancestros.