Built a scalable cloud ETL pipeline using Python, PostgreSQL, Pandas, and Docker to efficiently process, clean, and load over 1.6 million records with optimized batch processing, fault tolerance, and automated data validation.
Last updated Jul 3, 2026
24
Stars
2
Forks
0
Issues
+3
Stars/day
Attention Score
52
Language breakdown
Python 93.1%
HCL 5.9%
HTML 0.8%
Dockerfile 0.2%
โธ Files
click to expand
README
ETL Pipeline
A Python ETL repository that ingests Kaggle datasets, runs local extract/transform/load workflows, and optionally uploads raw and processed data to AWS S3.
What this project contains
- Local Kaggle ingestion scripts for e-commerce, healthcare, finance, sports, and climate domains under
ingest/ - A modular ETL pipeline under
src/andetl/ - Root environment configuration templates in
.env.exampleand reusable settings underconfig/ - AWS helper code for S3 upload and optional Redshift load under
src/cloud/ - E-commerce analytics SQL in
analytics/ecommerce_queries.sql - Warehouse schema DDL in
warehouse/schemas/*.sql - Monitoring examples in
monitoring/ - A pytest-based test suite in
tests/
Note: terraform/ contains a Terraform root configuration and AWS provider file, but the referenced Terraform module sources are not included in this repository. The supported workflow is local development with optional AWS helper support.
Status
- Local ETL and data ingestion are implemented in Python.
- AWS S3 upload and optional Redshift helper methods exist, but full multi-service cloud provisioning is not available in this checkout.
dags/andk8s/provide deployment skeletons rather than a complete cloud production stack..envis a local configuration file that should not be committed.- Data directories under
data/are excluded from version control and should be created locally. - This repository is best used for local pipeline development, testing, and Kaggle ingestion.
Quick Start
Prerequisites
- Python 3.10+
- Git
pip- Kaggle account + API credentials
- Optional: AWS CLI and AWS credentials for S3 upload
Local setup
git clone https://github.com/Victor-Kipruto-Rop/cloud-etl-pipeline.git
cd cloud-etl-pipeline
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
mkdir -p data/raw data/processed data/analytics
Run the local pipeline
python -m ingest.kaggle_ingest --domain ecommerce
The ingest/kaggle_ingest.py script downloads Kaggle dataset files into data/raw/ and can optionally trigger local processing workflows.
Run the AWS helper locally
AWSS3BUCKET=your-bucket \
AWS_REGION=us-west-1 \
KAGGLE_DATASET=olistbr/brazilian-ecommerce \
KAGGLE_DOWNLOAD=true \
KAGGLEFORCEDOWNLOAD=true \
.venv/bin/python3 -m src.cloud.aws_etl
This command downloads the specified Kaggle dataset, processes CSV files, writes Parquet outputs to data/processed/, uploads raw CSV files to S3, and optionally uploads processed Parquet files.
Run tests
.venv/bin/python3 -m pytest -q
Supported workflows
ingest/: dataset download and ingestion orchestrationsrc/pipeline.py: local ETL orchestrationsrc/extract/,src/transform/,src/load/: pipeline stagessrc/cloud/aws_etl.py: AWS helper orchestrationsrc/cloud/aws_s3.py: S3 upload utilitiessrc/cloud/aws_redshift.py: Redshift load helperdags/: Airflow DAG skeleton for ecommerce ETL orchestrationk8s/: Kubernetes ETL job manifest skeleton
Project structure
cloud-etl-pipeline/
โโโ README.md
โโโ ARCHITECTURE.md
โโโ DEPLOYMENT.md
โโโ IMPLEMENTATION_SUMMARY.md
โโโ RELEASE_NOTES.md
โโโ CREDIBILITYAUDITFIXES.md
โโโ TROUBLESHOOTING.md
โโโ PROJECT_STRUCTURE.md
โโโ requirements.txt
โโโ pyproject.toml
โโโ .env.example
โโโ config/
โ โโโ aws_config.yaml
โ โโโ domains.yaml
โโโ .github/
โ โโโ workflows/
โ โโโ ci.yml
โ โโโ lint.yml
โ โโโ python-app.yml
โ โโโ run_pipeline.yml
โ โโโ deploy_glue.yml
โ โโโ deploy_terraform.yml
โโโ ingest/
โ โโโ kaggle_ingest.py
โ โโโ ecommerce_ingest.py
โ โโโ healthcare_ingest.py
โ โโโ finance_ingest.py
โ โโโ sports_ingest.py
โ โโโ climate_ingest.py
โ โโโ config.py
โโโ src/
โ โโโ api.py
โ โโโ config.py
โ โโโ dashboard.py
โ โโโ health.py
โ โโโ logging_config.py
โ โโโ migrations.py
โ โโโ pipeline.py
โ โโโ validation.py
โ โโโ cloud/
โ โโโ aws_etl.py
โ โโโ aws_redshift.py
โ โโโ aws_s3.py
โ โโโ init.py
โโโ etl/
โ โโโ init.py
โ โโโ ecommerce_transform.py
โโโ analytics/
โ โโโ ecommerce_queries.sql
โโโ warehouse/
โ โโโ schemas/
โ โโโ ecommerce.sql
โ โโโ healthcare.sql
โ โโโ finance.sql
โ โโโ sports.sql
โ โโโ climate.sql
โโโ monitoring/
โ โโโ alert_rules.yml
โ โโโ docker-compose.monitoring.yml
โ โโโ grafana-dashboard.json
โ โโโ playbook.md
โ โโโ prometheus.yml
โ โโโ README.md
โโโ diagrams/
โ โโโ system_diagrams.md
โโโ data/
โ โโโ raw/
โ โโโ processed/
โ โโโ analytics/
โโโ tests/
โโโ terraform/
โ โโโ main.tf
โ โโโ outputs.tf
โ โโโ variables.tf
โโโ infra/
โโโ aws/
โโโ provider.tf
Notes
data/raw/anddata/processed/are local working directories.terraform/andinfra/aws/provide AWS configuration skeletons, but the repository is not a complete, runnable cloud deployment package on its own.- Use the local pipeline path for development and testing.
๐ More in this category