Formato Common Data Model em pipelines do Azure Data Factory e do Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!

O sistema de metadados do Common Data Model (CDM) possibilita que os dados e o significado deles sejam facilmente compartilhados entre aplicativos e processos de negócios. Para saber mais, confira a visão geral do Common Data Model.

Nos pipelines do Azure Data Factory e do Synapse, os usuários podem transformar dados de entidades CDM no formulário model.json e no de manifesto armazenado em Azure data Lake Store Gen2 (ADLS Gen2) usando fluxos de dados de mapeamento. Você também pode coletar dados no formato CDM usando referências de entidade CDM que param os dados no formato CSV ou parquet em pastas particionadas.

Propriedades do fluxo de dados de mapeamento

O Common Data Model está disponível como um conjunto de dados embutido no fluxos de dados de mapeamento como uma fonte e um coletor.

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. O coletor de fluxo de dados do lê esse arquivo de entidade CDM e importa o esquema no coletor para o mapeamento de campos.

Propriedades da fonte

A tabela abaixo lista as propriedades com suporte de uma origem CDM. Você pode editar essas propriedades na guia Opções de origem.

Nome Descrição Obrigatório Valores permitidos Propriedade do script do Fluxo de Dados
Formatar O formato deve ser cdm sim cdm format
Formato de metadados Onde a referência de entidade para os dados está localizada. Se estiver usando o CDM versão 1.0, escolha manifesto. Se estiver usando uma versão do CDM anterior a 1.0, escolha model.json. Sim 'manifest' ou 'model' manifestType
Local raiz: contêiner Nome do contêiner da pasta CDM sim String fileSystem
Local raiz: caminho da pasta Local da pasta raiz da pasta CDM sim String folderPath
Arquivo de manifesto: caminho da entidade Caminho da pasta da entidade na pasta raiz não String entityPath
Arquivo de manifesto: nome do manifesto Nome do arquivo de manifesto. O valor padrão é “default”. Não String manifestName
Filtrar pela última modificação Escolher filtrar arquivos com base na última alteração não Carimbo de data/hora modifiedAfter
modifiedBefore
Serviço vinculado ao esquema O serviço vinculado em que o corpus está localizado sim, se estiver usando o manifesto 'adlsgen2' ou 'github' corpusStore
Contêiner de referência de entidade O corpus do contêiner está em sim, se estiver usando manifesto e corpus ADLS Gen2 String adlsgen2_fileSystem
Repositório de referência de entidade Nome do repositório GitHub sim, se estiver usando manifesto e corpus no GitHub String github_repository
Ramificação de referência de entidade Ramificação do repositório GitHub sim, se estiver usando manifesto e corpus no GitHub String github_branch
Pasta corpus o local raiz do corpus sim, se estiver usando o manifesto String corpusPath
Entidade corpus Caminho para referência de entidade sim String entidade
Permitir nenhum arquivo encontrado Se for true, um erro não será gerado caso nenhum arquivo seja encontrado não true ou false ignoreNoFilesFound

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:

  • Local usa a entidade definida no arquivo de manifesto que já está sendo usada pelo serviço
  • Personalizado pedirá que você aponte para um arquivo de manifesto de entidade diferente do arquivo de manifesto que o serviço está usando
  • Padrão usará uma referência de entidade da biblioteca padrão de entidades CDM mantidas no GitHub.

Configurações do coletor

  • Aponte para o arquivo de referência de entidade CDM que contém a definição da entidade que você deseja escrever.

entity settings

  • Defina o caminho da partição e o formato dos arquivos de saída que você deseja que o serviço use para escrever as entidades.

entity format

  • Defina o local do arquivo de saída, assim como o local e o nome do arquivo de manifesto.

cdm location

Importar esquema

O CDM só está disponível como um conjunto de dados embutido e, por padrão, não tem um esquema associado. 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. 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 o qual apontar.

Ao mapear colunas de fluxo de dados para propriedades de entidade na transformação do coletor, clique na guia "mapeamento" e selecione "importar esquema". O serviço lê a referência de entidade para a qual você apontou nas opções de coletor, permitindo que você mapeie para o esquema CDM de destino.

CDM sink settings

Observação

Ao usar o tipo de origem model.json originado de fluxos de dados Power BI ou Power Platform, você pode encontrar erros "caminho de corpus é nulo ou vazio" da transformação de origem. Isso provavelmente ocorre devido a problemas de formatação do caminho de local da partição no arquivo model.json. Para corrigir isso, siga estas etapas:

  1. Abra o arquivo model.json em um editor de texto
  2. Encontre a propriedade partitions.Location
  3. Altere "blob.core.windows.net" para "dfs.core.windows.net"
  4. Corrija qualquer codificação "%2F" na URL para "/"
  5. Se estiver usando fluxos de dados do ADF, os caracteres especiais no caminho do arquivo de partição deverão ser substituídos por valores alfanuméricos ou alterne para Fluxos de Dados do Azure Synapse

Exemplo de script de fluxo de dados de origem do 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

Propriedades do coletor

A tabela abaixo lista as propriedades com suporte de um coletor do CDM. Você pode editar essas propriedades na guia Configurações.

Nome Descrição Obrigatório Valores permitidos Propriedade do script do Fluxo de Dados
Formatar O formato deve ser cdm sim cdm format
Local raiz: contêiner Nome do contêiner da pasta CDM sim String fileSystem
Local raiz: caminho da pasta Local da pasta raiz da pasta CDM sim String folderPath
Arquivo de manifesto: caminho da entidade Caminho da pasta da entidade na pasta raiz não String entityPath
Arquivo de manifesto: nome do manifesto Nome do arquivo de manifesto. O valor padrão é “default”. Não String manifestName
Serviço vinculado ao esquema O serviço vinculado em que o corpus está localizado sim 'adlsgen2' ou 'github' corpusStore
Contêiner de referência de entidade O corpus do contêiner está em sim, se corpus em ADLS Gen2 String adlsgen2_fileSystem
Repositório de referência de entidade Nome do repositório GitHub sim, se corpus no GitHub String github_repository
Ramificação de referência de entidade Ramificação do repositório GitHub sim, se corpus no GitHub String github_branch
Pasta corpus o local raiz do corpus sim String corpusPath
Entidade corpus Caminho para referência de entidade sim String entidade
Caminho da partição Local onde a partição será gravada não String partitionPath
Limpe a pasta Se a pasta de destino for limpa antes da gravação não true ou false truncate
Tipo de formato Escolha especificar o formato parquet não parquet se especificado subformatação
Delimitador de coluna Se estiver escrevendo em DelimitedText, como delimitar colunas sim, se estiver escrevendo em DelimitedText String columnDelimiter
Primeira linha como cabeçalho Se estiver usando DelimitedText, se os nomes das colunas serão adicionados como um cabeçalho não true ou false columnNamesAsHeader

Exemplo de script de fluxo de dados do sink do CDM

O script de fluxo de dados associado é:

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

Crie uma transformação de origem no fluxo de dados de mapeamento.