Come Funziona il Concetto di Gerarchia
StratumTree implementa un'architettura dual-engine progettata per scalare su dataset complessi, supportando sia gerarchie categoriche a livelli fissi che grafi ricorsivi genitore-figlio.
1. Multi-Dimension Level Grouping
Ideale per dati categorici dove ogni riga rappresenta un record con granularità a più
livelli sequenziali (es. Region > Country > City > Store o
Department > Category > Product).
-
Query SQL generate automaticamente con sequenza di
GROUP BY - Costruzione albero via `buildMultiDimensionTree` (complessità O(N))
- Subtotali intermedi calcolati in post-order traversal per ogni livello
- In-Tree Search con conservazione del path di antenati fino alla foglia
2. Parent-Child Adjacency Graph
Ideale per strutture ricorsive ad albero con profondità variabile e non vincolata (es.
Organigrammi aziendali employee_id → manager_id o Piani dei Conti
Finanziari P&L).
- Risoluzione grafi di adiacenza con rilevamento e prevenzione cicli
-
Calcolo dinamico di profondità
depthe percorsipath - Query SQL Recursive CTE per motori compatibili (Postgres, Trino, Snowflake, DuckDB)
- Aggregazione bottom-up scalabile senza esplosione del piano query
Protocollo di Cross-Filtering Nativo Apache Superset 6.1.0 (`setDataMask`)
StratumTree interagisce direttamente con l'Event Bus di Superset. Quando l'utente clicca
su un nodo intermedio o su una riga foglia, il plugin costruisce un payload
extraFormData contenente un filtro IN con i valori
selezionati, trasmettendolo istantaneamente a tutti i chart della dashboard tramite la
callback setDataMask.
{
"extraFormData": {
"filters": [
{ "col": "region", "op": "IN", "val": ["Americas", "EMEA"] }
]
},
"filterState": {
"value": ["Americas", "EMEA"],
"label": "region: Americas, EMEA"
}
}
Ordinamento Gerarchico In-Tree
A differenza delle tabelle piatte tradizionali che disperdono le righe su sort, StratumTree riordina i nodi figli all'interno di ciascun ramo genitore ricorsivamente, preservando l'integrità dell'albero.
- Algoritmo ricorsivo O(N log N) isolato per sotto-rami
- Supporto ordinamento crescente/decrescente su qualsiasi metrica
Motore Variance Δ % & Esportazione CSV
Calcolo dinamico di scostamenti percentuali Period-over-Period (YoY) ed esportatore CSV nativo con indentazione a spazi, percorsi completi e subtotali intermedi inclusi.
-
Badge delta colorati con indicatori grafici
▲ / ▼ - Download immediato con codifica UTF-8 BOM per Excel
Pattern SQL: Query Ricorsiva CTE per Superset SQL Lab
Per i dataset Parent-Child su larga scala, puoi eseguire direttamente una CTE ricorsiva per pre-calcolare profondità e percorsi:
WITH RECURSIVE HierarchyCTE AS (
-- Anchor Member: Radici (Level 0)
SELECT id, parent_id, name, amount, 0 AS depth, CAST(name AS VARCHAR(1000)) AS path
FROM financial_accounts
WHERE parent_id IS NULL
UNION ALL
-- Recursive Member: Subtree
SELECT c.id, c.parent_id, c.name, c.amount, p.depth + 1, CAST(p.path || ' > ' || c.name AS VARCHAR(1000))
FROM financial_accounts c
JOIN HierarchyCTE p ON c.parent_id = p.id
)
SELECT * FROM HierarchyCTE ORDER BY path;