Витягування даних зі структурованих джерел

ETL та ELT у Python

Jake Roach

Data Engineer

Джерельні системи

У цьому курсі:

  • Файли CSV
  • Файли Parquet
  • Файли JSON
  • Бази даних SQL

Дані також надходять з:

  • API
  • Озер даних
  • Сховищ даних
  • Вебскрейпінгу
  • … та багатьох інших!
ETL та ELT у Python

Зчитування файлів Parquet

Файли Parquet:

  • Відкритий, колонковий формат файлів, створений для ефективного зберігання й отримання полів
  • Схоже на роботу з файлами 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 та ELT у Python

Підключення до баз даних SQL

  • Дані можна витягнути з баз даних SQL у датафрейм pandas
  • Потрібен URI підключення, щоб створити engine і з'єднатися з базою
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 та ELT у Python

Модульність

Виділяйте логіку у функції

  • Підвищує читабельність конвеєра
  • Дотримується принципу «не повторюйтеся»
  • Прискорює усунення несправностей
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 та ELT у Python

Давайте потренуємось!

ETL та ELT у Python

Preparing Video For Download...