Aller au contenu

Ingestion de donnees avec RenkuLab

Ce projet utilise RenkuLab pour des sessions reproductibles et un stockage de donnees persistant. Les API publiques sont appelees par le code du repository; les Data Connectors RenkuLab fournissent les dossiers montes pour les donnees brutes et les donnees preparees.

Structure du repository

configs/sources.yml      # registre des sources
scripts/ingest.py        # premier runner d'ingestion
data/raw/                # snapshots bruts locaux, ignores par Git
data/curated/            # resultats MVP nettoyes locaux, ignores par Git
environment.yml          # environnement Python/Jupyter pour RenkuLab

data/raw/ et data/curated/ ne sont pas versionnes dans Git. En local, le script d'ingestion ecrit directement dans ces dossiers. Dans RenkuLab, les Data Connectors sont montes comme dossiers voisins du repository, par exemple ../govtech-raw et ../govtech-curated. Le script et le notebook utilisent automatiquement ces montages Renku quand ils existent.

Test local

python scripts/ingest.py --list
python scripts/ingest.py --source opendata_swiss

Chaque execution reussie ecrit deux fichiers:

data/raw/<source_id>/<timestamp>/payload.json
data/raw/<source_id>/<timestamp>/metadata.json

metadata.json contient la source, le chemin d'acces, le format et le moment exact de recuperation.

Etapes RenkuLab

  1. Creer ou ouvrir le projet dans RenkuLab.
  2. Connecter le repository GitHub https://github.com/allsparkswiss-hub/GovTECH.
  3. Selectionner la branche renku-data-connectors.
  4. Creer un Data Connector govtech-raw depuis le dossier Google Drive GovTECH-Renku/raw.
  5. Creer un Data Connector govtech-curated depuis le dossier Google Drive GovTECH-Renku/curated.
  6. Creer un session launcher depuis le repository et environment.yml.
  7. Demarrer une session et tester l'ingestion:
python scripts/ingest.py --list
python scripts/ingest.py --all
find ../govtech-raw -maxdepth 3 -type f | head

La meme commande python scripts/ingest.py --all fonctionne en local et dans RenkuLab. La cible locale par defaut est data/raw; la cible de fallback Renku est ../govtech-raw.