Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

BigCurrencyETL

Lekki pipeline ETL w Pythonie, który raz dziennie pobiera kursy walut z NBP oraz ceny Bitcoina i Etheru z CoinGecko, łączy je w jeden zbiór danych i zapisuje do PostgreSQL.


Spis treści

  1. Wymagania
  2. Konfiguracja
  3. Szybki start
  4. Uruchomienie w Docker Compose
  5. Kroki ETL
  6. Przykładowe logi
  7. Autor

Wymagania

  • Python ≥ 3.10
  • PostgreSQL ≥ 14
  • (Opcjonalnie) Docker + Docker Compose

Konfiguracja

  1. Skuduj przykładowy plik konfiguracyjny i uzupełnij dane dostępu do bazy:

    cp config.example.yaml config.yaml
  2. Edytuj config.yaml:

    postgres:
     host: db # nazwa usługi / host
     port: 5432
     db: etl
     user: etl
     password: etl
     sslmode: disable # lokalnie "disable", w chmurze np. "require"
    sources:
     nbp_api: "http://api.nbp.pl/api/exchangerates/tables/A?format=json"
     crypto_api: "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum&vs_currencies=usd"

Pliki z danymi wrażliwymi (config.yaml, .env) są ignorowane przez Git → patrz .gitignore.


Szybki start

python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python main.py # uruchamia cały pipeline

Docker Compose

Jeśli wolisz kontenery:

docker compose up --build

Docker Compose postawi Postgresa i odpali pipeline w osobnym kontenerze. Logi pojawią się w konsoli.


Kroki ETL

  1. Extract – pobranie kursów NBP oraz cen krypto z CoinGecko
  2. Transform – ujednolicenie danych, dodanie timestampu fetched_at
  3. Load – zapis do tabeli currency_rates w PostgreSQL

Mini‐diagram

graph TD
 NBP_API[NBP API] --> T(Transform)
 CG_API[CoinGecko API] --> T
 T --> PG[(PostgreSQL)]
Loading

Przykładowe logi

=== BigCurrencyETL START ===
[1/4] Extracting NBP rates...
[2/4] Extracting Crypto prices...
[3/4] Transforming data...
 → Combined 30 fiat + 2 crypto rows
[4/4] Loading into PostgreSQL...
✓ Load complete.
=== BigCurrencyETL FINISHED ===

Autor

Mateusz Dalke · GitHub · LinkedIn

About

Python ETL pipeline for fetching fiat rates from NBP & crypto prices from CoinGecko, transforming & loading into PostgreSQL

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /