Rohdaten verarbeiten, aufbereiten und veröffentlichen Datentransformation mit Azure Data Factory automatisieren

Viele moderne Anwendungen basieren auf der kontinuierlichen Transformation und Korrelation von Daten. Gehostete Dienste wie Azure Data Factory eignen sich dabei für Entwickler, die sich traditionell weniger mit diesem Thema befassen müssen. Hier eine kleine Einführung.

Die Startseite des „Azure Data Factory“-Studios.
Die Startseite des „Azure Data Factory“-Studios.
(Bild: Drilling / Microsoft)

In Zeiten von Big Data werden unorganisierte Rohdaten häufig in relationalen, nicht relationalen und anderen Speichersystemen gespeichert. Allerdings mangelt es den Rohdaten an Kontext bzw. an der nötigen Aussagekraft, um von Analysten und Analystinnen, Datenfachleuten oder Entscheidungsträgern in Unternehmen sinnvoll genutzt werden zu können.

Für Big Data ist ein Dienst zum Orchestrieren und Operationalisieren von Prozessen erforderlich, mit dem sich diese enormen Rohdatenmengen in verwertbare geschäftliche Erkenntnisse verwandeln lassen. Azure Data Factory ist ein verwalteter Cloud-Dienst für komplexen Hybridprojekte mit ETL (Extrahieren, Transformieren und Laden), ELT (Extrahieren, Laden und Transformieren) und Datenintegration.

Azure Data Factory ermöglicht also das Erstellen datengesteuerter Workflows für die Orchestrierung von Datenverschiebungen und die skalierte Transformation von Daten. So erstellen und planen Sie mit ADF datengesteuerte Workflows (so genannte Pipelines), die Daten aus unterschiedlichen Datenspeichern aufnehmen können, erstellen komplexe ETL-Prozesse, die Daten visuell mit Datenflüssen transformieren oder verwenden Compute-Services wie Azure HDInsight Hadoop, Azure Databricks und Azure SQL Database.

Transformierte Daten lassen sich darüber hinaus in Datenspeichern wie z. B. Azure Synapse Analytics veröffentlichen, damit BI-, sprich Business-Intelligence-Anwendungen sie verwenden können. Über Azure Data Factory lassen sich Rohdaten letztendlich in aussagekräftigen Datenspeichern und Data Lakes organisieren und für bessere geschäftliche Entscheidungen verwenden.

Jedes Azure-Abonnement kann über mindestens eine Azure Data Factory-Instanz (bzw. Data Factory) verfügen. Azure Data Factory besteht aus den folgenden Hauptkomponenten:

Pipelines: Bei einer Pipeline handelt es sich um eine logische Gruppierung von …

Aktivitäten, die zusammen eine Aufgabe (Task) bilden. Die Aktivitäten in einer Pipeline definieren Aktionen, die sich auf Daten anwenden lassen. Ein …

Datensatz (Dataset) ist eine benannte Ansicht von Daten, die einfach auf die Daten verweist, die in den Aktivitäten als Ein- und Ausgabe verwendet werden sollen. Datasets bestimmen Daten in verschiedenen Datenspeichern, z.B. Tabellen, Dateien, Ordnern und Dokumenten. Ein Azure-Blob-Dataset kann beispielsweise den Blob-Container und -Ordner in Blob Storage angeben, aus dem die Aktivität die Daten lesen soll. Bevor ein Dataset generiert wird, muss man einen …

verknüpften Dienst erstellen, um Datenspeicher und Dienst zu verbinden. Verknüpfte Dienste ähneln Verbindungszeichenfolgen, mit deren Hilfe die Informationen definiert werden, die der Service zum Herstellen einer Verbindung mit externen Ressourcen benötigt. Genau genommen stellt das Dataset die Struktur der Daten innerhalb des verknüpften Datenspeichers dar, während der verknüpfte Dienst die Verbindung mit der Datenquelle definiert. Ein mit Azure Storage verknüpfter Dienst verbindet z. B. ein Speicherkonto. Ein Azure-Blob-Dataset repräsentiert den Blob-Container und ggf. den Ordner innerhalb des Azure Storage-Kontos, das die zu verarbeitenden Eingabe-Blobs enthält.

Datenflüsse schließlich sind eine Ergänzung zum Konzept der Pipelines. Während Pipelines große Mengen von Daten bewegen, dienen Data Flow dazu, die Daten zu modifizieren, Spalten hinzuzufügen oder anhand bestimmter Werte zu transformieren.

Im folgenden Beispiel-Szenario setzen wir die Azure Data Factory als ETL-Werkzeug ein, um umfangreiche Rohdaten im Parquet-Format einzulesen und in verwertbare Daten in Form einer Azure-SQL-Datenbank zu transformieren.

Open Datasets

Wie oben einleitend erläutert, stellt der Datenbewegungsprozess mit oder ohne Transformation im Rahmen eines ETL-Prozesses allerdings nur einen kleinen Ausschnitt der Mächtigkeit von Azure Data Factory dar. In unserem folgenden Beispiel sind die Rohdaten die Bewegungsdaten New Yorker Taxis – hier aus dem Monat 01/2022 –, welche die Stadt kontinuierlich zur Verfügung stellt.

Woher man solche Datenquellen kennt? Microsoft verweist daraus in seiner Dokumentation zu öffentlichen Datasets. Wer genauer hinsieht stellt auch schnell fest, dass die Daten faktisch in einen öffentlichen zugänglichen Amazon-S3-Bucket bereitgestellt werden. Bis ca. Mitte 2019 standen die Daten im CSV-Format als kommaseparierte Liste zur Verfügung, neuere Daten liegen im sogenannten Apache-Parquet-Format vor.

Apache Parquet

Apache Parquet ist ein Dateiformat, das entwickelt wurde, um eine schnelle Datenverarbeitung für komplexe Daten zu unterstützen, mit mehreren bemerkenswerten Eigenschaften: Im Gegensatz zu zeilenbasierten Formaten wie CSV ist Apache Parquet spaltenorientiert. Zudem ist Parquet kostenlos, quelloffen (unter der Apache-Hadoop-Lizenz) und kompatibel zu den meisten Hadoop-Datenverarbeitungs-Frameworks. Zudem sind in Parquet die Metadaten, einschließlich Schema und Struktur, in jede Datei eingebettet, was es zu einem selbstbeschreibenden Dateiformat macht.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Vorarbeiten

Wir wollen nun diese öffentlichen Parquet-Data in einen Azure-Blob-Container laden und von dort aus automatisiert mit Hilfe der Azure Data Factory so aufbereiten, dass sie in einer verwaltete Azure-SQL-Datenbank ablegt werden und vor dort aus mittels SQL abgefragt werden können. Die Sinnhaftigkeit des Szenarios steht hierbei nicht so sehr im Vordergrund; es geht nur um den Tansformations/ETL-Prozess.

Für die vorbereitenden Maßnahmen wie das Erstellen des Speicherkontos, des SQL Servers, der SQL-Datenbank und der Data Factory bedienen wir uns der Einfachheit und Schnelligkeit halber der Kommandozeile; diesmal der Azure-CLI. Alle Vorgänge funktionieren aber auch per Powershell oder im Azure-Portal. Die verwendeten Ressource-Namen sind selbstverständlich beispielhaft zu verstehen.

Beginnen wir mit dem Erstellen einer Ressourcengruppe:

az group create -l germanywestcentral -n dridfdemo-rg

Dann erstellen wir den Storage Account…

az storage account create -n dridfdemosa -g dridfdemo-rg -l germanywestcentral --sku Standard_LRS

… und nun den SQL Server für die SQL-Datenbank (Achtung, hier das Passwort entsprechend anpassen):

az sql server create -n dridfdemosqlserver -g dridfdemo-rg -l germanywestcentral --admin-user sqladmin --admin-password Pa55w.rd1234

Fehlt noch die Datenbank selbst auf diesem Server:

az sql db create -n dridfdemodb --server dridfdemosqlserver --resource-group dridfdemo-rg --edition Basic

Hier verwenden wie zum Kostensparen den Dienstplan „DTU-basiert“ in der Basic-Edition mit 5 DTUs. Wahlweise ließe sich auch das V-Core-Model im serverlosen Modell verwenden. Dann brauchen wie noch zwei obligatorische SQL-Server Firewall Regeln. Die Erste erlaubt den Zugriff von allen anderen Azure-Diensten:

az sql server firewall-rule create --name “AllowAZureServices” --resource-group dridfdemo-rg --server dridfdemosqlserver --end-ip-address 0.0.0.0 --start-ip-address 0.0.0.0

Die Zweite erlaubt zusätzlich den Zugriff nur von der eigenen IP-Adresse. Hier müssen Sie die momentane Public-IP IHRES Routers einsetzen:

az sql server firewall-rule create --name “AllowHomeIP” --resource-group dridfdemo-rg --server dridfdemosqlserver --end-ip-address 84.150.179.201 --start-ip-address 84.150.179.201

Datenbasis besorgen und in Speicherkonto hochladen

Wie oben geschildert findet sich passende Quelldaten der New Yorker Taxis Amazon S3 unter: https://s3.amazonaws.com/nyc-tlc. Verwenden Sie nur diesen Teil des Links, erhalten Sie öffentlichen Lesezugriff auf den ganzen S3-Bucket und können dann alle Datensätze sehen. Den Key für die Daten von Januar 2022 im Parquet-Format hängen Sie dann einfach an. Zuvor brauchen Sie aber einen der zwei Speicherkontoschlüssel. Diesen ermitteln Sie mit …

az storage account keys list --account-name dridfdemosa

Diesen Schlüssel verwenden Sie dann zum Anlegen des Containers „source-data“.

az storage container create --name source-data --account-key <key> --account-name dridfdemosa

Nun können Sie die Datei aus den oben genannten S3-Bucket in Azure Blob hochladen:

az storage blob copy start --destination-blob “yellow_tripdata_2022-01.parquet” --destination-container “source-data” --account-key [key] --account-name dridfdemosa --source-uri https://s3.amazonaws.com/nyc-tlc/trip data/yellow_tripdata_2022-01.parquet

Dann können Sie Ihre Azure Azure Data Factory anlegen:

az datafactory create --factory-name dridfdemo --resource-group dridfdemo-rg –location germanywestcentral

Ist das erledigt, suchen Sie im Azure Portal nach Azure Data Factorys und klicken auf den Eintrag für die neu angelegte Datenfabrik. Den kompletten Workflow bis hin zum Veröffentlichen der Zieltabelle zeigt die folgende Bildergalerie.

Bildergalerie
Bildergalerie mit 20 Bildern

Fazit

Der Microsoft SQL-Server besteht bekanntlich – sofern on-premises auf physischen oder virtuellen Servern betrieben – aus mehreren Bestandteilen; hierzu gehört auch die SQL Server Integration Services (SSIS), eine Plattform zum Erstellen von Datenintegrations- und Datentransformationslösungen auf Unternehmensebene.

Azure Data Factory können Sie sich als Cloud-Variante der SSIS vorstellen. Sie ist das Werkzeug in Azure zum Bewegen größerer Datenmengen oder um das Bewegen größerer Datenmengen zu koordinieren (Orchestrieren von Ladevorgängen), wobei die Begrifflichkeiten wie Pipelines, Datasets und Datenflüssen denen in SSIS ähneln. Wie einfach Data Factory einzusetzen ist, hat dieses Beispiel gezeigt.

(ID:48521061)