Erstellen Ihrer ersten ETL-Pipeline mit Bash
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, titleUnd 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:

  1. Einrichten der Umgebung und Installieren der Instruments
  2. Datenextraktion aus einer öffentlichen API und CSV-Datei mit curl
  3. Datentransformation mit jq, awkUnd sed
  4. 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.



Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert