Criando pipelines ETL e ELT

ETL e ELT em Python

Jake Roach

Data Engineer

Extrair dados de um arquivo CSV

import pandas as pd

# Leia o arquivo CSV em um DataFrame
data_frame = pd.read_csv("raw_data.csv")
# Mostre as primeiras linhas
data_frame.head()
   name         num_firms   total_income
0  Advertising     58         3892.41
1  Apparel         39         5422.69
...
49 Trucking        35         17324.36

read_csv()

  • Recebe um caminho de arquivo e retorna um DataFrame
  • delimiter, header, engine

$$

.head()

  • Mostra as primeiras n linhas de um DataFrame
ETL e ELT em Python

Filtrando um DataFrame

   name         num_firms   total_income
0  Advertising     58         3892.41
1  Apparel         39         5422.69
...
49 Trucking        35         17324.36

         name         num_firms
      1  Apparel         39
      37 Apparel         61

# Primeiro, por linhas
data_frame.loc[data_frame["name"] == "Apparel", :]

# Depois, por colunas
data_frame.loc[:, ["name", "num_firms"]]

.loc

  • Filtra um DataFrame
  • : significa "tudo"
ETL e ELT em Python

Gravar um DataFrame em um CSV

# Grave um DataFrame em um arquivo .csv
data_frame.to_csv("cleaned_data.csv")

.to_csv()

  • Recebe um path e cria um DataFrame a partir do arquivo nesse path
  • Aceita outros parâmetros para personalizar a saída

$$

Outras opções, como:

.to_json(), .to_excel(), .to_sql()

ETL e ELT em Python

Rodando consultas SQL

data_warehouse.execute(  # Use Python clients or other tools to run SQL queries
    """
    CREATE TABLE total_sales AS 
        SELECT
            ds,
            SUM(sales)
        FROM raw_sales_data
        GROUP BY ds;
    """
)
  • Ferramentas como .execute() para rodar consultas SQL
ETL e ELT em Python

Juntando tudo!

# Define as funções extract(), transform() e load()
...

def transform(data_frame, value):
    return data_frame.loc[data_frame["name"] == value, ["name", "num_firms"]]

# Primeiro, extraia os dados de um .csv
extracted_data = extract(file_name="raw_data.csv")

# Depois, transforme `extracted_data`
transformed_data = transform(data_frame=extracted_data, value="Apparel")

# Por fim, carregue `transformed_data`
load(data_frame=transformed_data, file_name="cleaned_data.csv")
ETL e ELT em Python

Vamos praticar!

ETL e ELT em Python

Preparing Video For Download...