Ingestione dati con RenkuLab¶
Questo progetto usa RenkuLab per sessioni riproducibili e archiviazione dati persistente. Le API pubbliche sono chiamate dal codice nel repository; i Data Connector di RenkuLab forniscono le cartelle montate per dati grezzi e dati preparati.
Struttura del repository¶
configs/sources.yml # registro delle fonti
scripts/ingest.py # primo runner di ingestione
data/raw/ # snapshot grezzi locali, ignorati da Git
data/curated/ # output MVP puliti locali, ignorati da Git
environment.yml # ambiente Python/Jupyter per RenkuLab
data/raw/ e data/curated/ non sono versionati in Git. In locale, lo script
di ingestione scrive direttamente in queste cartelle. In RenkuLab, i Data
Connector sono montati come cartelle vicine al repository, per esempio
../govtech-raw e ../govtech-curated. Lo script e il notebook usano
automaticamente questi mount Renku quando esistono.
Test locale¶
python scripts/ingest.py --list
python scripts/ingest.py --source opendata_swiss
Ogni esecuzione riuscita scrive due file:
data/raw/<source_id>/<timestamp>/payload.json
data/raw/<source_id>/<timestamp>/metadata.json
metadata.json contiene fonte, percorso di accesso, formato e timestamp concreto
del recupero.
Passi in RenkuLab¶
- Creare o aprire il progetto in RenkuLab.
- Connettere il repository GitHub
https://github.com/allsparkswiss-hub/GovTECH. - Selezionare il branch
renku-data-connectors. - Creare un Data Connector
govtech-rawdal folder Google DriveGovTECH-Renku/raw. - Creare un Data Connector
govtech-curateddal folder Google DriveGovTECH-Renku/curated. - Creare un session launcher dal repository e da
environment.yml. - Avviare una sessione e testare l'ingestione:
python scripts/ingest.py --list
python scripts/ingest.py --all
find ../govtech-raw -maxdepth 3 -type f | head
Lo stesso comando python scripts/ingest.py --all funziona in locale e in
RenkuLab. Il target locale predefinito e data/raw; il target di fallback Renku
e ../govtech-raw.