Questo progetto analizza [fenomeno pubblico] per rispondere a una domanda semplice: cosa sta succedendo, dove e con quali differenze nel tempo?
E pensato per chi vuole orientarsi in fretta: capire cosa mostrano i dati, dove sono solidi, quali limiti hanno e quali domande aiutano ad approfondire.
- Stato: [alpha | beta | stable]
- Copertura: [anni], [territorio]
- Unita di analisi: [Comune / ASL / Provincia / ...]
[Scrivi qui la domanda chiave in una frase chiara.]
Esempi:
- Come varia [fenomeno] tra territori?
- Dove si osservano miglioramenti o peggioramenti?
- Il mio territorio e sopra o sotto la media?
Questa repo dovrebbe avere una domanda civica principale.
Dallo stesso dataset possono nascere anche altre domande utili, ma vanno tenute distinte:
- la domanda principale orienta README, notebook e output pubblici
- le domande secondarie o complementari possono emergere in Discussions e trasformarsi in issue operative
In questo modo il repository resta leggibile e non diventa un contenitore indistinto di analisi.
- come cambia il fenomeno nel tempo
- quali territori mostrano differenze significative
- se il tuo territorio e sopra o sotto la media
- se emergono anomalie o salti improvvisi
- quali aree meritano un approfondimento mirato
Non e solo un dataset: e una base per confronto e monitoraggio.
Le tabelle finali sono pronte per dashboard, grafici e analisi.
mart.[tabella_1]- confronti territoriali o temporalimart.[tabella_2]- indicatori sintetici, ranking o riepiloghi
Definizioni dettagliate di colonne e metriche:
docs/data_dictionary.md
La fiducia si costruisce su trasparenza e metodo.
- fonti ufficiali o verificabili (
docs/sources.md) - trasformazioni documentate (
docs/decisions.md) - controlli automatici prima della pubblicazione
- standard condivisi del DataCivicLab
Ogni scelta che cambia il significato dei dati viene esplicitata.
Questo repository distingue chiaramente:
- Discussions -> domande civiche, interpretazioni, proposte di metriche
- Issues -> bug, problemi tecnici, miglioramenti della pipeline
Flusso consigliato:
domanda civica -> Discussion -> Issue -> analisi / notebook / output
Se non sei tecnico, parti da una Discussion in questa repo: spiega il contesto, il territorio o l'anno che ti interessa e cosa vuoi capire.
Se la domanda richiede lavoro concreto, va trasformata in una Issue nella repo giusta:
- issue dataset-specifiche in questa repo
- issue di runtime o pipeline nel
toolkit - issue di governance o processo nelle repo di ecosistema
docs/overview.md- contesto, copertura, limitidocs/sources.md- fonti ufficialidocs/data_dictionary.md- colonne e metrichedocs/decisions.md- scelte progettualidocs/contributing.md- come contribuire
Questo repository e il template operativo da cui nascono i repo dataset DataCivicLab.
Qui trovi il minimo necessario per far partire un progetto concreto:
dataset.ymlcome contratto del datasetsql/per CLEAN e MARTdocs/per documentazione locale del datasettests/per i contract tests miniminotebooks/per leggere gli output reali della pipeline
Un repo nato da questo template non serve solo a "ospitare dati". Serve a rispondere in modo verificabile a una domanda civica centrale, lasciando spazio anche a domande complementari ben tracciate.
Il motore della pipeline vive nel repository toolkit.
Questa repo non replica la logica di esecuzione del motore: definisce input, regole e output attesi per questo dataset.
In pratica:
- bug o feature di CLI, runner, validazioni runtime e run metadata -> repo
toolkit - bug o modifiche a fonti, mapping, SQL, mart, docs e notebook di dataset -> questa repo
Se stai clonando il template per un nuovo progetto:
- aggiorna la domanda civica e gli esempi di insight
- sostituisci fonti, copertura e unita di analisi
- definisci metriche e tabelle finali
- documenta le decisioni specifiche del dataset
- esegui
py -m pytest tests/test_contract.py
La struttura resta invariata. Non serve capire tutto subito: qui trovi la base pratica da cui partire.
pip install dataciviclab-toolkit
toolkit run all --config dataset.yml
toolkit validate all --config dataset.yml
toolkit status --dataset <dataset> --year <year> --latest --config dataset.ymlI notebook del template usano anche:
toolkit inspect paths --config dataset.yml --year <year> --jsonNota di contratto:
- i path relativi in
dataset.ymlsono risolti rispetto alla directory del filedataset.yml, non rispetto alcwd - i notebook non devono ricostruire a mano
root/data/raw|clean|mart|_runs metadata.jsone il payload ricco del layermanifest.jsone il summary stabile del layerdata/_runs/.../<run_id>.jsone il run record letto dastatus
Per dettagli piu profondi su CLI, contratti stabili, workflow advanced e feature stability, il posto giusto e toolkit.
Questa repo resta focalizzata sul progetto dataset.
Per il resto:
- contesto del Lab, mappa delle repo e catalogo dataset:
dataciviclab - policy comuni, onboarding GitHub, issue/PR template e community health:
.github - motore tecnico della pipeline e documentazione del runtime:
toolkit
I riferimenti rapidi sono raccolti in docs/lab_links.md.
Questo template include anche una piccola libreria di seed issue in .github/seed-issues/.
Non vanno aperte tutte in blocco:
- servono come base da adattare al dataset reale
- conviene usarne poche, solo quando corrispondono a un blocco o a un prossimo passo concreto
- il workflow
seed-issues.ymlcrea issue solo dai file numeratiNN_nome.md
Se il progetto pubblica artifact in un archivio pubblico DataCivicLab su Drive, il flusso consigliato e:
- eseguire e validare la pipeline in locale
- verificare gli output sotto
root/data/... - pubblicare solo gli artifact pubblici con uno script separato
Questo passaggio e maintainer-only.
Esempio:
py scripts/publish_to_drive.py --config dataset.yml --drive-root "G:\\DataCivicLab" --dry-run
py scripts/publish_to_drive.py --config dataset.yml --drive-root "G:\\DataCivicLab" --year 2022La destinazione su Drive mantiene lo stesso path relativo degli output del toolkit sotto root.
Quando un repo dataset entra in ritmo, conviene mantenere una sequenza semplice:
- una domanda civica principale sempre visibile nel README
- domande complementari che emergono e si chiariscono in Discussions
- issue piccole per trasformare le domande mature in lavoro concreto
- output condivisibili pubblicati con continuita
L'output non deve essere sempre una dashboard completa. Puo essere anche:
- una risposta breve con una tabella
- un notebook che chiude una domanda precisa
- un aggiornamento intermedio su limiti, dati mancanti o primi pattern
Questo aiuta a mantenere il repository vivo senza trasformarlo in un backlog confuso.