Para ejecutar el pipeline ETL necesitas poblar el directorio data-raw/ con los datos originales. Por motivos de tamaño, estos archivos no estan en el repositorio. Los maestros viven en Cloudflare R2 bajo eleccionesdb-etl/data-raw/.

Descarga automatica de datos

  1. Restaura el entorno R del proyecto:
renv::restore(prompt = FALSE)
  1. Ejecuta el script:
source("R/00-setup/download_data_raw.R")

Por defecto, el script lee el manifiesto versionado data-manifest.csv, descarga todos los archivos listados y los coloca bajo data-raw/. Si las claves del manifiesto incluyen el prefijo eleccionesdb-etl/data-raw/, el script lo normaliza para restaurar la estructura local correcta.

El script es idempotente: solo descarga archivos que no existen localmente o que no coinciden con el tamaño esperado.

Puedes validar una restauracion con:

source("R/00-setup/check_data_raw.R")

Usar un indice alternativo

En CI/CD o en reproducciones puntuales puedes usar otro indice local o remoto con DATA_INDEX_URL:

Sys.setenv(DATA_INDEX_URL = "https://data.spainelectoralproject.com/eleccionesdb-etl/data-manifest.csv")
source("R/00-setup/download_data_raw.R")

Tambien puede apuntar a un CSV local:

Sys.setenv(DATA_INDEX_URL = "tmp/data-manifest.csv")
source("R/00-setup/download_data_raw.R")

El CSV debe contener al menos las columnas key y url. La columna size es opcional, pero permite verificar que la restauracion esta completa.

Cache en GitHub Actions

El workflow ETL Export restaura data-raw/ desde actions/cache@v5 antes de descargar. La clave depende exactamente de data-manifest.csv:

data-raw-${{ runner.os }}-${{ hashFiles('data-manifest.csv') }}

No hay restore-keys para esta carpeta. Para invalidar la cache, regenera o modifica data-manifest.csv y commitea el cambio.

Deploy DB se ejecuta por SSH en la maquina remota y no puede reutilizar esa cache de GitHub Actions. En su lugar, valida data-raw/ en la maquina remota y descarga solo los ficheros ausentes o con tamano distinto.

Como se genera el indice

Solo los administradores con credenciales S3/R2 pueden generar o actualizar el manifiesto:

  1. Configura las variables en .env: CF_S3_ACCESS_KEY, CF_S3_SECRET_KEY, CF_S3_ENDPOINT, CF_S3_BUCKET, CF_S3_PUBLIC_BASE_URL.
  2. Ejecuta:
source("R/00-setup/generate_data_index.R")

Esto crea o actualiza data-manifest.csv con la lista de archivos y URLs publicas de eleccionesdb-etl/data-raw/.

Si los datos del bucket cambian, regenera data-manifest.csv antes de ejecutar el ETL en CI.