ETL- en ELT-pijplijnen bouwen

ETL en ELT in Python

Jake Roach

Data Engineer

Gegevens uit een CSV-bestand extraheren

import pandas as pd

# Lees het CSV-bestand in een DataFrame
data_frame = pd.read_csv("raw_data.csv")
# Toon de eerste rijen
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()

  • Neemt een bestandspad, geeft een DataFrame terug
  • delimiter, header, engine

$$

.head()

  • Toont de eerste n rijen van een DataFrame
ETL en ELT in Python

Een DataFrame filteren

   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

# Eerst op rijen
data_frame.loc[data_frame["name"] == "Apparel", :]

# Daarna op kolommen
data_frame.loc[:, ["name", "num_firms"]]

.loc

  • Filtert een DataFrame
  • : betekent "alles"
ETL en ELT in Python

Schrijf een DataFrame naar een CSV-bestand

# Schrijf een DataFrame naar een .csv-bestand
data_frame.to_csv("cleaned_data.csv")

.to_csv()

  • Neemt een path, maakt een bestand op dat path van het DataFrame
  • Kan extra parameters nemen om de output aan te passen

$$

Andere opties, zoals:

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

ETL en ELT in Python

SQL-queries uitvoeren

data_warehouse.execute(  # Gebruik Python-clients of andere tools om SQL-queries uit te voeren
    """
    CREATE TABLE total_sales AS 
        SELECT
            ds,
            SUM(sales)
        FROM raw_sales_data
        GROUP BY ds;
    """
)
  • Tools zoals .execute() om SQL-queries uit te voeren
ETL en ELT in Python

Alles samenvoegen!

# Definieer extract(), transform() en load()-functies
...

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

# Eerst: extraheer data uit een .csv
extracted_data = extract(file_name="raw_data.csv")

# Dan: transformeer `extracted_data`
transformed_data = transform(data_frame=extracted_data, value="Apparel")

# Tot slot: laad `transformed_data`
load(data_frame=transformed_data, file_name="cleaned_data.csv")
ETL en ELT in Python

Laten we oefenen!

ETL en ELT in Python

Preparing Video For Download...