Ekstrakcja danych ze źródeł strukturalnych

ETL i ELT w Pythonie

Jake Roach

Data Engineer

Systemy źródłowe

W tym kursie:

  • Pliki CSV
  • Pliki Parquet
  • Pliki JSON
  • Bazy danych SQL

Dane pochodzą również z:

  • API
  • Jezior danych
  • Hurtowni danych
  • Web scrapingu
  • ... i wielu innych!
ETL i ELT w Pythonie

Wczytywanie plików Parquet

Pliki Parquet:

  • Otwartoźródłowy, kolumnowy format pliku zaprojektowany do wydajnego przechowywania i pobierania danych
  • Praca podobna do plików CSV
import pandas as pd

# Read the parquet file into memory
raw_stock_data = pd.read_parquet("raw_stock_data.parquet", engine="fastparquet")
1 https://www.databricks.com/glossary/what-is-parquet
ETL i ELT w Pythonie

Łączenie z bazami danych SQL

  • Dane z baz SQL można pobrać do DataFrame pandas
  • Wymagany URI połączenia do utworzenia silnika i nawiązania połączenia z bazą
import sqlalchemy
import pandas as pd

# Connection URI: schema_identifier://username:password@host:port/db
connection_uri = "postgresql+psycopg2://repl:password@localhost:5432/market"
db_engine = sqlalchemy.create_engine(connection_uri)
# Query the SQL database
raw_stock_data = pd.read_sql("SELECT * FROM raw_stock_data LIMIT 10", db_engine)
ETL i ELT w Pythonie

Modularność

Rozdzielanie logiki na funkcje

  • Zwiększa czytelność potoku
  • Stosuje zasadę „nie powtarzaj się"
  • Ułatwia rozwiązywanie problemów
def extract_from_sql(connection_uri, query):
    # Create an engine, query data and return DataFrame
    db_engine = sqlalchemy.create_engine(connection_uri)
    return pd.read_sql(query, db_engine)

extract_from_sql("postgresql+psycopg2://.../market", "SELECT ... LIMIT 10;")
ETL i ELT w Pythonie

Czas na ćwiczenia!

ETL i ELT w Pythonie

Preparing Video For Download...