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.
- Definieren Sie den Partitionspfad und das Format der Ausgabedateien, die der Dienst zum Schreiben von Entitäten verwenden soll.
- Legen Sie den Speicherort der Ausgabedatei sowie den Speicherort und den Namen der Manifestdatei fest.
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.
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:
- Öffnen Sie die Datei „model.json“ in einem Text-Editor.
- Suchen Sie nach der Eigenschaft „partitions.Location“.
- Ändern Sie „blob.core.windows.net“ in „dfs.core.windows.net“.
- Korrigieren Sie eine „%2F“-Codierung in der URL in „/“.
- 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
Zugehöriger Inhalt
Erstellen Sie eine Quelltransformation in einem Zuordnungsdatenfluss.