Share 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

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

Para copiar dados de um data warehouse no Oracle Server, Netezza, Teradata ou SQL Server para o Azure Synapse Analytics, você precisa 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 você quiser copiar dados de um pequeno número de tabelas com volume de dados relativamente pequeno para o 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:

  • A pesquisa recupera a lista de partições de banco de dados certas de uma tabela de controle externo.
  • ForEach obtém a lista de partições da atividade Pesquisa e itera cada partição para a atividade Copiar.
  • Copie cópias de cada partição do armazenamento do banco de dados de origem 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 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 armazenamento de destino (aplicável quando o destino escolhido é "Sistema de Arquivos" ou "Azure Data Lake Storage Gen1").
  • Data_Destination_Container é o caminho da pasta raiz para onde os dados são copiados no armazenamento 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 armazenamento de destino, só serão visíveis se o destino escolhido for o armazenamento baseado em arquivo. Se você escolher "Azure Synapse Analytics" como o armazenamento de destino, esses parâmetros não serão necessários. Mas os nomes de tabela e o esquema no Azure Synapse Analytics devem ser os mesmos que os do banco de dados de origem.

Como usar este modelo de solução

  1. Crie uma tabela de controle no SQL Server ou no Banco de Dados SQL do Azure para armazenar a lista de partições do banco 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.

    Screenshot showing the creation of a new connection to the control table.

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

    Screenshot showing the creation of a new connection to the source database.

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

    Screenshot showing the creation of a new connection to the destination store.

  5. Selecione Utilizar este modelo.

  6. Você vê o pipeline, conforme mostrado no exemplo a seguir:

    Screenshot showing the pipeline.

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

    Screenshot showing the Debug button.

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

    Screenshot showing the result of the pipeline run.

  9. (Opcional) Se você escolher "Azure Synapse Analytics" como o destino de dados, deverá inserir uma conexão com o armazenamento de Blob do Azure para preparação, 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.

    Screenshot showing the Polybase setting.