Formato de modelo de dados comuns no Azure Data FactoryCommon Data Model format in Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

O sistema de metadados do CDM (Common Data Service) possibilita que os dados e seu significado sejam facilmente compartilhados entre aplicativos e processos de negócios.The Common Data Model (CDM) metadata system makes it possible for data and its meaning to be easily shared across applications and business processes. Para saber mais, consulte a visão geral do Common Data Service.To learn more, see the Common Data Model overview.

No Azure Data Factory, os usuários podem transformar dados de entidades CDM no formulário model.jse no manifesto armazenado em Azure data Lake Store Gen2 (ADLS Gen2) usando fluxos de dados de mapeamento.In Azure Data Factory, users can transform data from CDM entities in both model.json and manifest form stored in Azure Data Lake Store Gen2 (ADLS Gen2) using mapping data flows. Você também pode coletar dados no formato CDM usando referências de entidade CDM que vão parar seus dados no formato CSV ou parquet em pastas particionadas.You can also sink data in CDM format using CDM entity references that will land your data in CSV or Parquet format in partitioned folders.

Propriedades do fluxo de dados de mapeamentoMapping data flow properties

O Common Data Service está disponível como um conjunto de dados embutido no mapeamento de fluxos de dados como uma fonte e um coletor.The Common Data Model is available as an inline dataset in mapping data flows as both a source and a sink.

Observação

Ao escrever entidades CDM, você deve ter uma definição de entidade CDM (esquema de metadados) existente já definida para usar como referência.When writing CDM entities, you must have an existing CDM entity definition (metadata schema) already defined to use as a reference. O coletor de fluxo de dados do ADF lerá esse arquivo de entidade CDM e importará o esquema em seu coletor para o mapeamento de campos.The ADF data flow sink will read that CDM entity file and import the schema into your sink for field mapping.

Propriedades de origemSource properties

A tabela abaixo lista as propriedades com suporte por uma fonte CDM.The below table lists the properties supported by a CDM source. Você pode editar essas propriedades na guia Opções de origem .You can edit these properties in the Source options tab.

NomeName DescriçãoDescription ObrigatórioRequired Valores permitidosAllowed values Propriedade de script de fluxo de dadosData flow script property
FormatoFormat O formato deve ser cdmFormat must be cdm simyes cdm formatformat
Formato de metadadosMetadata format Onde a referência de entidade para os dados está localizada.Where the entity reference to the data is located. Se estiver usando o CDM versão 1,0, escolha manifesto.If using CDM version 1.0, choose manifest. Se estiver usando uma versão do CDM anterior a 1,0, escolha model.jsem.If using a CDM version before 1.0, choose model.json. SimYes 'manifest' ou 'model''manifest' or 'model' manifestatypemanifestType
Local raiz: contêinerRoot location: container Nome do contêiner da pasta CDMContainer name of the CDM folder simyes StringString fileSystemfileSystem
Local raiz: caminho da pastaRoot location: folder path Local da pasta raiz da pasta CDMRoot folder location of CDM folder simyes StringString folderPathfolderPath
Arquivo de manifesto: caminho da entidadeManifest file: Entity path Caminho da pasta da entidade na pasta raizFolder path of the entity within the root folder nono StringString entityPathentityPath
Arquivo de manifesto: nome do manifestoManifest file: Manifest name Nome do arquivo de manifesto.Name of the manifest file. O valor padrão é ' default 'Default value is 'default' NãoNo StringString manifestNamemanifestName
Filtrar por última modificaçãoFilter by last modified Escolher filtrar arquivos com base na última alteraçãoChoose to filter files based upon when they were last altered nono TimestampTimestamp modifiedAftermodifiedAfter
modifiedBeforemodifiedBefore
Serviço vinculado de esquemaSchema linked service O serviço vinculado em que o corpus está localizadoThe linked service where the corpus is located Sim, se estiver usando o manifestoyes, if using manifest 'adlsgen2' ou 'github''adlsgen2' or 'github' corpusStorecorpusStore
Contêiner de referência de entidadeEntity reference container O contêiner Corpus está emContainer corpus is in Sim, se estiver usando Manifest e corpus no ADLS Gen2yes, if using manifest and corpus in ADLS Gen2 StringString adlsgen2_fileSystemadlsgen2_fileSystem
Repositório de referência de entidadeEntity reference Repository Nome do repositório GitHubGitHub repository name Sim, se estiver usando o manifesto e o corpus no GitHubyes, if using manifest and corpus in GitHub StringString github_repositorygithub_repository
Ramificação de referência de entidadeEntity reference Branch Branch do repositório do GitHubGitHub repository branch Sim, se estiver usando o manifesto e o corpus no GitHubyes, if using manifest and corpus in GitHub StringString github_branchgithub_branch
Pasta CorpusCorpus folder o local raiz do corpusthe root location of the corpus Sim, se estiver usando o manifestoyes, if using manifest StringString corpusPathcorpusPath
Entidade CorpusCorpus entity Caminho para referência de entidadePath to entity reference simyes StringString entidadeentity
Não permitir nenhum arquivo encontradoAllow no files found Se for true, um erro não será gerado se nenhum arquivo for encontradoIf true, an error is not thrown if no files are found nono true ou falsetrue or false ignoreNoFilesFoundignoreNoFilesFound

Ao selecionar "referência de entidade" nas transformações de origem e de coletor, você pode selecionar dentre essas três opções para o local da referência de sua entidade:When selecting "Entity Reference" both in the Source and Sink transformations, you can select from these three options for the location of your entity reference:

  • Local usa a entidade definida no arquivo de manifesto que já está sendo usada pelo ADFLocal uses the entity defined in the manifest file already being used by ADF
  • Personalizado pedirá que você aponte para um arquivo de manifesto de entidade diferente do arquivo de manifesto que o ADF está usandoCustom will ask you to point to an entity manifest file that is different from the manifest file ADF is using
  • Standard usará uma referência de entidade da biblioteca padrão de entidades CDM mantidas no Github .Standard will use an entity reference from the standard library of CDM entities maintained in Github.

Configurações do coletorSink settings

  • Aponte para o arquivo de referência de entidade CDM que contém a definição da entidade que você deseja escrever.Point to the CDM entity reference file that contains the definition of the entity you would like to write.

configurações de entidadeentity settings

  • Defina o caminho da partição e o formato dos arquivos de saída que você deseja que o ADF use para escrever suas entidades.Define the partition path and format of the output files that you want ADF to use for writing your entities.

formato de entidadeentity format

  • Defina o local do arquivo de saída e o local e o nome do arquivo de manifesto.Set the output file location and the location and name for the manifest file.

local CDMcdm location

Importar esquemaImport schema

CDM só está disponível como um conjunto de uma embutido e, por padrão, não tem um esquema associado.CDM is only available as an inline dataset and, by default, doesn't have an associated schema. Para obter metadados de coluna, clique no botão importar esquema na guia projeção . Isso permitirá que você referencie os nomes de coluna e os tipos de dados especificados pelo corpus.To get column metadata, click the Import schema button in the Projection tab. This will allow you to reference the column names and data types specified by the corpus. Para importar o esquema, uma sessão de depuração de fluxo de dados deve estar ativa e você deve ter um arquivo de definição de entidade CDM existente para apontar.To import the schema, a data flow debug session must be active and you must have an existing CDM entity definition file to point to.

Ao mapear colunas de fluxo de dados para propriedades de entidade na transformação do coletor, clique na guia "mapeamento" e selecione "importar esquema".When mapping data flow columns to entity properties in the Sink transformation, click on the "Mapping" tab and select "Import Schema". O ADF lerá a referência de entidade que você apontou em suas opções de coletor, permitindo que você mapeie para o esquema CDM de destino.ADF will read the entity reference that you pointed to in your Sink options, allowing you to map to the target CDM schema.

Configurações do coletor CDMCDM sink settings

Observação

Ao usar model.jsno tipo de origem que se origina dos fluxos de dataPower BI ou da plataforma de energia, você poderá encontrar erros "caminho corpus é nulo ou vazio" da transformação de origem.When using model.json source type that originates from Power BI or Power Platform dataflows, you may encounter "corpus path is null or empty" errors from the source transformation. Isso provavelmente ocorre devido à formatação de problemas do caminho do local da partição na model.jsno arquivo.This is likely due to formatting issues of the partition location path in the model.json file. Para corrigir isso, siga estas etapas:To fix this, follow these steps:

  1. Abrir o model.jsno arquivo em um editor de textoOpen the model.json file in a text editor
  2. Localize as partições. Propriedade LocationFind the partitions.Location property
  3. Alterar "blob.core.windows.net" para "dfs.core.windows.net"Change "blob.core.windows.net" to "dfs.core.windows.net"
  4. Corrigir qualquer codificação "% 2F" na URL para "/"Fix any "%2F" encoding in the URL to "/"

Exemplo de script de fluxo de dados de origem CDMCDM source data flow script example

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

Propriedades do coletorSink properties

A tabela abaixo lista as propriedades com suporte de um coletor CDM.The below table lists the properties supported by a CDM sink. Você pode editar essas propriedades na guia configurações .You can edit these properties in the Settings tab.

NomeName DescriçãoDescription ObrigatórioRequired Valores permitidosAllowed values Propriedade de script de fluxo de dadosData flow script property
FormatoFormat O formato deve ser cdmFormat must be cdm simyes cdm formatformat
Local raiz: contêinerRoot location: container Nome do contêiner da pasta CDMContainer name of the CDM folder simyes StringString fileSystemfileSystem
Local raiz: caminho da pastaRoot location: folder path Local da pasta raiz da pasta CDMRoot folder location of CDM folder simyes StringString folderPathfolderPath
Arquivo de manifesto: caminho da entidadeManifest file: Entity path Caminho da pasta da entidade na pasta raizFolder path of the entity within the root folder nono StringString entityPathentityPath
Arquivo de manifesto: nome do manifestoManifest file: Manifest name Nome do arquivo de manifesto.Name of the manifest file. O valor padrão é ' default 'Default value is 'default' NãoNo StringString manifestNamemanifestName
Serviço vinculado de esquemaSchema linked service O serviço vinculado em que o corpus está localizadoThe linked service where the corpus is located simyes 'adlsgen2' ou 'github''adlsgen2' or 'github' corpusStorecorpusStore
Contêiner de referência de entidadeEntity reference container O contêiner Corpus está emContainer corpus is in Sim, se corpus em ADLS Gen2yes, if corpus in ADLS Gen2 StringString adlsgen2_fileSystemadlsgen2_fileSystem
Repositório de referência de entidadeEntity reference Repository Nome do repositório GitHubGitHub repository name Sim, se corpus no GitHubyes, if corpus in GitHub StringString github_repositorygithub_repository
Ramificação de referência de entidadeEntity reference Branch Branch do repositório do GitHubGitHub repository branch Sim, se corpus no GitHubyes, if corpus in GitHub StringString github_branchgithub_branch
Pasta CorpusCorpus folder o local raiz do corpusthe root location of the corpus simyes StringString corpusPathcorpusPath
Entidade CorpusCorpus entity Caminho para referência de entidadePath to entity reference simyes StringString entidadeentity
Caminho da partiçãoPartition path Local onde a partição será gravadaLocation where the partition will be written nono StringString partitionPathpartitionPath
Limpar a pastaClear the folder Se a pasta de destino for limpa antes da gravaçãoIf the destination folder is cleared prior to write nono true ou falsetrue or false truncatetruncate
Tipo de formatoFormat type Escolha para especificar o formato parquetChoose to specify parquet format nono parquet Se especificadoparquet if specified subformatsubformat
Delimitador de colunaColumn delimiter Se estiver gravando em DelimitedText, como delimitar colunasIf writing to DelimitedText, how to delimit columns Sim, se estiver gravando em DelimitedTextyes, if writing to DelimitedText StringString columnDelimitercolumnDelimiter
Primeira linha como cabeçalhoFirst row as header Se estiver usando DelimitedText, se os nomes de coluna são adicionados como um cabeçalhoIf using DelimitedText, whether the column names are added as a header nono true ou falsetrue or false columnNamesAsHeadercolumnNamesAsHeader

Exemplo de script de fluxo de dados do coletor CDMCDM sink data flow script example

O script de fluxo de dados associado é:The associated data flow script 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

Próximas etapasNext steps

Crie uma transformação de origem no fluxo de dados de mapeamento.Create a source transformation in mapping data flow.