Formato common data model in Azure Data Factory e Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Il sistema di metadati Common Data Model (CDM) consente di condividere facilmente i dati e il suo significato tra applicazioni e processi aziendali. Per altre informazioni, vedere Panoramica di Common Data Model .

Nelle pipeline di Azure Data Factory e Synapse gli utenti possono trasformare i dati da entità CDM in formato model.json e manifesto archiviati in Azure Data Lake Store Gen2 (ADLS Gen2 ) usando flussi di dati di mapping. È anche possibile eseguire il sink dei dati in formato CDM usando riferimenti all'entità CDM che invieranno i dati in formato CSV o Parquet in cartelle partizionate.

Proprietà del flusso di dati per mapping

Common Data Model è disponibile come set di dati inline nei flussi di dati di mapping sia come origine che come sink.

Nota

Quando si scrivono entità CDM, è necessario disporre di una definizione di entità CDM esistente (schema di metadati) già definita per l'uso come riferimento. Il sink del flusso di dati leggerà il file di entità CDM e importerà lo schema nel sink per il mapping dei campi.

Proprietà di origine

Nella tabella seguente sono elencate le proprietà supportate da un'origine CDM. È possibile modificare queste proprietà nella scheda Opzioni origine.

Name Descrizione Richiesto Valori consentiti Proprietà script flusso di dati
Formatta Il formato deve essere cdm yes cdm format
Formato metadati Posizione in cui si trova il riferimento all'entità ai dati. Se si usa CDM versione 1.0, scegliere manifesto. Se si usa una versione cdm precedente alla 1.0, scegliere model.json. 'manifest' o 'model' manifestType
Percorso radice: contenitore Nome del contenitore della cartella CDM yes Stringa fileSystem
Percorso radice: percorso cartella Percorso della cartella radice della cartella CDM yes Stringa folderPath
File manifesto: percorso entità Percorso della cartella dell'entità all'interno della cartella radice no Stringa entityPath
File manifesto: nome manifesto Nome del file manifesto. Il valore predefinito è 'default' No Stringa manifestName
Filtra per data ultima modifica Scegliere di filtrare i file in base all'ultima modifica no Timestamp: modifiedAfter
modifiedBefore
Servizio collegato schema Servizio collegato in cui si trova il corpus Sì, se si usa il manifesto 'adlsgen2' o 'github' corpusStore
Contenitore di riferimento per le entità Il corpus dei contenitori si trova in Sì, se si usa manifesto e corpus in ADLS Gen2 Stringa adlsgen2_fileSystem
Repository di riferimento per le entità Nome repository GitHub Sì, se si usa manifesto e corpus in GitHub Stringa github_repository
Ramo informazioni di riferimento sulle entità Ramo del repository GitHub Sì, se si usa manifesto e corpus in GitHub Stringa github_branch
Cartella Corpus posizione radice del corpus Sì, se si usa il manifesto Stringa corpusPath
Entità Corpus Percorso del riferimento all'entità yes Stringa entità
Consenti nessun file trovato Se true, un errore non viene generato se non vengono trovati file no true o false ignoreNoFilesFound

Quando si seleziona "Riferimento entità" nelle trasformazioni Origine e Sink, è possibile selezionare tra queste tre opzioni per la posizione del riferimento all'entità:

  • Local usa l'entità definita nel file manifesto già usata dal servizio
  • Personalizzato chiederà di puntare a un file manifesto dell'entità diverso dal file manifesto usato dal servizio
  • Standard userà un riferimento all'entità dalla libreria standard di entità CDM gestite in GitHub.

Impostazioni sink

  • Puntare al file di riferimento dell'entità CDM che contiene la definizione dell'entità da scrivere.

entity settings

  • Definire il percorso della partizione e il formato dei file di output che si desidera che il servizio usi per la scrittura delle entità.

entity format

  • Impostare il percorso del file di output e il percorso e il nome per il file manifesto.

cdm location

Importa schema

CDM è disponibile solo come set di dati inline e, per impostazione predefinita, non ha uno schema associato. Per ottenere i metadati della colonna, fare clic sul pulsante Importa schema nella scheda Proiezione . In questo modo sarà possibile fare riferimento ai nomi delle colonne e ai tipi di dati specificati dal corpus. Per importare lo schema, una sessione di debug del flusso di dati deve essere attiva ed è necessario disporre di un file di definizione di entità CDM esistente a cui puntare.

Quando si esegue il mapping delle colonne del flusso di dati alle proprietà dell'entità nella trasformazione Sink, fare clic sulla scheda "Mapping" e selezionare "Importa schema". Il servizio leggerà il riferimento all'entità a cui si fa riferimento nelle opzioni sink, consentendo di eseguire il mapping allo schema CDM di destinazione.

CDM sink settings

Nota

Quando si usa il tipo di origine model.json che ha origine da flussi di dati di Power BI o Power Platform, è possibile che si verifichino errori "il percorso del corpus è null o vuoto" dalla trasformazione di origine. Questo è probabilmente dovuto a problemi di formattazione del percorso della partizione nel file model.json. Per risolvere questo problema, seguire questa procedura:

  1. Aprire il file model.json in un editor di testo
  2. Trovare le partizioni. Proprietà Location
  3. Modificare "blob.core.windows.net" in "dfs.core.windows.net"
  4. Correggere qualsiasi codifica "%2F" nell'URL in "/"
  5. Se si usano Flusso di dati di Azure Data Factory, i caratteri speciali nel percorso del file di partizione devono essere sostituiti con valori alfanumerici oppure passare ad Azure Synapse Flusso di dati

Esempio di script del flusso di dati di origine CDM

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

Proprietà sink

La tabella seguente elenca le proprietà supportate da un sink CDM. È possibile modificare queste proprietà nella scheda Impostazioni.

Name Descrizione Richiesto Valori consentiti Proprietà script flusso di dati
Formatta Il formato deve essere cdm yes cdm format
Percorso radice: contenitore Nome del contenitore della cartella CDM yes Stringa fileSystem
Percorso radice: percorso cartella Percorso della cartella radice della cartella CDM yes Stringa folderPath
File manifesto: percorso entità Percorso della cartella dell'entità all'interno della cartella radice no Stringa entityPath
File manifesto: nome manifesto Nome del file manifesto. Il valore predefinito è 'default' No Stringa manifestName
Servizio collegato schema Servizio collegato in cui si trova il corpus yes 'adlsgen2' o 'github' corpusStore
Contenitore di riferimento per le entità Il corpus dei contenitori si trova in Sì, se corpus in ADLS Gen2 Stringa adlsgen2_fileSystem
Repository di riferimento per le entità Nome repository GitHub Sì, se corpus in GitHub Stringa github_repository
Ramo informazioni di riferimento sulle entità Ramo del repository GitHub Sì, se corpus in GitHub Stringa github_branch
Cartella Corpus posizione radice del corpus yes Stringa corpusPath
Entità Corpus Percorso del riferimento all'entità yes Stringa entità
Percorso partizione Percorso in cui verrà scritta la partizione no Stringa partitionPath
Cancellare la cartella Se la cartella di destinazione viene cancellata prima della scrittura no true o false truncate
Tipo di formato Scegliere di specificare il formato Parquet no parquet se specificato formato secondario
Delimitatore di colonna Se si scrive in DelimitedText, come delimitare le colonne Sì, se si scrive in DelimitedText Stringa columnDelimiter
Prima riga come intestazione Se si usa DelimitedText, se i nomi delle colonne vengono aggiunti come intestazione no true o false columnNamesAsHeader

Esempio di script del flusso di dati sink cdm

Lo script del flusso di dati associato è:

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

Creare una trasformazione di origine nel flusso di dati di mapping.