Извлечение данных из структурированных источников

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 в DataFrame pandas
  • Для подключения к базе данных нужен URI, на основе которого создаётся движок
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...