Partilhar via


Cópia em massa de um banco de dados com uma tabela de controle

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Data Factory em Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA incorporada e novas funcionalidades. Se és novo na integração de dados, começa pelo Fabric Data Factory. As cargas de trabalho existentes do ADF podem atualizar para o Fabric para aceder a novas capacidades em ciência de dados, análise em tempo real e relatórios.

Para copiar dados de um data warehouse no Oracle Server, Netezza, Teradata ou SQL Server para o Azure Synapse Analytics, tem de carregar grandes quantidades de dados de várias tabelas. Normalmente, os dados têm de ser particionados em cada tabela para que possa carregar linhas com vários threads em paralelo a partir de uma única tabela. Este artigo descreve um modelo a ser usado nesses cenários.

Nota

Se quiseres copiar dados de um pequeno número de tabelas com um volume de dados relativamente pequeno para Azure Synapse Analytics, é mais eficiente usar a ferramenta Azure Data Factory Copy Data. O modelo descrito neste artigo é mais do que você precisa para esse cenário.

Sobre este modelo de solução

Este modelo recupera uma lista de partições de banco de dados de origem para copiar de uma tabela de controle externo. Em seguida, ele itera sobre cada partição no banco de dados de origem e copia os dados para o destino.

O modelo contém três atividades:

  • Lookup recupera a lista de partições específicas do banco de dados de uma tabela de controle externa.
  • ForEach obtém a lista de partições da atividade Lookup e itera cada partição para a atividade Copy.
  • Copie cada partição do armazenamento de origem do banco de dados para o armazenamento de destino.

O modelo define os seguintes parâmetros:

  • Control_Table_Name é sua tabela de controle externo, que armazena a lista de partições para o banco de dados de origem.
  • Control_Table_Schema_PartitionID é o nome da coluna na tabela de controle externo que armazena cada ID de partição. Certifique-se de que o ID da partição é exclusivo para cada partição no banco de dados de origem.
  • Control_Table_Schema_SourceTableName é sua tabela de controle externo que armazena cada nome de tabela do banco de dados de origem.
  • Control_Table_Schema_FilterQuery é o nome da coluna na tabela de controle externo que armazena a consulta de filtro para obter os dados de cada partição no banco de dados de origem. Por exemplo, se você particionou os dados por ano, a consulta armazenada em cada linha pode ser semelhante a 'selecionar * da fonte de dados onde LastModifytime >= ''2015-01-01 00:00:00'' e LastModifytime <= ''2015-12-31 23:59:59.999''.
  • Data_Destination_Folder_Path é o caminho onde os dados são copiados para o seu armazenamento de destino (aplicável quando o destino que escolhe é "File System" ou "Azure Data Lake Storage Gen1").
  • Data_Destination_Container é o caminho da pasta raiz para onde os dados são copiados na sua loja de destino.
  • Data_Destination_Directory é o caminho do diretório sob a raiz onde os dados são copiados para o armazenamento de destino.

Os três últimos parâmetros, que definem o caminho no repositório de destino, só serão visíveis se o destino escolhido for o armazenamento baseado em arquivo. Se escolher "Azure Synapse Analytics" como loja de destino, estes parâmetros não são obrigatórios. Mas os nomes das tabelas e o esquema no Azure Synapse Analytics têm de ser os mesmos que os da base de dados de origem.

Como usar este modelo de solução

  1. Crie uma tabela de controlo no SQL Server ou Base de Dados SQL do Azure para armazenar a lista de partições da base de dados de origem para cópia em massa. No exemplo a seguir, há cinco partições no banco de dados de origem. Três partições são para o datasource_table e duas são para o project_table. A coluna LastModifytime é usada para particionar os dados na tabela datasource_table do banco de dados de origem. A consulta usada para ler a primeira partição é 'select * from datasource_table onde LastModifytime >= ''2015-01-01 00:00:00'' e LastModifytime <= ''2015-12-31 23:59:59.999''. Você pode usar uma consulta semelhante para ler dados de outras partições.

     		Create table ControlTableForTemplate
     		(
     		PartitionID int,
     		SourceTableName  varchar(255),
     		FilterQuery varchar(255)
     		);
    
     		INSERT INTO ControlTableForTemplate
     		(PartitionID, SourceTableName, FilterQuery)
     		VALUES
     		(1, 'datasource_table','select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''),
     		(2, 'datasource_table','select * from datasource_table where LastModifytime >= ''2016-01-01 00:00:00'' and LastModifytime <= ''2016-12-31 23:59:59.999'''),
     		(3, 'datasource_table','select * from datasource_table where LastModifytime >= ''2017-01-01 00:00:00'' and LastModifytime <= ''2017-12-31 23:59:59.999'''),
     		(4, 'project_table','select * from project_table where ID >= 0 and ID < 1000'),
     		(5, 'project_table','select * from project_table where ID >= 1000 and ID < 2000');
    
  2. Vá para o modelo Cópia em massa do banco de dados . Crie uma nova conexão com a tabela de controle externo que você criou na etapa 1.

    Captura de tela mostrando a criação de uma nova conexão com a tabela de controle.

  3. Crie uma Nova conexão com o banco de dados de origem do qual você está copiando dados.

    Captura de tela mostrando a criação de uma nova conexão com o banco de dados de origem.

  4. Crie uma Nova conexão com o armazenamento de dados de destino para o qual você está copiando os dados.

    Captura de tela mostrando a criação de uma nova conexão com o repositório de destino.

  5. Selecione Utilizar este modelo.

  6. É possível ver o pipeline, conforme mostrado no exemplo a seguir.

    Captura de ecrã mostrando o pipeline.

  7. Selecione Depurar, insira os Parâmetros e selecione Concluir.

    Captura de tela mostrando o botão Depurar.

  8. Você vê resultados semelhantes ao exemplo a seguir:

    Captura de tela mostrando o resultado da execução do pipeline.

  9. (Opcional) Se escolheu "Azure Synapse Analytics" como destino de dados, deve introduzir uma ligação ao Azure Blob storage para staging, conforme exigido pelo Azure Synapse Analytics Polybase. O modelo gerará automaticamente um caminho de contêiner para seu armazenamento de Blob. Verifique se o contêiner foi criado após a execução do pipeline.

    Captura de tela mostrando a configuração Polybase.