Skip to content

ELT (Airflow) configuration

The ELT DAGs (staging_dag, process_dag) run on Apache Airflow and share the same PostgreSQL database as the backend. They have no direct HTTP dependency on the backend at startup: parameters (source configuration, transform config, callback URLs) are passed in at trigger time, by the backend.

Deploying the DAGs

The Docker Compose setup builds a custom Airflow image (docker/Dockerfile.airflow) that bundles apps/elt/dags and the shared libs/data_manipulation package. For a platform deployment, deploy this image (or your own image built the same way) as your Airflow workers/scheduler.

Key settings

Setting Purpose
AIRFLOW_UID User ID Airflow containers run as. Set in .env; make install-python writes your current UID automatically
AIRFLOW_STAGING_TIMEOUT_SECONDS Timeout, in seconds, for the staging task execution (default: 600)
AIRFLOW_VERSION Base apache/airflow image tag used by Dockerfile.airflow (default: 3.1.8)

The backend also needs to be pointed at the Airflow instance: see AIRFLOW_INTERNAL_URL, AIRFLOW_USERNAME and AIRFLOW_PASSWORD in the backend configuration.

Callbacks

Both DAGs accept success_callback_url / failure_callback_url parameters and call them on completion. These URLs point back at the backend (BACKEND_INTERNAL_URL), which is how the backend learns a run finished without polling Airflow continuously.

Source databases

The staging_dag reads external source databases (the Database import type) through Airflow Connections. See adding a source database for how to configure one.