Das Common Data Model-Format in Azure Data Factory und Synapse Analytics

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!

Das Common Data Model-Metadatensystem ermöglicht es, dass Daten und deren Bedeutung problemlos von allen Anwendungen und Geschäftsprozessen gemeinsam genutzt werden können. Weitere Informationen finden Sie in der Übersicht zum Common Data Model.

In Azure Data Factory- und Synapse-Pipelines können Benutzer Daten aus CDM-Entitäten sowohl in MODEL.JSON-Dateien als auch in Manifestdateien transformieren, die in Azure Data Lake Storage Gen2 (ADLS Gen2) mithilfe von Zuordnungsdatenflüssen gespeichert werden. Sie können Daten mithilfe von Verweisen auf CDM-Entitäten auch als Senken in das CDM-Format transformieren. Dann werden diese im CSV- oder PARQUET-Format in partitionierten Ordnern gespeichert.

Eigenschaften von Zuordnungsdatenflüssen

Das Common Data Model (CDM) ist als Inlinedataset in Zuordnungsdatenflüssen sowohl als Quelle als auch als Senke verfügbar.

Hinweis

Beim Schreiben von CDM-Entitäten muss bereits eine CDM-Entitätsdefinition (Metadatenschema) vorhanden sein, die zur Verwendung als Verweis definiert ist. Die Datenflusssenke liest diese CDM-Entitätsdatei und importiert das Schema in die Senke für die Feldzuordnung.

Quelleigenschaften

In der folgenden Tabelle sind die von einer CDM-Quelle unterstützten Eigenschaften aufgeführt. Sie können diese Eigenschaften auf der Registerkarte Quelloptionen bearbeiten.

Name BESCHREIBUNG Erforderlich Zulässige Werte Datenflussskript-Eigenschaft
Format Das Format muss cdm sein ja cdm format
Metadatenformat Gibt an, wo sich der Entitätsverweis auf die Daten befindet. Bei Verwendung von CDM-Version 1.0 wählen Sie „manifest“ aus. Bei Verwendung einer früheren CDM-Version als 1.0 wählen Sie „model.json“ aus. Ja 'manifest' oder 'model' manifestType
Stammspeicherort: Container Der Containername des CDM-Ordners. ja String fileSystem
Stammspeicherort: Ordnerpfad Der Stammspeicherort des CDM-Ordners. ja String folderPath
Manifestdatei: Entitätspfad Der Ordnerpfad der Entität innerhalb des Stammordners. nein String entityPath
Manifestdatei: Manifestname Der Name der Manifestdatei. Der Standardwert lautet „default“. Nein String manifestName
Nach der letzten Änderung filtern Filtern Sie Dateien nach dem Zeitpunkt ihrer letzten Änderung. nein Zeitstempel modifiedAfter
modifiedBefore
Mit dem Schema verknüpfter Dienst Der verknüpfte Dienst, in dem sich der Korpus befindet. Ja, wenn Manifest verwendet wird 'adlsgen2' oder 'github' corpusStore
Entitätsverweis-Container Der Containerkorpus ist in Ja, wenn Manifest und Korpus in ADLS Gen2 verwendet werden String adlsgen2_fileSystem
Entitätsverweis-Repository Der Name des GitHub-Repositorys. Ja, wenn Manifest und Korpus in GitHub verwendet werden String github_repository
Entitätsverweis-Verzweigung Die Verzweigung des GitHub-Repositorys. Ja, wenn Manifest und Korpus in GitHub verwendet werden String github_branch
Korpusordner Der Stammspeicherort des Korpus. Ja, wenn Manifest verwendet wird String corpusPath
Korpusentität Der Pfad zum Entitätsverweis. ja String entity
Finden keiner Dateien zulässig „true“ gibt an, dass kein Fehler ausgelöst wird, wenn keine Dateien gefunden werden. nein true oder false ignoreNoFilesFound

Bei Auswahl von „Entitätsverweis“ in den Quell- und Senkentransformationen können Sie zwischen den drei folgenden Optionen für den Speicherort Ihres Entitätsverweises wählen:

  • Bei der Option „Lokal“ wird die Entität verwendet, die in der bereits vom Dienst verwendeten Manifestdatei definiert ist.
  • Bei der Option „Benutzerdefiniert“ werden Sie aufgefordert, auf eine Entitätsmanifestdatei zu verweisen, die sich von der vom Dienst verwendeten Manifestdatei unterscheidet.
  • Bei der Option „Standard“ wird ein Entitätsverweis aus der Standardbibliothek der in GitHub verwalteten CDM-Entitäten verwendet.

Senkeneinstellungen

  • Zeigen Sie auf die Verweisdatei für die CDM-Entität, die die Definition der Entität enthält, die Sie schreiben möchten.

entity settings

  • Definieren Sie den Partitionspfad und das Format der Ausgabedateien, die der Dienst zum Schreiben von Entitäten verwenden soll.

entity format

  • Legen Sie den Speicherort der Ausgabedatei sowie den Speicherort und den Namen der Manifestdatei fest.

cdm location

Importieren des Schemas

CDM ist nur als Inlinedataset verfügbar und weist standardmäßig kein zugeordnetes Schema auf. Zum Abrufen von Spaltenmetadaten klicken Sie auf der Registerkarte Projektion auf die Schaltfläche Schema importieren. Auf diese Weise können Sie auf die Spaltennamen und Datentypen verweisen, die durch den Korpus angegeben sind. Zum Importieren des Schemas muss eine Datenfluss-Debugsitzung aktiv sein, und es muss eine CDM-Entitätsdefinitionsdatei vorhanden sein, auf die verwiesen werden kann.

Wenn Sie Entitätseigenschaften in der Senkentransformation Spalten für Zuordnungsdatenflüsse zuordnen möchten, klicken Sie erst auf die Registerkarte „Zuordnen“ und dann auf „Schema importieren“. Der Dienst liest den Entitätsverweis, auf den Sie in den Senkenoptionen verwiesen haben, und ermöglicht es Ihnen, das CDM-Zielschema zuzuordnen.

CDM sink settings

Hinweis

Wenn Sie den Quelltyp „model.json“ verwenden, der aus Power BI- oder Power Platform-Datenflüssen stammt, können Fehler vom Typ „Korpuspfad ist NULL oder leer“ aus der Quelltransformation auftreten. Dies ist wahrscheinlich auf Formatierungsprobleme beim Speicherortpfad der Partition in der Datei „model.json“ zurückzuführen. Führen Sie zur Behebung die folgenden Schritte aus:

  1. Öffnen Sie die Datei „model.json“ in einem Text-Editor.
  2. Suchen Sie nach der Eigenschaft „partitions.Location“.
  3. Ändern Sie „blob.core.windows.net“ in „dfs.core.windows.net“.
  4. Korrigieren Sie eine „%2F“-Codierung in der URL in „/“.
  5. Bei Verwendung von ADF-Datenflüssen müssen Sonderzeichen im Dateipfad der Partition durch alphanumerische Werte ersetzt werden, oder Sie wechseln zu Azure Synapse Datenflüssen

Beispiel eines Datenflussskripts für eine CDM-Quelle

source(output(
        ProductSizeId as integer,
        ProductColor as integer,
        CustomerId as string,
        Note as string,
        LastModifiedDate as timestamp
    ),
    allowSchemaDrift: true,
    validateSchema: false,
    entity: 'Product.cdm.json/Product',
    format: 'cdm',
    manifestType: 'manifest',
    manifestName: 'ProductManifest',
    entityPath: 'Product',
    corpusPath: 'Products',
    corpusStore: 'adlsgen2',
    adlsgen2_fileSystem: 'models',
    folderPath: 'ProductData',
    fileSystem: 'data') ~> CDMSource

Senkeneigenschaften

In der folgenden Tabelle sind die von einer CDM-Senke unterstützten Eigenschaften aufgeführt. Sie können diese Eigenschaften auf der Registerkarte Einstellungen bearbeiten.

Name BESCHREIBUNG Erforderlich Zulässige Werte Datenflussskript-Eigenschaft
Format Das Format muss cdm sein ja cdm format
Stammspeicherort: Container Der Containername des CDM-Ordners. ja String fileSystem
Stammspeicherort: Ordnerpfad Der Stammspeicherort des CDM-Ordners. ja String folderPath
Manifestdatei: Entitätspfad Der Ordnerpfad der Entität innerhalb des Stammordners. nein String entityPath
Manifestdatei: Manifestname Der Name der Manifestdatei. Der Standardwert lautet „default“. Nein String manifestName
Mit dem Schema verknüpfter Dienst Der verknüpfte Dienst, in dem sich der Korpus befindet. ja 'adlsgen2' oder 'github' corpusStore
Entitätsverweis-Container Der Containerkorpus ist in Ja, wenn der Korpus in ADLS Gen2 ist String adlsgen2_fileSystem
Entitätsverweis-Repository Der Name des GitHub-Repositorys. Ja, wenn der Korpus in GitHub ist String github_repository
Entitätsverweis-Verzweigung Die Verzweigung des GitHub-Repositorys. Ja, wenn der Korpus in GitHub ist String github_branch
Korpusordner Der Stammspeicherort des Korpus. ja String corpusPath
Korpusentität Der Pfad zum Entitätsverweis. ja String Entität
Partitionspfad Der Speicherort, an den die Partition geschrieben wird. nein String partitionPath
Ordner löschen Wenn der Zielordner vor dem Schreiben gelöscht wird. nein true oder false truncate
Formattyp Hiermit wird das Parquet-Format ausgewählt. nein parquet, wenn angegeben subformat
Spaltentrennzeichen Hiermit wird beim Schreiben in „DelimitedText“ das Trennen von Spalten angegeben. Ja, wenn in „DelimitedText“ geschrieben wird String columnDelimiter
Erste Zeile als Kopfzeile Hiermit wird bei Verwendung von „DelimitedText“ angegeben, ob die Spaltennamen als Kopfzeile hinzugefügt werden. nein true oder false columnNamesAsHeader

Beispiel eines Datenflussskripts für eine CDM-Senke

Das zugehörige Datenflussskript ist:

CDMSource sink(allowSchemaDrift: true,
    validateSchema: false,
    entity: 'Product.cdm.json/Product',
    format: 'cdm',
    entityPath: 'ProductSize',
    manifestName: 'ProductSizeManifest',
    corpusPath: 'Products',
    partitionPath: 'adf',
    folderPath: 'ProductSizeData',
    fileSystem: 'cdm',
    subformat: 'parquet',
    corpusStore: 'adlsgen2',
    adlsgen2_fileSystem: 'models',
    truncate: true,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> CDMSink

Erstellen Sie eine Quelltransformation in einem Zuordnungsdatenfluss.