Bild vom Autor | Midjourney & Canva
Einführung
ETL (Extrahieren, Transformieren, Laden) ist ein notwendiger Datentechnikprozess, bei dem Daten aus verschiedenen Quellen extrahiert, in eine verarbeitbare Kind umgewandelt und an ein Ziel, beispielsweise eine Datenbank, verschoben werden. ETL-Pipelines automatisieren diesen Prozess und stellen sicher, dass die Daten konsistent und effizient verarbeitet werden. Dies bietet einen Rahmen für Aufgaben wie Datenanalyse, Berichterstellung und maschinelles Lernen und stellt sicher, dass die Daten sauber, zuverlässig und einsatzbereit sind.
Bash, die Abkürzung für Bourne-Once more Shell – auch bekannt als Unix-Shell – ist aufgrund seiner Einfachheit, Flexibilität und extrem breiten Anwendbarkeit ein leistungsstarkes Software zum Erstellen von ETL-Pipelines und damit eine hervorragende Possibility für Anfänger und erfahrene Profis gleichermaßen. Bash-Skripte können beispielsweise Aufgaben automatisieren, Dateien verschieben und über die Befehlszeile mit anderen Instruments kommunizieren, was bedeutet, dass es eine gute Wahl für ETL-Arbeiten ist. Darüber hinaus ist Bash auf Unix-ähnlichen Systemen (Linux, BSD, macOS usw.) allgegenwärtig und kann daher auf den meisten dieser Systeme ohne zusätzliche Arbeit Ihrerseits verwendet werden.
Dieser Artikel richtet sich an Datenwissenschaftler und Dateningenieure, die ihre erste ETL-Pipeline erstellen möchten. Er setzt grundlegende Kenntnisse der Befehlszeile voraus und soll eine praktische Anleitung zum Erstellen einer ETL-Pipeline mit Bash bieten. Ziel des Artikels ist es, die Leser durch den Prozess des Erstellens einer grundlegenden ETL-Pipeline mit Bash zu führen. Am Ende des Artikels verfügen die Leser über ein praktisches Verständnis für die Implementierung einer ETL-Pipeline, die Daten aus einer Quelle extrahiert, transformiert und in eine Zieldatenbank lädt.
Einrichten Ihrer Umgebung
Bevor wir beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:
- Ein Unix-basiertes System (Linux oder macOS)
- Bash-Shell (normalerweise auf Unix-Systemen vorinstalliert)
- Grundlegendes Verständnis von Befehlszeilenoperationen
Für unsere ETL-Pipeline benötigen wir diese speziellen Befehlszeilentools:
Sie können sie mit dem Paketmanager Ihres Programs installieren. Auf einem Debian-basierten System können Sie verwenden apt-get
:
sudo apt-get set up curl jq awk sed sqlite3
Unter macOS können Sie brew
:
brew set up curl jq awk sed sqlite3
Lassen Sie uns ein dediziertes Verzeichnis für unser ETL-Projekt einrichten. Öffnen Sie Ihr Terminal und führen Sie aus:
mkdir ~/etl_project
cd ~/etl_project
Dadurch wird ein neues Verzeichnis mit dem Namen erstellt etl_project
und navigiert hinein.
Extrahieren von Daten
Daten können aus verschiedenen Quellen stammen, beispielsweise APIs, CSV-Dateien oder Datenbanken. In diesem Tutorial zeigen wir, wie Daten aus einer öffentlichen API und einer CSV-Datei extrahiert werden.
Verwenden wir curl
um Daten von einer öffentlichen API abzurufen. Beispielsweise extrahieren wir Daten aus einer Mock-API, die Beispieldaten bereitstellt.
# Fetching information from a public API
curl -o information.json "https://api.instance.com/information"
Dieser Befehl lädt die Daten herunter und speichert sie als information.json
.
Wir können auch verwenden curl
um eine CSV-Datei von einem Distant-Server herunterzuladen.
# Downloading a CSV file
curl -o information.csv "https://instance.com/information.csv"
Dadurch wird die CSV-Datei gespeichert als information.csv
in unserem Arbeitsverzeichnis.
Daten transformieren
Eine Datentransformation ist notwendig, um Rohdaten in ein für die Analyse oder Speicherung geeignetes Format zu konvertieren. Dies kann das Parsen von JSON, das Filtern von CSV-Dateien oder das Bereinigen von Textdaten beinhalten.
jq
ist ein leistungsstarkes Software für die Arbeit mit JSON-Daten. Lassen Sie uns damit bestimmte Felder aus unserer JSON-Datei extrahieren.
# Parsing and extracting particular fields from JSON
jq '.information() | {id, title, worth}' information.json > transformed_data.json
Dieser Befehl extrahiert die id
, title
Und worth
Felder aus jedem Eintrag in den JSON-Daten und speichert das Ergebnis in transformed_data.json
.
awk
ist ein vielseitiges Software zur Verarbeitung von CSV-Dateien. Wir werden es verwenden, um bestimmte Spalten aus unserer CSV-Datei zu extrahieren.
# Extracting particular columns from CSV
awk -F, '{print $1, $3}' information.csv > transformed_data.csv
Dieser Befehl extrahiert die erste und dritte Spalte aus information.csv
und speichert sie in transformed_data.csv
.
sed
ist ein Stream-Editor zum Filtern und Transformieren von Textual content. Wir können ihn verwenden, um Textersetzungen durchzuführen und unsere Daten zu bereinigen.
# Changing textual content in a file
sed 's/old_text/new_text/g' transformed_data.csv
Dieser Befehl ersetzt Vorkommen von old_text
mit new_text
In transformed_data.csv
.
Daten werden geladen
Zu den üblichen Zielen zum Laden von Daten gehören Datenbanken und Dateien. Für dieses Tutorial verwenden wir SQLite, eine häufig verwendete, leichte Datenbank.
Erstellen wir zunächst eine neue SQLite-Datenbank und eine Tabelle zur Speicherung unserer Daten.
# Creating a brand new SQLite database and desk
sqlite3 etl_database.db "CREATE TABLE information (id INTEGER PRIMARY KEY, title TEXT, worth REAL);"
Dieser Befehl erstellt eine Datenbankdatei mit dem Namen etl_database.db
und eine Tabelle namens information
mit drei Spalten.
Als Nächstes fügen wir unsere transformierten Daten in die SQLite-Datenbank ein.
# Inserting information into SQLite database
sqlite3 etl_database.db <<EOF
.mode csv
.import transformed_data.csv information
EOF
Dieser Befehlsblock setzt den Modus auf CSV und importiert transformed_data.csv
in die information
Tisch.
Ob die Daten richtig eingefügt wurden, können wir durch eine Datenbankabfrage prüfen.
# Querying the database
sqlite3 etl_database.db "SELECT * FROM information;"
Dieser Befehl ruft alle Zeilen aus dem information
Tabelle und zeigt sie an.
Abschließende Gedanken
Beim Erstellen unserer ETL-Pipeline mit Bash haben wir die folgenden Schritte abgedeckt, darunter:
- Einrichten der Umgebung und Installieren der Instruments
- Datenextraktion aus einer öffentlichen API und CSV-Datei mit
curl
- Datentransformation mit
jq
,awk
Undsed
- Datenladen in eine SQLite-Datenbank mit
sqlite3
Bash ist aufgrund seiner Einfachheit, Flexibilität, Automatisierungsfunktionen und Interoperabilität mit anderen CLI-Instruments eine gute Wahl für ETL.
Für weitere Untersuchungen könnten Sie die Einbindung von Fehlerbehandlung, die Planung der Pipeline über Cron oder das Erlernen fortgeschrittener Bash-Konzepte in Betracht ziehen. Möglicherweise möchten Sie auch different Transformations-Apps und -Methoden untersuchen, um Ihre Pipeline-Kenntnisse zu erweitern.
Probieren Sie Ihre eigenen ETL-Projekte aus und stellen Sie das Gelernte in komplexeren Szenarien auf die Probe. Mit etwas Glück sind die hier beschriebenen Grundkonzepte ein guter Ausgangspunkt für komplexere Datentechnikaufgaben.
Matthias Mayo (@mattmayo13) hat einen Grasp-Abschluss in Informatik und ein Diplom in Information Mining. Als leitender Redakteur von Abonnieren und Statologieund beitragender Redakteur bei Beherrschung des maschinellen LernensMatthew möchte komplexe Konzepte der Datenwissenschaft zugänglich machen. Seine beruflichen Interessen umfassen die Verarbeitung natürlicher Sprache, Sprachmodelle, Algorithmen für maschinelles Lernen und die Erforschung neuer KI. Sein Ziel ist es, das Wissen in der Datenwissenschaftsgemeinschaft zu demokratisieren. Matthew programmiert, seit er sechs Jahre alt ist.