Ragged hierarchy
Gerarchia sbilanciata, Unbalanced hierarchy
Una ragged hierarchy (gerarchia sbilanciata) è una struttura gerarchica in cui non tutti i rami raggiungono la stessa profondità. Alcuni livelli intermedi sono assenti per determinate entità.
Esempio concreto #
In una gerarchia a tre livelli Top Group → Group → Client:
- Alcuni clienti hanno tutti e tre i livelli (gerarchia completa)
- Alcuni clienti hanno un Group ma nessun Top Group
- Alcuni clienti non hanno né Group né Top Group (clienti diretti)
Il risultato è una struttura con “buchi” che causa problemi nei report di aggregazione: righe con NULL, totali spezzati, drill-down incompleti.
Perché è un problema nel DWH #
I tool di BI e le query SQL si aspettano gerarchie complete per funzionare correttamente. Un GROUP BY su una colonna con NULL produce risultati inattesi: le righe con NULL vengono raggruppate separatamente, i totali non tornano, e lo stesso gruppo può apparire su più righe.
Come si risolve #
La tecnica standard è il self-parenting: chi non ha un padre diventa padre di sé stesso. Questo bilancia la gerarchia a monte, nell’ETL, eliminando i NULL dalla tabella dimensionale. Flag aggiuntivi (is_direct_client, is_standalone_group) permettono di distinguere le entità bilanciate artificialmente da quelle con gerarchia naturale.