Self-parenting
Auto-referencia jerárquica
El self-parenting es una técnica de dimensional modeling usada para balancear las jerarquías desequilibradas (ragged hierarchies). El principio es simple: una entidad que no tiene un nivel jerárquico superior se convierte en su propio padre a ese nivel.
Cómo funciona #
En una jerarquía de tres niveles Top Group → Group → Client:
- Un Client sin Group usa su propio nombre/ID como Group
- Un Group sin Top Group usa su propio nombre/ID como Top Group
El resultado es una tabla dimensional sin NULLs en las columnas jerárquicas, con todos los niveles siempre poblados.
Los flags de distinción #
Para no perder la información sobre qué entidades fueron balanceadas artificialmente, se agregan flags a la dimensión:
is_direct_client = 'Y': el cliente no tenía un Group en la fuenteis_standalone_group = 'Y': el Group no tenía un Top Group en la fuente
Estos flags permiten al negocio filtrar los “verdaderos” top groups de los clientes promovidos.
Por qué en el ETL y no en el reporte #
El self-parenting se aplica una vez en el ETL, no en cada reporte individual. Un reporte debería hacer GROUP BY y JOIN, no decidir cómo gestionar los niveles faltantes. Si la lógica de balanceo está en el modelo, todos los reportes se benefician automáticamente.