Dự án này sử dụng Apache Airflow để triển khai các pipeline xử lý dữ liệu (ETL) một cách tự động, dễ quản lý và dễ mở rộng.
Mỗi pipeline được định nghĩa dưới dạng một DAG (Directed Acyclic Graph) trong thư mục dags/, với khả năng lập lịch, theo dõi trạng thái, kiểm soát lỗi, và ghi log chi tiết.
Pipeline này gồm 3 bước chính:
- Extract
- Gọi API
http://universities.hipolabs.com/search?country=United+States
- Gọi API
- Transform
- Lọc ra các trường có chứa từ khóa
"California" - Làm sạch dữ liệu: nối
domainsvàweb_pagesthành chuỗi
- Lọc ra các trường có chứa từ khóa
- Load
- Ghi kết quả vào bảng
cal_unitrong PostgreSQL thông qua SQLAlchemy
- Ghi kết quả vào bảng
Pipeline này chạy tự động mỗi ngày với lịch @daily và có thể mở rộng cho các use case ETL thực tế.
# Tạo môi trường ảo Python
python -m venv venv
# Kích hoạt môi trường (tùy hệ điều hành)
# Windows:
venv\Scripts\activate
# macOS / Linux:
source venv/bin/activatepip install -r requirements.txtTạo file .env ở thư mục gốc với nội dung:
DB_USER=airflow
DB_PASSWORD=airflow
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=airflow
docker compose up --build -dLệnh này sẽ khởi chạy các container:
- PostgreSQL
- Redis
- Airflow Webserver
- Airflow Scheduler
- Truy cập: http://localhost:8080
- Tài khoản mặc định:
- Username:
airflow - Password:
airflow
- Username:
- Vào giao diện Airflow
- Bật DAG
ETL_Basic(gạt công tắc bên trái) - Nhấn nút ▶ để chạy DAG thủ công hoặc đợi chạy tự động mỗi ngày
docker exec -it <container_id_postgres> psql -U airflow airflowSELECT * FROM cal_uni LIMIT 10;Search -> Services -> postgresql-x64 -> Right Click -> Stop.Admin -> Connection -> Add Connection.
Conn_id = postgres_host
Conn_type = postgres
host = postgres
login = airflow
password = airflow
database = airflow
port = 5432
-> SaveNew Database Connection (Ctrl + Shift + N) -> PostgreSQL
Host=localhost
Database=airflow
Port=5432
Username=airflow
Password=airflow
-> Finish -> New SQL Script (Ctrl + ])SELECT * FROM cal_uni;