I dati pubblici diventano davvero utili quando possono essere non soltanto consultati, ma anche compresi, verificati e riorganizzati per rispondere a una domanda.
La disponibilità di un file o di un servizio di accesso rappresenta soltanto il punto di partenza. Tra il dato diffuso da un’istituzione e una rappresentazione leggibile si collocano numerosi passaggi: individuare la fonte corretta, comprenderne la struttura, interpretare le classificazioni, controllare la qualità delle serie, costruire un modello coerente e scegliere come presentare le informazioni. È attraverso questi passaggi che prende forma il modello semantico: l’insieme delle definizioni, delle relazioni e delle regole che attribuiscono ai dati un significato coerente.
Il progetto descritto in questo articolo nasce proprio con questo intento: partire dagli Open Data ISTAT sul bilancio demografico mensile e costruire una dashboard web interattiva, semplice da consultare, fondata su un processo verificabile e orientata a domande informative precise.
Il fenomeno raccontato mese per mese
Il bilancio demografico descrive come cambia la popolazione residente nel tempo. La sua consistenza non dipende soltanto dal numero delle nascite e dei decessi: al saldo naturale si affiancano i trasferimenti di residenza tra territori, i movimenti con l’estero e altre variazioni anagrafiche. Queste componenti vengono osservate su base mensile.
Queste componenti mensili consentono di leggere con maggiore dettaglio fenomeni che, se osservati soltanto su base annuale, apparirebbero più uniformi e meno interpretabili. ISTAT diffonde il bilancio demografico mensile con dettaglio comunale e distinzione per sesso. Nel luglio 2026 l’ultimo periodo disponibile era aprile 2026: i dati erano dichiarati provvisori, rilasciati entro il primo trimestre successivo al periodo di riferimento e consolidati a ogni aggiornamento anche rispetto ai mesi precedenti.
Partire dalla domanda, non dal grafico
Prima di scegliere colori, filtri o tipi di grafico è necessario stabilire che cosa si vuole osservare. Nel nostro caso le domande iniziali erano semplici: come cambia la popolazione mensilmente? Qual è il contributo del saldo naturale? Quale ruolo hanno i movimenti migratori? Le dinamiche sono uguali per uomini e donne? Come si differenziano Italia, ripartizioni geografiche e regioni?
Queste domande determinano le dimensioni del modello – territorio, periodo e sesso – e le misure da rendere disponibili: popolazione finale, variazione mensile, nascite, decessi, saldi e tassi. La dashboard arriva dopo questa definizione, non prima.
L’accesso tramite SDMX
ISTAT rende disponibili dati e metadati anche attraverso servizi web basati sullo standard SDMX, utilizzato a livello internazionale per lo scambio di informazioni statistiche. Questo consente di interrogare la fonte in modo ripetibile, selezionando dimensioni, periodi e misure senza dipendere da operazioni manuali.
L’accesso tramite SDMX non elimina tuttavia la necessità di conoscere la struttura del dataset. Codici territoriali, classificazioni, frequenza, sesso, tipo di dato e stato dell’osservazione definiscono la struttura informativa e semantica della fonte. Senza queste coordinate, un valore rimane un numero privo del contesto necessario per interpretarlo.
Conservare uno snapshot della fonte
I dati acquisiti sono stati conservati inizialmente nella loro forma originale, creando una fotografia datata della fonte. Questa scelta separa i dati ricevuti dalle elaborazioni successive: la copia originale rimane integra, mentre normalizzazioni e controlli possono essere ripetuti senza interrogare nuovamente il servizio remoto.
Lo snapshot permette inoltre di ricostruire l’origine di un’anomalia: verificare se fosse già presente nella fonte, se sia stata introdotta durante una trasformazione oppure se derivi da un successivo aggiornamento della serie.
Normalizzare serie prodotte in momenti diversi
Un’altra difficoltà è emersa estendendo la serie al 2024. Le classificazioni territoriali non sono immutabili: codici, denominazioni e aggregazioni possono cambiare, mentre una serie storica richiede chiavi coerenti nel tempo. È stato quindi necessario costruire raccordi espliciti tra le forniture 2024, 2025 e 2026. Il passaggio non è visibile nel grafico, ma è essenziale: la continuità di un fenomeno non coincide sempre con la continuità dei codici utilizzati per rappresentarlo.
Nel raccordo tra la fornitura annuale 2024 e lo snapshot SDMX 2025–2026, codici e denominazioni territoriali non perfettamente omogenei sono stati ricondotti a una gerarchia comune, così da mantenere confrontabili le serie.
SQLite come livello di controllo
Dopo l’acquisizione e la normalizzazione, i dati sono stati caricati in un database SQLite. Si tratta di un motore relazionale contenuto in un singolo file: non richiede un server dedicato e si presta bene a laboratori, prototipi e archivi portabili. Dati, tabelle, viste e indici sono raccolti in un file con estensione .sqlite.
Nel progetto SQLite non è un semplice deposito. Organizza dimensioni, classificazioni e osservazioni, espone viste coerenti e permette di eseguire controlli ripetibili. Il database costituisce così il livello intermedio tra la complessità della fonte statistica e la semplicità richiesta dalla dashboard.
Dal database ai file JSON
Per la pubblicazione non è stato necessario esporre direttamente il database completo, di circa 2 GB. Una procedura di esportazione genera file JSON statici: un manifest con metadati e regole di visualizzazione, un catalogo dei territori e le serie temporali utilizzate dal frontend.
Questa architettura è volutamente semplice. Il browser scarica file statici dal normale spazio web; non sono necessarie credenziali applicative, connessioni dirette al database o servizi permanenti sul server.
Il manifest svolge una funzione importante: descrive ogni indicatore, l’unità di misura, il numero di decimali, la regola di aggregazione e la rappresentazione più adatta. In questo modo il significato non rimane disperso nel codice dell’interfaccia.
La dashboard
La dashboard presentata in questa pagina non dipende da un servizio proprietario né da un database esposto su Internet. È una piccola applicazione web statica: il browser carica alcuni file JSON, ne interpreta il significato attraverso un manifest e costruisce filtri, indicatori, grafico e tabella mediante JavaScript. Il progetto può essere riprodotto con gradi diversi di approfondimento.
Il frontend è composto da quattro elementi principali. HTML definisce la struttura della pagina e i punti nei quali compaiono filtri, indicatori, grafico e tabella. CSS governa l’aspetto visivo e il comportamento responsive su desktop, tablet e smartphone. JavaScript carica i dati, conserva lo stato delle selezioni, applica i filtri e aggiorna tutte le rappresentazioni. Chart.js disegna il grafico nel browser.
La dashboard utilizza tre file, ciascuno con una funzione distinta:
- manifest.json è il punto di ingresso. Dichiara la versione del contratto e del dataset, la fonte, la copertura temporale e territoriale, le selezioni iniziali, i sessi disponibili, il dizionario degli indicatori e i riferimenti ai file dati.
- territories.json contiene l’anagrafica necessaria ai filtri: Italia, cinque ripartizioni geografiche e venti regioni. Ogni territorio possiede un identificativo stabile, un livello, un ordinamento e il riferimento al livello superiore.
- series_country_macro_region.json contiene le osservazioni mensili. Per ridurre le dimensioni del file utilizza una struttura compatta composta dagli array columns e rows: il primo dichiara una sola volta l’ordine dei campi, mentre ogni riga contiene i valori nello stesso ordine. JavaScript costruisce una mappa tra ciascun nome di colonna e la relativa posizione, ricostruendo così le osservazioni senza ripetere i nomi delle proprietà in ogni record.
Il perimetro comprende 26 territori, 28 mesi e 3 modalità di sesso: 26 × 28 × 3 produce esattamente 2.184 combinazioni. Il database locale conserva un patrimonio informativo molto più ampio; il browser riceve soltanto il sottoinsieme necessario alle funzioni offerte dalla dashboard pubblica.
Dal filtro al grafico
ll’apertura della pagina JavaScript carica il manifest e, sulla base delle indicazioni contenute al suo interno, richiede l’anagrafica territoriale e il file delle serie.
Quando l’utente cambia territorio, sesso, indicatore o periodo, il programma aggiorna un unico stato applicativo. Da quello stato deriva la serie filtrata, ordinata per mese. Gli stessi record alimentano il valore più recente, il minimo, il massimo, il conteggio dei mesi, il grafico e la tabella.
Chart.js riceve dal programma le etichette temporali, i valori e il tipo di rappresentazione indicato dal manifest. Il frontend aggiunge formattazione, unità, tooltip, assi e gestione della linea dello zero. Quando cambia il filtro, l’istanza del grafico viene aggiornata con la nuova serie invece di richiedere una nuova pagina al server.
La dashboard che segue consente di scegliere territorio, sesso, indicatore e intervallo temporale. La selezione viene restituita attraverso valori sintetici, un grafico e una tabella mensile.
La tabella non è un elemento secondario: conserva il dato puntuale e permette di verificare ciò che il grafico sintetizza. L’ordine di lettura è deliberatamente semplice: selezione, sintesi, andamento, dettaglio.
Trasparenza, aggiornamenti e limiti
Pubblicare una dashboard significa comunicare non soltanto i valori, ma anche la fonte, la data di aggiornamento, la natura provvisoria delle osservazioni e le trasformazioni applicate. La trasparenza non richiede di mostrare ogni dettaglio tecnico al visitatore, ma di rendere comprensibile la provenienza dell’informazione e di non attribuirle una certezza maggiore di quella dichiarata dalla fonte.
Dal punto di vista tecnologico il progetto utilizza componenti relativamente semplici: un servizio pubblico SDMX, script di acquisizione e controllo, un database SQLite, file JSON, HTML, CSS, JavaScript e una libreria per i grafici.
Il valore dell’esperimento non risiede nella complessità dell’infrastruttura, ma nella continuità del percorso: fonte, acquisizione, controllo, modello, esportazione, visualizzazione e pubblicazione.
Gli Open Data rendono disponibile la materia prima. La Business Intelligence fornisce metodi per organizzarla e interpretarla. Il web permette infine di restituirla in una forma consultabile. Una dashboard affidabile comincia molto prima del primo grafico.
