Extrahieren nicht-tabellarer Daten

ETL und ELT in Python

Jake Roach

Data Engineer

Extrahieren nicht-tabellarer Daten

ETL-Pipeline mit hervorgehobener Extract-Komponente.

ETL und ELT in Python

Arten nicht-tabellarer Daten

Die meisten erzeugten und genutzten Daten sind unstrukturierte Daten

  • Text
  • Audio
  • Bild
  • Video
  • Räumlich
  • IoT

Unstrukturierte Datenquellen in der Transformation.

1 https://mitsloan.mit.edu/ideas-made-to-matter/tapping-power-unstructured-data
ETL und ELT in Python

Arbeiten mit APIs und JSON-Daten

API (Application Programming Interface)

  • Software-Schicht über Datenquellen
  • Verhindert direkten Datenbankzugriff

$$

Data Engineer nutzt eine API zur Interaktion mit einer Datenbank.

JSON (JavaScript Object Notation)

  • Schlüssel-Wert-Paare
  • Kein festes Schema
  • Anmutung ähnlich wie dictionaries
{
    "key": "value",
    ...
    "open": 0.121875
}
ETL und ELT in Python

JSON-Dateien mit pandas einlesen

{
    "timestamps": [863703000, 863789400, ...],
    "open": [0.121875, 0.098438, ...],
    "close": [...],
    "volume": [...]
}

Verwende die Funktion .read_json()

# Lies eine JSON-Datei im obigen Format ein
raw_stock_data = pd.read_json("raw_stock_data.json", orient="columns")
1 https://pandas.pydata.org/docs/reference/api/pandas.read_json.html
ETL und ELT in Python

Verschachtelte oder unstrukturierte JSON-Daten

Daten sind nicht immer direkt DataFrame-tauglich

  • Verschachtelte Objekte
  • Variierendes „Schema"
{
    "863703000": {
        "volume": 1443120000,
        "price": {
            "close": 0.09791,
            "open": 0.12187
        }
    }, 
    "863789400": {
        ...
    }, ...
}
ETL und ELT in Python

JSON-Dateien mit json einlesen

import json

with open("raw_stock_data.json", "r") as file:
    # Datei in ein Dictionary laden
    raw_stock_data = json.load(file)

# Typ der Variable raw_stock_data prüfen
print(type(raw_stock_data))
<class 'dict'>
ETL und ELT in Python

Lass uns üben!

ETL und ELT in Python

Preparing Video For Download...