Schemaabweichung im Zuordnungsdatenfluss

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tipp

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!

Eine Schemaabweichung liegt vor, wenn Ihre Quellen Metadaten häufig ändern. Felder, Spalten und Typen können bei laufendem Betrieb hinzugefügt, entfernt oder geändert werden. Ohne Vorkehrungen bei Schemaabweichungen wird Ihr Datenfluss anfällig für Änderungen an vorgelagerten Datenquellen. Wenn sich eingehende Spalten und Felder ändern, treten bei typischen ETL-Mustern Fehler auf, da sie dazu neigen, an diesen Quellennamen gebunden zu sein.

Zum Schutz gegen Schemaabweichung muss ein Datenflusstool Funktionen bieten, die Ihnen als Datentechniker Folgendes ermöglichen:

  • Definieren von Quellen mit änderbaren Feldnamen, Datentypen, Werte und Größen
  • Definieren von Transformationsparametern, die anstelle von hartcodierten Feldern und Werten mit Datenmustern arbeiten können
  • Definieren von Ausdrücken, die Muster verstehen, um sie mit Eingangsfeldern abzugleichen, anstatt benannte Felder zu verwenden

Flexible und sich von Ausführung zu Ausführung ändernde Schemas werden von Azure Data Factory nativ unterstützt, sodass Sie eine generische Datentransformationslogik erstellen können, ohne die Datenflüsse erneut kompilieren zu müssen.

Sie müssen eine architektonische Entscheidung in Ihrem Datenfluss treffen, um die Schemaabweichung in Ihrem Fluss zu akzeptieren. Wenn Sie dies tun, können Sie Schutz gegen Schemaänderungen aus den Quellen bieten. Allerdings verlieren Sie die frühe Bindung Ihrer Spalten und Typen im gesamten Datenfluss. Azure Data Factory behandelt Schemaabweichungsflüsse als Flüsse mit später Bindung, sodass die abweichenden Spaltennamen bei der Erstellung Ihrer Transformationen Ihnen nicht im gesamten Fluss in den Schemaansichten zur Verfügung stehen.

Dieses Video bietet eine Einführung in einige der komplexen Lösungen, die Sie in Azure Data Factory oder Synapse Analytics-Pipelines mit der Data Flow-Funktion Schema Drift leicht erstellen können. In diesem Beispiel erstellen wir basierend auf flexiblen Datenbankschemas wiederverwendbare Muster:

Schemaabweichung in der Quelle

Spalten, die Ihrem Datenfluss aus Ihrer Quelldefinition hinzugefügt werden, sind als abweichende Spalten definiert, wenn sie nicht in Ihrer Quellprojektion vorhanden sind. Ihre Quellprojektion können Sie sich auf der Registerkarte „Projektion“ der Quelltransformation ansehen. Wenn Sie ein Dataset als Quelle auswählen, übernimmt der Dienst automatisch das Schema aus dem Dataset und erstellt eine Projektion aus dieser Schemadefinition des Datasets.

In einer Quellentransformation wird die Schemaabweichung als das Lesen von Spalten definiert, die in Ihrem Datasetschema nicht definiert sind. Um Schemaabweichung zu ermöglichen, wählen Sie in Ihrer Quellentransformation Allow Schema Drift (Schemaabweichung zulassen) aus.

Schema drift source

Bei aktivierter Schemaabweichung werden während der Ausführung alle eingehenden Felder aus Ihrer Quelle gelesen und durch den gesamten Datenfluss zur Senke geleitet. Alle neu erkannten Spalten (abweichende Spalten genannt) werden standardmäßig mit dem Datentyp „String“ empfangen. Wenn Sie möchten, dass der Datenfluss automatisch Datentypen abweichender Spalten ableiten kann, aktivieren Sie in Ihren Quelleinstellungen die Option Infer drifted column types (Abweichende Spaltentypen ableiten).

Schemaabweichung in Senke

Bei einer Senkentransformation erfolgt eine Schemabweichung, wenn Sie zusätzliche Spalten zusätzlich zu dem schreiben, was im Datenschema der Senke definiert ist. Um die Schemaabweichung zu ermöglichen, wählen Sie in Ihrer Senkentransformation Allow Schema Drift (Schemaabweichung zulassen) aus.

Schema drift sink

Wenn die Schemaabweichung aktiviert ist, stellen Sie sicher, dass auf der Registerkarte „Mapping“ (Zuordnung) der Schieberegler Auto-Mapping (Automatische Zuordnung) aktiviert ist. Wenn dieser Schieberegler eingeschaltet ist, werden alle eingehenden Spalten in Ihr Ziel geschrieben. Andernfalls müssen Sie die regelbasierte Zuordnung verwenden, um abweichende Spalten zu schreiben.

Sink auto mapping

Transformieren abweichender Spalten

Wenn Ihr Datenfluss abweichende Spalten aufweist, können Sie in Ihren Transformationen mit den folgenden Methoden auf diese zugreifen:

  • Verwenden der Ausdrücke byPosition und byName, um auf eine Spalte explizit über Name oder Positionsnummer zu verweisen
  • Hinzufügen eines Spaltenmusters in einer Transformation des Typs „Abgeleitete Spalte“ oder „Aggregat“, um es mit einer beliebigen Kombination aus Name, Datenstrom, Position, Ursprung oder Typ abzugleichen
  • Hinzufügen einer regelbasierten Zuordnung in einer Auswahl- oder Senkentransformation, um abweichende Spalten über ein Muster mit Spaltenaliasen abzugleichen

Weitere Informationen zum Implementieren von Spaltenmustern finden Sie unter Spaltenmuster im Zuordnungsdatenfluss.

Schnellaktion zum Zuordnen abweichender Spalten

Um explizit auf abweichende Spalten zu verweisen, können Sie in kürzester Zeit Zuordnungen für diese Spalten über eine Schnellaktion zur Datenvorschau erzeugen. Nach Aktivierung des Debugmodus wechseln Sie zur Registerkarte „Datenvorschau“ und klicken auf Aktualisieren, um eine Datenvorschau abzurufen. Wenn Data Factory feststellt, dass abweichende Spalten vorhanden sind, können Sie auf Map Drifted (Abweichende zuordnen) klicken und eine abgeleitete Spalte erzeugen, mit der Sie in nachgelagerten Schemaansichten auf alle abweichenden Spalten verweisen können.

Screenshot shows the Data Preview tab with Map drifted called out.

In der generierten Transformation des Typs „Abgeleitete Spalten“ werden alle abweichenden Spalten dem erkannten Namen und Datentyp zugeordnet. In der obigen Datenvorschau wird die Spalte „movieId“ als ganze Zahl erkannt. Nach Klicken auf Map Drifted (Abweichende zuordnen) wird movieId in der abgeleiteten Spalte als toInteger(byName('movieId')) definiert und bei nachgelagerten Transformationen in Schemaansichten berücksichtigt.

Screenshot shows the Derived Column's Settings tab.

In der Datenfluss-Ausdruckssprache finden Sie zusätzliche Funktionen für Spaltenmuster und Schemaabweichung einschließlich byName und byPosition.