Common Data Model-indeling in Azure Data Factory en Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

Met het CDM-metagegevenssysteem (Common Data Model) kunnen gegevens en de betekenis ervan eenvoudig worden gedeeld tussen toepassingen en bedrijfsprocessen. Zie het overzicht van Common Data Model voor meer informatie.

In Azure Data Factory- en Synapse-pijplijnen kunnen gebruikers gegevens van CDM-entiteiten transformeren in zowel model.json- als manifestformulieren die zijn opgeslagen in Azure Data Lake Store Gen2 (ADLS Gen2 ) met behulp van toewijzingsgegevensstromen. U kunt ook gegevens in CDM-indeling sinken met behulp van CDM-entiteitsverwijzingen waarmee uw gegevens in CSV- of Parquet-indeling in gepartitioneerde mappen terechtkomen.

Eigenschappen van toewijzingsgegevensstroom

Common Data Model is beschikbaar als een inlinegegevensset in toewijzingsgegevensstromen als bron en sink.

Notitie

Bij het schrijven van CDM-entiteiten moet u een bestaande DEFINITIE van een CDM-entiteit (metagegevensschema) hebben die al is gedefinieerd voor gebruik als verwijzing. De gegevensstroomsink leest dat CDM-entiteitsbestand en importeert het schema in uw sink voor veldtoewijzing.

Broneigenschappen

De onderstaande tabel bevat de eigenschappen die worden ondersteund door een CDM-bron. U kunt deze eigenschappen bewerken op het tabblad Bronopties .

Name Beschrijving Vereist Toegestane waarden Eigenschap gegevensstroomscript
Indeling Notatie moet zijn cdm ja cdm indeling
Indeling van metagegevens Waar de entiteitsreferentie naar de gegevens zich bevindt. Als u CDM versie 1.0 gebruikt, kiest u manifest. Als u een CDM-versie vóór 1.0 gebruikt, kiest u model.json. Ja 'manifest' of 'model' manifestType
Hoofdlocatie: container Containernaam van de CDM-map ja String Bestandssysteem
Hoofdlocatie: mappad Locatie van hoofdmap van CDM-map ja String folderPath
Manifestbestand: Entiteitspad Mappad van de entiteit in de hoofdmap nee String entityPath
Manifestbestand: Manifestnaam Naam van het manifestbestand. De standaardwaarde is 'standaard' Nee String manifestName
Filteren op laatst gewijzigd Kiezen om bestanden te filteren op basis van wanneer ze voor het laatst zijn gewijzigd nee Tijdstempel modifiedAfter
modifiedBefore
Gekoppelde schemaservice De gekoppelde service waar het corpus zich bevindt Ja, als u manifest gebruikt 'adlsgen2' of 'github' corpusStore
Entiteitsreferentiecontainer Container corpus bevindt zich in Ja, als u manifest en corpus gebruikt in ADLS Gen2 String adlsgen2_fileSystem
Opslagplaats voor entiteitsreferenties Naam van GitHub-opslagplaats Ja, als u manifest en corpus gebruikt in GitHub String github_repository
Entiteitsreferentiebranch GitHub-opslagplaatsbranch Ja, als u manifest en corpus gebruikt in GitHub String github_branch
Verzamelingsmap de hoofdlocatie van het corpus Ja, als u manifest gebruikt String corpusPath
Entiteit Corpus Pad naar entiteitsreferentie ja String entity
Geen bestanden gevonden toestaan Indien waar, wordt er geen fout gegenereerd als er geen bestanden worden gevonden nee true of false ignoreNoFilesFound

Wanneer u 'Entiteitsverwijzing' selecteert in de bron- en sinktransformaties, kunt u kiezen uit deze drie opties voor de locatie van uw entiteitsverwijzing:

  • Lokaal maakt gebruik van de entiteit die is gedefinieerd in het manifestbestand dat al door de service wordt gebruikt
  • Aangepast vraagt u om te verwijzen naar een manifestbestand voor entiteiten dat verschilt van het manifestbestand dat door de service wordt gebruikt
  • Standard gebruikt een entiteitsreferentie uit de standaardbibliotheek van CDM-entiteiten die worden onderhouden in GitHub.

Sink-instellingen

  • Wijs het REFERENTIEbestand van de CDM-entiteit aan dat de definitie bevat van de entiteit die u wilt schrijven.

entity settings

  • Definieer het partitiepad en de indeling van de uitvoerbestanden die u wilt gebruiken voor het schrijven van uw entiteiten.

entity format

  • Stel de locatie van het uitvoerbestand en de locatie en de naam voor het manifestbestand in.

cdm location

Schema importeren

CDM is alleen beschikbaar als een inlinegegevensset en heeft standaard geen gekoppeld schema. Als u kolommetagegevens wilt ophalen, klikt u op de knop Schema importeren op het tabblad Projectie . Hiermee kunt u verwijzen naar de kolomnamen en gegevenstypen die zijn opgegeven door het corpus. Als u het schema wilt importeren, moet een foutopsporingssessie voor gegevensstromen actief zijn en moet u een bestaand CDM-entiteitsdefinitiebestand hebben om naar te verwijzen.

Wanneer kolommen voor het toewijzen van gegevensstromen aan entiteitseigenschappen in de Sink-transformatie, klikt u op het tabblad Toewijzing en selecteert u Schema importeren. De service leest de entiteitsreferentie waarnaar u in de Sink-opties hebt verwezen, zodat u kunt toewijzen aan het DOEL-CDM-schema.

CDM sink settings

Notitie

Wanneer u model.json-brontype gebruikt dat afkomstig is van Power BI- of Power Platform-gegevensstromen, kunnen er fouten optreden met het 'corpuspad is null of leeg' van de brontransformatie. Dit komt waarschijnlijk door opmaakproblemen van het pad naar de partitielocatie in het bestand model.json. Volg deze stappen om dit op te lossen:

  1. Open het bestand model.json in een teksteditor
  2. Zoek de partities. Locatie-eigenschap
  3. Wijzig 'blob.core.windows.net' in 'dfs.core.windows.net'
  4. Corrigeer eventuele '%2F'-codering in de URL naar '/'
  5. Als u ADF-Gegevensstroom s gebruikt, moeten speciale tekens in het pad van het partitiebestand worden vervangen door alfanumerieke waarden of overschakelen naar Azure Synapse-Gegevensstroom s

Voorbeeld van script voor CDM-brongegevensstroom

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

Sink-eigenschappen

De onderstaande tabel bevat de eigenschappen die worden ondersteund door een CDM-sink. U kunt deze eigenschappen bewerken op het tabblad Instellingen.

Name Beschrijving Vereist Toegestane waarden Eigenschap gegevensstroomscript
Indeling Notatie moet zijn cdm ja cdm indeling
Hoofdlocatie: container Containernaam van de CDM-map ja String Bestandssysteem
Hoofdlocatie: mappad Locatie van hoofdmap van CDM-map ja String folderPath
Manifestbestand: Entiteitspad Mappad van de entiteit in de hoofdmap nee String entityPath
Manifestbestand: Manifestnaam Naam van het manifestbestand. De standaardwaarde is 'standaard' Nee String manifestName
Gekoppelde schemaservice De gekoppelde service waar het corpus zich bevindt ja 'adlsgen2' of 'github' corpusStore
Entiteitsreferentiecontainer Container corpus bevindt zich in Ja, als corpus in ADLS Gen2 String adlsgen2_fileSystem
Opslagplaats voor entiteitsreferenties Naam van GitHub-opslagplaats Ja, als corpus in GitHub String github_repository
Entiteitsreferentiebranch GitHub-opslagplaatsbranch Ja, als corpus in GitHub String github_branch
Verzamelingsmap de hoofdlocatie van het corpus ja String corpusPath
Entiteit Corpus Pad naar entiteitsreferentie ja String entity
Partitiepad Locatie waar de partitie wordt geschreven nee String partitionPath
Ga naar de map Als de doelmap is gewist voordat u gaat schrijven nee true of false truncate
Indelingstype Kiezen om parquet-indeling op te geven nee parquet indien opgegeven subopmaak
Kolomscheidingsteken Als u naar DelimitedText schrijft, moet u kolommen scheiden Ja, als u naar DelimitedText schrijft String columnDelimiter
Eerste rij als koptekst Als u DelimitedText gebruikt, of de kolomnamen worden toegevoegd als koptekst nee true of false columnNamesAsHeader

Voorbeeld van een CDM-sinkgegevensstroomscript

Het gekoppelde gegevensstroomscript is:

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

Maak een brontransformatie in de toewijzingsgegevensstroom.