Atividade Copy no Azure Data Factory e no Azure 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!

Nos pipelines do Azure Data Factory e do Synapse, você pode usar a atividade Copy para copiar dados entre armazenamentos de dados locais e na nuvem. Depois de copiar os dados, você pode usar outras atividades para transformá-los e analisá-los ainda mais. Também é possível usar a atividade Copy para publicar resultados de análise e transformação para consumo do aplicativo e BI (business intelligence).

A função da atividade Copy

A atividade Copy é executada em um runtime de integração. Você pode usar diferentes tipos de runtime de integração para diferentes cenários de cópia de dados:

  • Ao copiar dados entre dois armazenamentos de dados publicamente acessíveis pela Internet de qualquer IP, você pode usar o runtime de integração do Azure para a atividade Copy. Esse runtime de integração é seguro, confiável, escalonável e globalmente disponível.
  • Ao copiar dados de/para armazenamentos de dados locais ou em uma rede com controle de acesso (por exemplo, uma rede virtual do Azure), você precisa configurar um runtime de integração auto-hospedada.

Um runtime de integração deve ser associado a cada armazenamento de dados de origem e de coletor. Para obter mais informações sobre como a atividade Copy determina qual runtime de integração usar, confira Determinação de qual IR usar.

Observação

Você não pode usar mais de um runtime de integração auto-hospedada na mesma atividade de Cópia. A origem e o coletor da atividade devem estar conectados com o mesmo runtime de integração auto-hospedada.

Para copiar dados de uma origem para um coletor, o serviço que executa a atividade Copy realiza estas etapas:

  1. Lê dados de um armazenamento de dados de origem.
  2. Executa a serialização/desserialização, a compactação/descompactação, o mapeamento de coluna e assim por diante. Ele realiza essas operações com base na configuração do conjunto de dados de entrada, no conjunto de dados de saída e na atividade Copy.
  3. Grava dados no armazenamento de dados de coletor/destino.

Copiar a visão geral da atividade

Observação

Se um runtime de integração auto-hospedado for usado no armazenamento dos dados de origem ou do coletor em uma atividade de Cópia, tanto a origem quanto o coletor precisam estar acessíveis a partir do servidor que hospeda o runtime de integração para que a atividade de Cópia seja bem-sucedida.

Fontes de dados e formatos com suporte

Categoria Armazenamento de dados Tem suporte como origem Tem suporte como coletor Suporte do IR do Azure Suporte do IR auto-hospedado
Azure Armazenamento de Blobs do Azure
  Índice do Azure AI Search
  Azure Cosmos DB para NoSQL
  Azure Cosmos DB for MongoDB
  Azure Data Explorer
  Azure Data Lake Storage Gen1
  Azure Data Lake Storage Gen2
  Banco de Dados do Azure para MariaDB
  Banco de Dados do Azure para MySQL
  Banco de Dados do Azure para PostgreSQL
  Delta Lake do Azure Databricks
  Arquivos do Azure
  Banco de Dados SQL do Azure
  Instância Gerenciada do SQL do Azure
  Azure Synapse Analytics
  Armazenamento de Tabelas do Azure
Backup de banco de dados Amazon RDS para Oracle
  Amazon RDS para SQL Server
  Amazon Redshift
  DB2
  Aprofundar-se
  Google BigQuery
  Greenplum
  HBase
  Hive
  Apache Impala
  Informix
  MariaDB
  Microsoft Access
  MySQL
  Netezza
  Oracle
  Phoenix
  PostgreSQL
  Pronto
  SAP Business Warehouse via Open Hub
  SAP Business Warehouse via MDX
  SAP HANA Coletor suportado somente com o conector ODBC e o driver ODBC do SAP HANA
  Tabela SAP
  Snowflake
  Spark
  SQL Server
  Sybase
  Teradata
  Vertica
NoSQL Cassandra
  Couchbase (versão prévia)
  MongoDB
  MongoDB Atlas
Arquivo Amazon S3
  Armazenamento compatível com Amazon S3
  Sistema de Arquivos
  FTP
  Google Cloud Storage
  HDFS
  Oracle Cloud Storage
  SFTP
Projeto genérico HTTP Genérico
  OData Genérico
  ODBC Genérico
  REST Genérico
Serviços e aplicativos Amazon Marketplace Web Service (obsoleto)
  Concorrente (versão prévia)
  Dataverse
  Dynamics 365
  Dynamics AX
  Dynamics CRM
  Google AdWords
  HubSpot
  Jira
  Magento (versão prévia)
  Marketo (versão prévia)
  Microsoft 365
  Oracle Eloqua (versão prévia)
  Oracle Responsys (versão prévia)
  Serviço de Nuvem da Oracle (Versão prévia)
  PayPal (versão prévia)
  QuickBooks (versão prévia)
  Salesforce
  Nuvem de serviço Salesforce
  Nuvem de Marketing Salesforce
  SAP Cloud for Customer (C4C)
  SAP ECC
  ServiceNow
Lista do SharePoint Online
  Shopify (versão prévia)
  Square (versão prévia)
  Tabela da Web (tabela HTML)
  Xero
  Zoho (versão prévia)

Observação

Se um conector for marcado como versão prévia, você poderá experimentá-lo e nos enviar comentários. Se você quiser uma dependência de conectores em versão prévia em sua solução, entre em contato com o Suporte do Azure.

Formatos de arquivo com suporte

O Azure Data Factory é compatível com os formatos de arquivo a seguir. Confira cada artigo para obter configurações baseadas em formato.

Você pode usar a atividade Copy para copiar arquivos no estado em que se encontram entre dois armazenamentos de dados baseados em arquivo – nesse caso, os dados são copiados de maneira eficiente sem nenhuma serialização/desserialização. Você também pode analisar ou gerar arquivos de determinado formato. Por exemplo, você pode executar o seguinte:

  • Copiar dados de um banco de dados do SQL Server e gravá-los no Azure Data Lake Storage Gen2 no formato Parquet.
  • Copiar arquivos no formato de texto (CSV) do sistema de arquivos local e gravá-los no Armazenamento de Blobs do Azure no formato Avro.
  • Copiar arquivos compactados de um sistema de arquivos local, descompactá-los imediatamente e gravar os arquivos extraídos no Azure Data Lake Storage Gen2.
  • Copiar dados em formato de texto (CSV) compactado por Gzip do Armazenamento de Blobs do Azure e gravá-los no Banco de Dados SQL do Azure.
  • Muitas outras atividades que exigem serialização/desserialização ou compactação/descompactação.

Regiões com suporte

O serviço que permite a atividade Copy está disponível globalmente nas regiões e regiões geográficas listadas em Localizações do runtime de integração do Azure. A topologia globalmente disponível garante a movimentação de dados eficiente, o que geralmente evita saltos entre regiões. Confira Produtos por região para verificar a disponibilidade do Data Factory, workspaces do Synapse e a movimentação de dados em uma região específica.

Configuração

Para executar a atividade de Cópia com um pipeline, será possível usar as ferramentas ou os SDKs abaixo:

Em geral, para usar a atividade Copy nos pipelines do Synapse e Azure Data Factory, você precisa:

  1. Criar serviços vinculados para armazenamentos de dados de origem e de coletor. Você encontra a lista de conectores com suporte na seção Armazenamentos de dados e formatos com suporte deste artigo. Consulte a seção “Propriedades do serviço vinculado” do artigo do conector para obter informações de configuração e propriedades com suporte.
  2. Criar conjuntos de dados para origem e coletor. Consulte as seções "Propriedades do conjunto de dados" dos artigos do conector de origem e do coletor para obter informações de configuração e propriedades com suporte.
  3. Criar um pipeline com uma atividade Copy. A próxima seção fornece um exemplo.

Sintaxe

O modelo a seguir de uma atividade Copy contém uma lista completa das propriedades com suporte. Especifique as adequadas para o seu cenário.

"activities":[
    {
        "name": "CopyActivityTemplate",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<source dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<sink dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>",
                <properties>
            },
            "sink": {
                "type": "<sink type>"
                <properties>
            },
            "translator":
            {
                "type": "TabularTranslator",
                "columnMappings": "<column mapping>"
            },
            "dataIntegrationUnits": <number>,
            "parallelCopies": <number>,
            "enableStaging": true/false,
            "stagingSettings": {
                <properties>
            },
            "enableSkipIncompatibleRow": true/false,
            "redirectIncompatibleRowSettings": {
                <properties>
            }
        }
    }
]

Detalhes da sintaxe

Propriedade Descrição Necessário?
type Para uma atividade Copy, defina como Copy Sim
entradas Especifique o conjunto de dados criado que aponta para os dados de origem. A atividade Copy dá suporte a apenas uma entrada. Sim
outputs Especifique o conjunto de dados criado que aponta para os dados do coletor. A atividade Copy dá suporte a apenas uma saída. Sim
typeProperties Especifique as propriedades para configurar a atividade Copy. Sim
source Especifique o tipo de origem de cópia e as propriedades correspondentes para recuperar dados.
Para obter mais informações, confira a seção "Propriedades da atividade Copy” no artigo do conector listado em Formatos e armazenamentos de dados com suporte.
Sim
coletor Especifique o tipo do coletor de cópia e as propriedades correspondentes para gravar dados.
Para obter mais informações, confira a seção "Propriedades da atividade Copy” no artigo do conector listado em Formatos e armazenamentos de dados com suporte.
Sim
tradutor Especifique mapeamentos de coluna explícita da origem para o coletor. Essa propriedade se aplica quando o comportamento de cópia padrão não corresponde às necessidades.
Para obter mais informações, confira Mapeamento de esquema na atividade Copy.
Não
dataIntegrationUnits Especifique uma medida que represente a quantidade de energia que o runtime de integração do Azure usa para a cópia de dados. Essas unidades eram conhecidas como DMU (Data Movement Units) de nuvem.
Para saber mais, confira Unidade de Integração de Dados.
Não
parallelCopies Especifique o paralelismo que deseja que a atividade Copy use ao ler dados da origem e gravar dados no coletor.
Para obter mais informações, consulte Cópia paralela.
Não
preservar Especifique se deseja preservar metadados/ACLs durante a cópia de dados.
Para obter mais informações, confira Preservar metadados.
Não
enableStaging
stagingSettings
Especifique se deseja preparar os dados provisórios em um armazenamento Blob em vez de copiar os dados diretamente da origem para o coletor.
Para obter mais informações sobre cenários úteis e detalhes de configuração, confira Cópia em etapas.
Não
enableSkipIncompatibleRow
redirectIncompatibleRowSettings
Escolha como tratar linhas incompatíveis ao copiar dados da origem para o coletor.
Para obter mais informações, consulte Tolerância a falhas.
Não

Monitoramento

Você pode monitorar a execução da atividade Copy nos pipelines do Synapse e Azure Data Factory visualmente e de forma programática. Para mais detalhes, confira Monitorar atividade Copy.

Cópia incremental

O Data Factory e os pipelines do Synapse permitem copiar incrementalmente dados Delta de um armazenamento de dados de origem para um armazenamento de dados do coletor. Para mais detalhes, confira Tutorial: cópia incremental de dados.

Desempenho e ajuste

A experiência de monitoramento da atividade Copy mostra as estatísticas de desempenho de cópia para cada execução da atividade. O Guia de desempenho e escalabilidade da atividade Copy descreve os principais fatores que afetam o desempenho da movimentação de dados (atividade Copy). Ele também lista os valores de desempenho observados durante o teste e discute como otimizar o desempenho da atividade Copy.

Retomar da última execução com falha

A atividade Copy dá suporte à retomada da última execução com falha ao copiar muitos arquivos no estado em que se encontram com formato binário entre armazenamentos baseados em arquivo e escolher preservar a hierarquia de pastas/arquivos da origem para o coletor, por exemplo, para migrar dados do Amazon S3 para o Azure Data Lake Storage Gen2. Ele se aplica aos seguintes conectores baseados em arquivo: Amazon S3, Armazenamento compatível com Amazon S3, Blob do Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Arquivos do Azure, Sistema de Arquivos, FTP, Google Cloud Storage, HDFS, Oracle Cloud Storage e SFTP.

Você pode aproveitar a retomada da atividade Copy de duas maneiras:

  • Repetição de nível de atividade: você pode definir a contagem de repetições na atividade Copy. Durante a execução do pipeline, se essa execução de atividade Copy falhar, a próxima tentativa automática será iniciada no ponto de falha da última tentativa.

  • Executar novamente a partir da atividade com falha: após a conclusão da execução do pipeline, você também pode disparar uma nova execução da atividade com falha na exibição de monitoramento da interface do usuário do ADF ou de forma programática. Se a atividade com falha for uma atividade Copy, o pipeline será executado novamente a partir dessa atividade e também retomará a partir do ponto de falha da execução anterior.

    Retomar cópia

Alguns pontos a serem observados:

  • A retomada acontece no nível do arquivo. Se a atividade Copy falhar ao copiar um arquivo, esse arquivo específico será copiado novamente na próxima execução.
  • Para que a retomada funcione corretamente, não altere as configurações da atividade Copy entre as próximas execuções.
  • Quando você copia dados do Amazon S3, Azure Blob, Azure Data Lake Storage Gen2 e Google Cloud Storage, a atividade de cópia pode ser retomada a partir de um número arbitrário de arquivos copiados. Para o restante de conectores baseados em arquivo como fonte, a atividade Copy dá suporte à retomada de um número limitado de arquivos, geralmente no intervalo de dezenas de milhares, e varia dependendo do comprimento dos caminhos de arquivo; os arquivos que ultrapassarem esse número serão copiados novamente durante a novas execuções.

Para outros cenários que não incluem a cópia de arquivo binário, a nova execução da atividade Copy começa desde o início.

Observação

A retomada da última execução com falha por meio do runtime de integração auto-hospedada agora só tem suporte no runtime de integração auto-hospedada versão 5.43.8935.2 ou superior.

Preservar metadados junto com os dados

Ao copiar dados da origem para o coletor, em cenários como a migração do data lake, você também pode optar por preservar os metadados e ACLs juntamente com os dados usando a atividade Copy. Confira Preservar metadados para mais detalhes.

Adicionar marcas de metadados ao coletor baseado em arquivo

Quando o coletor é baseado no Armazenamento do Microsoft Azure (Armazenamento de data lake do Azure ou Armazenamento de Blobs do Azure), podemos optar por adicionar alguns metadados aos arquivos. Esses metadados aparecerão como parte das propriedades do arquivo como pares Chave-Valor. Para todos os tipos de coletores baseados em arquivo, você pode adicionar metadados que envolvem conteúdo dinâmico usando os parâmetros de pipeline, variáveis do sistema, funções e variáveis. Além disso, para o coletor baseado em arquivo binário, você tem a opção de adicionar datetime da Última Modificação (do arquivo de origem) usando a palavra-chave $$LASTMODIFIED, bem como valores personalizados como metadados para o arquivo do coletor.

Mapeamento de tipo de dados e de esquema

Confira Mapeamento de esquema e tipo de dados para obter mais informações sobre como a atividade Copy mapeia os dados de origem para o coletor.

Adicionar colunas adicionais durante a cópia

Além de copiar dados do armazenamento de dados de origem para o coletor, também é possível configurar para adicionar colunas de dados adicionais para serem copiadas junto com o coletor. Por exemplo:

  • Quando copiar de uma origem baseada em arquivo, armazene o caminho relativo do arquivo como uma coluna adicional para rastrear de qual arquivo os dados são provenientes.
  • Duplique a coluna de origem especificada como outra coluna.
  • Adicione uma coluna com a expressão do ADF para anexar variáveis de sistema do ADF, como nome do pipeline/ID do pipeline, ou armazenar outro valor dinâmico da saída da atividade upstream.
  • Adicione uma coluna com valor estático para atender à necessidade de consumo downstream.

Você pode encontrar a seguinte configuração na guia de origem da atividade Copy. Você também pode mapear essas colunas adicionais no mapeamento de esquema da atividade Copy como de costume usando os nomes de coluna definidos.

Adicionar colunas adicionais na atividade Copy

Dica

Esse recurso funciona com o modelo de conjunto de dados mais recente. Se não encontrar essa opção na interface do usuário, tente criar um novo conjunto de dados.

Para configurá-lo de forma programática, adicione a propriedade additionalColumns na origem de atividade Copy:

Propriedade Descrição Obrigatório
additionalColumns Adicione colunas de dados adicionais para copiar para o coletor.

Cada objeto sob a matriz additionalColumns representa uma coluna extra. O name define o nome da coluna e value indica o valor de dados dessa coluna.

Os valores de dados permitidos são:
- $$FILEPATH – uma variável reservada indica armazenar o caminho relativo dos arquivos de origem para o caminho da pasta especificado no conjunto de dados. Aplique à origem baseada em arquivo.
- $$COLUMN:<source_column_name> – um padrão de variável reservada indica a duplicação da coluna de origem especificada como outra coluna
- Expressão
- Valor estático
Não

Exemplo:

"activities":[
    {
        "name": "CopyWithAdditionalColumns",
        "type": "Copy",
        "inputs": [...],
        "outputs": [...],
        "typeProperties": {
            "source": {
                "type": "<source type>",
                "additionalColumns": [
                    {
                        "name": "filePath",
                        "value": "$$FILEPATH"
                    },
                    {
                        "name": "newColName",
                        "value": "$$COLUMN:SourceColumnA"
                    },
                    {
                        "name": "pipelineName",
                        "value": {
                            "value": "@pipeline().Pipeline",
                            "type": "Expression"
                        }
                    },
                    {
                        "name": "staticValue",
                        "value": "sampleValue"
                    }
                ],
                ...
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Dica

Após configurar as colunas adicionais, lembre-se de mapeá-las para o seu coletor de destino na guia Mapeamento.

Criar automaticamente tabelas do coletor

Quando copiar dados para o banco de dados SQL/Azure Synapse Analytics e a tabela de destino não existir, a atividade de cópia dá suporte à criação automática da tabela com base nos dados de origem. O objetivo é ajudá-lo a começar a carregar os dados e avaliar o SQL Database/Azure Synapse Analytics. Após a ingestão de dados, você pode revisar e ajustar o esquema da tabela do coletor conforme a necessidade.

Esse recurso tem suporte ao copiar dados de qualquer fonte nos armazenamentos de dados do coletor a seguir. Você pode encontrar a opção em Interface do usuário de criação do ADF –> >Coletor de atividade Copy –> >Opção de tabela –> >Criar tabela automaticamente ou pela propriedade tableOption no conteúdo do coletor de atividade Copy.

Criar tabelas do coletor

Tolerância a falhas

Por padrão, a atividade Copy interrompe a cópia de dados e retorna uma falha quando as linhas de dados de origem são incompatíveis com as linhas de dados do coletor. Para que a cópia seja realizada com sucesso, você pode configurar a atividade Copy para ignorar e registrar as linhas incompatíveis e copiar apenas os dados compatíveis. Confira Tolerância a falhas da atividade Copy para mais detalhes.

Verificação de consistência de dados

Quando você move dados do repositório de origem para o de destino, a atividade Copy fornece uma opção para realizar a verificação de consistência de dados adicional a fim de garantir que os dados não sejam apenas copiados com êxito da origem para o repositório de destino, mas também verificados como consistentes entre o repositório de origem e destino. Quando arquivos inconsistentes são encontrados durante a movimentação de dados, você pode anular a atividade Copy ou continuar a copiar o restante habilitando a configuração de tolerância a falhas para ignorar arquivos inconsistentes. Você pode obter os nomes de arquivos ignorados habilitando a configuração de log de sessão na atividade Copy. Confira Verificação de consistência de dados na atividade Copy para mais detalhes.

Registro de sessão

Você pode registrar os nomes de arquivos copiados, o que ajudará a garantir que os dados sejam copiados com êxito do armazenamento de origem ao de destino e também de forma consistente entre o armazenamento de origem e destino, revisando os registros de sessão da atividade Copy. Confira Atividade de cópia do login da sessão para obter mais detalhes.

Consulte os seguintes guias de início rápido, tutoriais e exemplos: