Wyodrębnianie 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ą też z:

  • API
  • jezior danych
  • hurtowni danych
  • web scrapingu
  • ... i wielu innych!
ETL i ELT w Pythonie

Wczytywanie plików Parquet

Pliki Parquet:

  • otwarty, kolumnowy format plików zaprojektowany do wydajnego przechowywania i odczytu danych
  • praca z nimi przypomina pracę z plikami CSV
import pandas as pd

# Wczytaj plik parquet do pamięci
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 wczytać do pandas DataFrame
  • wymaga identyfikatora URI połączenia, by utworzyć silnik i połączyć się z bazą danych
import sqlalchemy
import pandas as pd

# URI połączenia: schema_identifier://username:password@host:port/db
connection_uri = "postgresql+psycopg2://repl:password@localhost:5432/market"
db_engine = sqlalchemy.create_engine(connection_uri)
# Zapytanie do bazy danych SQL
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 danych
  • jest zgodne z zasadą „nie powtarzaj się"
  • przyspiesza rozwiązywanie problemów
def extract_from_sql(connection_uri, query):
    # Utwórz silnik, wykonaj zapytanie i zwróć 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 praktykę!

ETL i ELT w Pythonie

Preparing Video For Download...