Einführung in Azure Data Factory Data Flows

Azure Data Factory (ADF) steht für einen vollständig verwalteten, cloudbasierten Datenintegrationsdienst, der es Unternehmen ermöglicht, Datenbewegungen und -transformationen zu orchestrieren und zu automatisieren. Im Kern bietet ADF eine codefreie visuelle Umgebung zum Erstellen von ETL- und ELT-Pipelines. Zu den wirksamsten Funktionen gehört die Funktion Data Flow, die es Dateningenieuren ermöglicht, komplexe Datentransformationen mithilfe eines grafischen Canvas zu entwerfen, anstatt traditionellen Code zu schreiben. Dieser Artikel befasst sich mit der Architektur, Komponenten und erweiterten Anwendungsfällen von ADF Data Flows und bietet eine umfassende Anleitung zum Beherrschen komplexer Datentransformationen in großem Maßstab.

Datenflüsse basieren auf Apache-Spark-Clustern, die von Azure verwaltet werden und eine elastische, leistungsstarke Ausführung bieten. Sie ermöglichen es Ihnen, eine Vielzahl von Vorgängen durchzuführen - einschließlich Filtern, Aggregation, Fügen, Schwenken und Anwenden benutzerdefinierter Ausdrücke -, ohne dass Spark-Code geschrieben werden muss. Diese Abstraktion verkürzt die Entwicklungszeit, senkt die Barriere für weniger technische Benutzer und stellt sicher, dass Transformationen wartend und überprüfbar bleiben. Ob Sie heterogene Datenquellen zusammenführen, Streaming-Daten bereinigen oder Datensätze für maschinelles Lernen vorbereiten, ADF Data Flows bietet eine robuste Lösung.

Die Architektur der ADF-Datenflüsse verstehen

Um Data Flows effektiv nutzen zu können, ist es wichtig, die zugrunde liegende Architektur zu erfassen. Jeder Data Flow läuft auf einem temporären Spark-Cluster, der zur Ausführungszeit gesponnen und nach Fertigstellung beendet wird. Dieses Design gewährleistet Kosteneffizienz – Sie zahlen nur für die Rechenressourcen, die während der Transformation verbraucht werden. Die Clustergröße, die Anzahl der Kerne und der Speicher können auf das Datenvolumen und die Komplexität abgestimmt werden.

Ausführungsarten

ADF Data Flows unterstützen zwei primäre Ausführungsmodi:

  • Debug Mode – Wird für interaktives Testen und Entwickeln verwendet. Es läuft auf einem kleinen Spark-Cluster (8 Kerne) und ermöglicht die Vorschau von Daten bei jedem Transformationsschritt. Der Debug-Modus ist für die Validierung der Logik vor der Bereitstellung in der Produktion unerlässlich.
  • Pipeline Run Mode – Wird für geplante oder ausgelöste Produktionsausführungen verwendet. Sie können Clustereinstellungen wie den Rechentyp (Allgemeiner Zweck, Speicher optimiert), die Kernanzahl und die Time-to-Live (TTL) angeben, um Kosten und Leistung zu optimieren.

Diese Unterscheidung zu verstehen ist entscheidend für die Schätzung von Kosten und Leistung. In der Produktion sollten Transformationen immer im Debug-Modus lokal getestet werden, bevor sie in Pipelines eingesetzt werden.

Datenfluss vs. Kopieraktivität

Die Copy Activity von ADF ist für schnelle, schema-agnostische Datenbewegungen konzipiert. Datenflüsse sind umgekehrt für schemabewusste Transformationen gedacht. Während Copy Activity einfache Zuordnungen und Typkonvertierungen mit der Registerkarte Mapping durchführen kann, bieten Datenflüsse Dutzende von Transformationstypen und die Fähigkeit, komplexe Geschäftslogik zu handhaben. Für Szenarien, die mehrere Verknüpfungen, bedingte Aufteilungen oder Fensterfunktionen erfordern, sind Datenflüsse die richtige Wahl.

Schlüsselkomponenten eines Datenflusses

Jeder Datenfluss besteht aus drei Hauptkategorien von Komponenten: Quellen, Transformationen und Sinks. Zusätzlich können Sie Parameter und Variablen verwenden, um Ihre Flüsse dynamisch und wiederverwendbar zu machen.

1. Quelle

Die Quelle definiert, wo Ihre Daten stammen. Azure Data Factory unterstützt eine breite Palette von Quelltypen, einschließlich Azure Blob Storage, Azure Data Lake Storage Gen2, Azure SQL Database, Synapse Analytics, Amazon S3, Google Cloud Storage und lokale Datenbanken über selbst gehostete Integrationslaufzeiten. Jede Quelle kann mit Verbindungsdetails, Dateiformat (Parquet, CSV, JSON, Avro, ORC) und Schemadefinition konfiguriert werden. Mit Schema Drift können Datenflüsse automatisch an Änderungen im Quellschema angepasst werden - eine wichtige Funktion für die Handhabung von semistrukturierten oder sich entwickelnden Daten.

Eine bewährte Vorgehensweise ist die Verwendung von Parquet oder Delta Lake Formaten für Quelle und Senke aufgrund ihrer säulenförmigen Speicher- und Kompressionseffizienz.

2. Umwandlungen

ADF Data Flows bieten eine umfangreiche Bibliothek von Transformationsaktivitäten, die kategorisiert werden können in:

  • Row Modifiers: Filter, Sort und Alter Row (für Einfügen/Update/Löschen).
  • Spaltenmodifikatoren: Wählen, Abgeleitete Spalte, Aggregat, Fenster, Pivot, Unpivot und Ranking.
  • Mehrere Inputs/Outputs: Join, Lookup, Exists, Union und Conditional Split.
  • Schema-Modifikatoren: Neuer Zweig, Assert (Datenqualitätsregeln) und Surrogate Key.

Die Derived Column Transformation ist besonders leistungsfähig – Sie können Ausdrücke mit einem eingebauten Ausdrucks-Builder erstellen, der Funktionen für String-Manipulation, Datum/Uhrzeit-Arithmetik, mathematische Operationen und Musterabgleich (ähnlich wie SQL) enthält.

3. Senke

Die Spüle bestimmt, wo die transformierten Daten landen. Wie Quellen können auch Senken ein beliebiger unterstützter Datenspeicher sein. Kritische Einstellungen umfassen Dateiformat, Partitionsstrategie (Hash, Dynamic, Round Robin oder File Name) und Ausgabemodus (Append vs. Overwrite). Für Delta Lake Senken können Sie das Verhalten von Merge, Update oder Upsert aktivieren, so dass Data Flows als Mini-Data Warehouse-Loader fungieren kann.

Komplexe Transformationen implementieren: Ein detailliertes Szenario

Lassen Sie uns ein Beispiel aus der realen Welt durchgehen: Customer 360 Enrichment] Stellen Sie sich vor, Sie hätten drei Rohdatenquellen:

  • Kundenprofile (CSV von Blob Storage)
  • Transaktionsverlauf (Parquet von ADLS Gen2)
  • Produktkatalog (Azure SQL Datenbank)

Ziel ist es, einen einzigen angereicherten Datensatz zu erstellen, der für jeden Kunden folgende Daten enthält: Demografie, Gesamtausgaben, Produktkategorienpräferenzen und ein Loyalitäts-Tier-Label.

Schritt 1: Laden und saubere Quellen

Fügen Sie drei Quellknoten hinzu. Verwenden Sie für Kundenprofile eine Abgeleitete Spalte, um das Format 'DateOfBirth' zu standardisieren und Zeilen mit null E-Mail-Adressen zu entfernen. Filtern Sie für Transaktionen erstattete Transaktionen heraus (wobei 'Betrag < 0' liegt).

Schritt 2: Transaktionen mit Kunden durchführen

Fügen Sie eine Join-Transformation hinzu, um die bereinigten Kundenprofile und den Transaktionsverlauf auf `CustomerID` zu kombinieren. Verwenden Sie eine innere Verknüpfung, um Kunden ohne Transaktionen auszuschließen. Verwenden Sie dann eine Select-Transformation, um doppelte Spalten zu löschen (z. B. umbenennen Sie `CustomerID` von der zweiten Eingabe).

Schritt 3: Aggregat pro Kunde

Verbinden Sie den verbundenen Ausgang mit einer Aggregat-Transformation. Gruppieren Sie ihn nach `CustomerID` und `CustomerName` und berechnen Sie Sum(Amount) als TotalSpending, Count(TransactionID) als TransactionCount und Max(TransactionDate) als LastPurchaseDate.

Schritt 4: Anreichern mit Produktpräferenzen

Verwenden Sie einen zweiten Join, um den Produktkatalog an `ProductID` (der in der Transaktionsquelle vorhanden ist) anzuhängen. Fügen Sie dann eine Pivot-Transformation hinzu, um Kategorienamen in Spalten (z. B. Elektronik, Kleidung, Home) mit der Anzahl der Einkäufe pro Kategorie umzuwandeln.

Schritt 5: Bestimmung der Loyalitätsstufe

Fügen Sie eine Derived Column Transformation hinzu, die verschachtelte if-else Logik verwendet, um Loyalitätsstufen zuzuweisen: `if(TotalSpending > 10000, “Gold”, if(TotalSpending > 5000, “Silver”, “Bronze”).

Schritt 6: Angereicherte Daten schreiben

Verbinden Sie die endgültige Ausgabe mit einer Spüle, die auf eine Azure SQL-Datenbanktabelle oder einen Delta Lake-Ordner in ADLS Gen2 abzielt. Konfigurieren Sie die Spüle so, dass sie das Verhalten von Upsert auf der KundenID verwendet, so dass nachfolgende Runs bestehende Datensätze aktualisieren, anstatt sie zu duplizieren.

Dieser gesamte Prozess wird visuell gestaltet, wobei jeder Schritt im Debug-Modus testbar ist. Die resultierende Pipeline ist wartbar, selbstdokumentierend und kann stündlich oder täglich geplant werden.

Best Practices für leistungsstarke Datenflüsse

Die Optimierung der Datenflussleistung ist bei der Arbeit mit Terabyte Daten unerlässlich.

  • Verwenden Sie geeignete Clustergrößen: Wählen Sie für große Datensätze mindestens 16-32 Kerne aus.
  • Partitionieren Sie Ihre Daten: Aktivieren Sie in den Quelleinstellungen Partitionsbeschneidung mit Partitionsoptionen. Legen Sie ein Ordnerpfadmuster fest, um nur relevante Partitionen zu lesen.
  • Minimieren Sie das Daten-Shuffling: Joins und Aggregationen verursachen Shuffle-Operationen über den Cluster hinweg. Wenn möglich, filtern Sie die Daten vor dem Beitritt. Verwenden Sie Broadcast Join für kleine Nachschlagetabellen (z. B. eine 1-MB-Dimension-Tabelle).
  • Dateiformate optimieren: Bevorzugen Sie Parquet oder Delta gegenüber CSV/JSON für Quellen und Senken. Diese säulenförmigen Formate reduzieren E/A und nutzen Prädikat-Pushdown.
  • Transformationszweige reduzieren: Jeder neue Zweig dupliziert den Datenstrom, verwendet Conditional Split nur, wenn es wichtig ist; andernfalls, Merger conditions in Derived Columns.
  • Verwenden Sie Data Flow Monitoring: Im ADF-Monitor überprüfen Sie die Datenflussausführungsprotokolle auf Phasendauern. Suchen Sie nach lang laufenden Transformationen und überlegen Sie, sie in kleinere Schritte zu unterteilen.

Externe Ressource: Microsofts offizielle Performance Guidance für ADF Data Flows

Überwachung und Debugging von Datenflüssen

Effektives Monitoring stellt sicher, dass Ihre Datenpipelines zuverlässig laufen. ADF bietet integrierte Überwachungsfunktionen für Datenflüsse. Sie können den Ausführungsstatus, die Zeilenzählung in jeder Phase und die pro Transformation aufgewendete Zeit anzeigen. Zu den wichtigsten Messgrößen gehören:

  • Verarbeitungszeit – Total Spark Cluster Runtime.
  • Data Skew – Ungleichmäßige Verteilung der Daten über Partitionen hinweg, sichtbar in der Bühnenausgabe.
  • Row Counts – Unerwartete Zeilen-Drops können auf Filter- oder Join-Probleme hinweisen.

Zum Debuggen verwenden Sie den Data Flow Debug-Modus. Er läuft auf einem kleinen Cluster und ermöglicht es Ihnen, die Ausgabe jeder Transformation interaktiv zu inspizieren. Um komplexe Ausdrücke weiter zu diagnostizieren, können Sie die Assert Transformation verwenden, um Datenqualitätsregeln zu überprüfen (z. B. `isNotNull(CustomerID)`) und Fehler zu erfassen.

Sicherheitsüberlegungen

Datenflüsse verarbeiten häufig sensible Informationen. ADF integriert sich mit Azure Key Vault zum Speichern von Verbindungszeichenfolgen und Anmeldeinformationen. Verwenden Sie immer die verwaltete Identitäts- oder Diensthauptauthentifizierung über Speicherkontoschlüssel. Für Datentransfers verwenden Datenflüsse TLS; Für Daten im Ruhezustand stellen Sie sicher, dass Ihre Speicherziele verschlüsselt sind (Azure Storage-Verschlüsselung ist standardmäßig aktiviert). Darüber hinaus können Sie Transformationen auf Spaltenebene wie Maskierung oder Hashing in Datenflussausdrücken mit Funktionen wie sha2() oder substring() anwenden.

Integration von Datenflüssen mit anderen Azure Services

ADF-Datenflüsse funktionieren nicht isoliert, sondern können mit anderen ADF-Aktivitäten zusammengeführt werden, um End-to-End-Pipelines zu bauen:

  • Execute Pipeline activity: Run another ADF pipeline after Data Flow completed.
  • Databricks Notebook: Für erweiterte Analysen oder ML-Inferenz kombinieren Sie Data Flow mit Databricks.
  • Azure-Funktionen: Rufen Sie benutzerdefinierten serverlosen Code zur Anreicherung auf, der APIs von Drittanbietern erfordert.
  • Power BI: Nehmen Sie die transformierten Daten direkt über den Power BI-Anschluss von ADF in Power BI-Datensätze auf.

Externe Ressource: Azure Data Factory Data Flow Übersichtsdokumentation

Häufige Fallstricke und wie man sie vermeidet

  • Überkomplexer einzelner Datenfluss: Zerlegen Sie ein 50-Transformationsmonster in mehrere Datenflüsse mit Staging-Tabellen. Dies verbessert die Verwaltbarkeit und ermöglicht teilweise Wiederholungen.
  • Das Ignorieren der Schema-Drift: Verwenden Sie die Schema Drift Optionen in Quelle und Spüle, um neue Spalten ohne Pipelinefehler anmutig zu behandeln.
  • Vergessen der Time-to-Live (TTL): Legen Sie eine TTL von 5-10 Minuten auf Ihrem Produktionscluster fest, um warme Ressourcen für nachfolgende Datenflüsse in derselben Pipeline zu behalten.
  • Nicht mit Parametern: Hardcoding-Tabellennamen oder Dateipfade machen Pipelines starr.

Real-World Use Cases für ADF Datenflüsse

Data Lakehouse ELT

Viele Unternehmen nutzen Data Flows, um Rohbronze/Silber/Goldschichten in einem Data Lakehouse zu transformieren. Ein Einzelhandelsunternehmen nimmt beispielsweise Rohverkaufsdaten in eine Bronzezone auf, verwendet dann Data Flows, um zu reinigen, zu deduplizieren und zu Silber zu aggregieren, und schließlich mit Dimensionen anzureichern, um eine Goldschicht für Analysen zu erstellen. Dieses Muster ersetzt effektiv traditionelle ETL-Tools wie SSIS.

Echtzeit-Aggregation für Dashboards

Kombinieren Sie Datenflüsse mit Ereignis-basierten Triggern, um Streaming-Daten (z. B. IoT-Sensormessungen) in einem Echtzeit-Zeitplan zu verarbeiten. Während Datenflüsse nicht streamen (sie arbeiten mit Mikrobatches), können sie alle 1-5 Minuten laufen, um aggregierte Ansichten für Power BI zu erzeugen.

Data Masking für Compliance

Finanzinstitute verwenden Datenflüsse, um persönlich identifizierbare Informationen (PII) zu maskieren, wenn sie Daten aus der Produktion in Testumgebungen verschieben. Mithilfe von Abgeleiteten Spaltenausdrücken ersetzen sie E-Mail-Adressen durch `concat(left(Email,1), '***@example.com' und Hash-Sozialversicherungsnummern.

Vergleich mit Azure Databricks

Während sowohl ADF Data Flows als auch Azure Databricks komplexe Transformationen durchführen können, dienen sie unterschiedlichen Personen. Data Flows bieten eine No-Code/Low-Code-Schnittstelle, die für Dateningenieure geeignet ist, die visuelles Design und Managed Governance bevorzugen. Databricks bietet eine Notebook-Schnittstelle für Datenwissenschaftler und -ingenieure, die die volle Kontrolle über Spark-Code, benutzerdefinierte Bibliotheken und Integration von maschinellem Lernen benötigen. Oft ist der beste Ansatz ein Hybrid: Verwenden Sie Data Flows für die Standard-ETL-Bereinigung und -Aggregation und leiten Sie Daten zu Databricks für erweiterte Analysen oder Modellschulungen.

Externe Ressource: Vergleich von ADF Data Flow und Azure Databricks

Schlussfolgerung

Azure Data Factory Data Flows bieten eine leistungsstarke, skalierbare und visuelle Plattform für die Bewältigung komplexer Datentransformationen in der Cloud. Durch die Beherrschung von Quellen, Transformationen, Senken und deren Konfigurationen können Dateningenieure robuste ETL/ELT-Pipelines erstellen, die die Zeit bis zur Einsicht reduzieren und gleichzeitig die codefreie Wartbarkeit beibehalten. Mit den in diesem Artikel beschriebenen Best Practices, Überwachungs- und Integrationsmustern sind Sie gut gerüstet, um fortschrittliche Datentransformationslösungen zu implementieren. Beginnen Sie klein mit einem einzigen Datenfluss, testen Sie gründlich im Debug-Modus und erweitern Sie schrittweise, um Datenflüsse im Unternehmensmaßstab zu orchestrieren.

Zum weiteren Lesen finden Sie in der offiziellen Microsoft-Dokumentation die Referenzdaten zu den Expressionsfunktionen und .