Extraindo dados de fontes estruturadas

ETL e ELT em Python

Jake Roach

Data Engineer

Sistemas de origem

Neste curso:

  • Arquivos CSV
  • Arquivos Parquet
  • Arquivos JSON
  • Bancos de dados SQL

Dados também vêm de:

  • APIs
  • Data lakes
  • Data warehouses
  • Web scraping
  • ... e muito mais!
ETL e ELT em Python

Lendo arquivos Parquet

Arquivos Parquet:

  • Formato de arquivo aberto, colunar, feito para armazenar e buscar campos com eficiência
  • Similar a trabalhar com 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 e ELT em Python

Conectando a bancos SQL

  • Dá para puxar dados de bancos SQL para um DataFrame do pandas
  • Requer um URI de conexão para criar o engine e conectar ao banco
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 e ELT em Python

Modularidade

Separar a lógica em funções

  • Aumenta a legibilidade do pipeline
  • Segue o princípio "não se repita"
  • Agiliza a depuração
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 e ELT em Python

Vamos praticar!

ETL e ELT em Python

Preparing Video For Download...