Copiar várias tabelas em massa usando o Azure Data Factory no portal do Azure

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!

Este tutorial demonstra como copiar uma série de tabelas do Banco de Dados SQL do Azure para o Azure Synapse Analytics. Você também pode aplicar o mesmo padrão em outros cenários de cópia. Por exemplo, copiando tabelas do SQL Server/Oracle para o Banco de Dados SQL do Azure/Azure Synapse Analytics/Blob do Azure e copiando diferentes caminhos do Blob para tabelas do Banco de Dados SQL do Azure.

Observação

Se estiver se familiarizando com o Azure Data Factory, confira Introdução ao Azure Data Factory.

De forma mais abrangente, este tutorial envolve as seguintes etapas:

  • Criar um data factory.
  • Criar o Banco de Dados SQL do Azure, o Azure Synapse Analytics e os serviços vinculados do Armazenamento do Azure.
  • Criar conjuntos de dados do Banco de Dados SQL do Azure e do Azure Synapse Analytics.
  • Crie um pipeline para consultar as tabelas a serem copiadas e outro pipeline para executar a operação de cópia propriamente dita.
  • Iniciar uma execução de pipeline.
  • Monitore as execuções de pipeline e de atividade.

Este tutorial usa o portal do Azure. Para obter informações sobre como usar outras ferramentas/SDKs para criar um data factory, consulte Guias de início rápido.

Fluxos de trabalho completos

Nesse cenário, você tem várias tabelas no Banco de Dados SQL do Azure que deseja copiar para o Azure Synapse Analytics. Aqui está a sequência lógica de etapas no fluxo de trabalho que ocorre em pipelines:

Workflow

  • O primeiro pipeline verifica a lista de tabelas que precisam ser copiadas nos armazenamentos de dados do coletor. Alternativamente, você pode manter uma tabela de metadados que lista todas as tabelas a serem copiadas para o armazenamento de dados de coletor. Em seguida, o pipeline dispara outro pipeline, que faz iteração por cada tabela no banco de dados e executa a operação de cópia de dados.
  • O segundo pipeline realiza a cópia propriamente dita. Ele usa a lista de tabelas como um parâmetro. Para cada tabela da lista, copie a tabela específica no Banco de Dados SQL do Azure para a tabela correspondente no Azure Synapse Analytics usando a cópia preparada por meio do Armazenamento de Blobs e do PolyBase para obter o melhor desempenho. Neste exemplo, o primeiro pipeline envia a lista de tabelas como um valor para o parâmetro.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

  • Conta de Armazenamento do Azure. A conta de Armazenamento do Azure é usada como Armazenamento de Blobs de preparo na operação de cópia em massa.
  • Banco de dados SQL do Azure. Este banco de dados contém os dados de origem. Crie um banco de dados contendo dados de exemplo do Adventure Works LT no Banco de Dados SQL, seguindo o artigo Criar um banco de dados no Banco de Dados SQL do Azure a seguir. Este tutorial copia todas as tabelas desse banco de dados de exemplo para o Azure Synapse Analytics.
  • Azure Synapse Analytics. Esse data warehouse contém os dados copiados do Banco de Dados SQL. Se você não tiver um workspace do Azure Synapse Analytics, confira o artigo Introdução ao Azure Synapse Analytics para obter as etapas necessárias para criar um.

Permitir que os serviços do Azure acessem o SQL Server

Para o Banco de Dados SQL e o Azure Synapse Analytics, permita que os serviços do Azure acessem o SQL Server. Verifique se a configuração Permitir acesso aos serviços e recursos do Azure para acessar este servidor está ATIVADA para seu servidor. Essa configuração permite que o serviço Data Factory leia dados do Banco de Dados SQL do Azure e grave-os no Azure Synapse Analytics.

Para verificar e ativar essa configuração, acesse seu servidor > Segurança > Firewalls e redes virtuais > defina a opção Permitir que os serviços e recursos do Azure acessem este servidor como ATIVADA.

Criar uma data factory

  1. Iniciar o navegador da Web Microsoft Edge ou Google Chrome. Atualmente, a interface do usuário do Data Factory tem suporte apenas nos navegadores da Web Microsoft Edge e Google Chrome.

  2. Vá para o Portal do Azure.

  3. À esquerda do menu do portal do Azure, selecione Criar um recurso>Integração>Data Factory.

    Data Factory selection in the "New" pane

  4. Na página Novo data factory, insira ADFTutorialBulkCopyDF como o nome.

    O nome do Azure Data Factory deve ser globalmente exclusivo. Se você se deparar com o seguinte erro para o campo nome, altere o nome do data factory (por exemplo, seunomeADFTutorialBulkCopyDF). Confira o artigo Data Factory - regras de nomenclatura para ver as regras de nomenclatura para artefatos do Data Factory.

    Data factory name "ADFTutorialBulkCopyDF" is not available
    
  5. Selecione a assinatura do Azure na qual você deseja criar o data factory.

  6. Para o Grupo de Recursos, execute uma das seguintes etapas:

  7. Selecione V2 para a versão.

  8. Selecione o local do data factory. Para obter uma lista de regiões do Azure no qual o Data Factory está disponível no momento, selecione as regiões que relevantes para você na página a seguir e, em seguida, expanda Análise para localizar Data Factory: Produtos disponíveis por região. Os armazenamentos de dados (Armazenamento do Azure, Banco de Dados SQL do Azure, etc.) e serviços de computação (HDInsight, etc.) usados pelo data factory podem estar em outras regiões.

  9. Clique em Criar.

  10. Após a conclusão da criação, selecione Ir para o recurso para navegar até a página do Data Factory.

  11. Selecione Abrir no bloco Abrir Azure Data Factory Studio para iniciar o aplicativo de interface do usuário do Data Factory em uma guia separada.

Criar serviços vinculados

Você cria os serviços vinculados para vincular seus armazenamentos de dados e serviços de computação ao data factory. Um serviço vinculado possui as informações de conexão que o serviço do Data Factory usa para conectar-se ao armazenamento de dados no runtime.

Neste tutorial, você vinculará o Banco de Dados SQL do Azure, o Azure Synapse Analytics e os armazenamentos de dados do Armazenamento de Blobs do Azure ao seu data factory. O Banco de Dados SQL do Azure é o armazenamento de dados de origem. O Azure Synapse Analytics é o armazenamento de dados de coletor/destino. O Armazenamento de Blobs do Azure serve para preparar os dados antes de eles serem carregados no Azure Synapse Analytics usando o PolyBase.

Criar o serviço vinculado do Banco de Dados SQL do Azure de origem

Nesta etapa, você criará um serviço vinculado para vincular seu banco de dados no Banco de Dados SQL do Azure ao data factory.

  1. Abra a guia Gerenciar no painel esquerdo.

  2. Na página Serviços vinculados, selecione +Novo para criar um serviço vinculado.

    New linked service.

  3. Na janela Novo Serviço Vinculado, selecione Banco de Dados SQL do Azure e clique em Continuar.

  4. Na janela Novo serviço vinculado (Banco de Dados SQL do Azure) , execute as etapas a seguir:

    a. Insira AzureSqlDatabaseLinkedService para o Nome.

    b. Selecione o seu servidor para o Nome do servidor

    c. Em Nome do banco de dados, selecione seu banco de dados.

    d. Digite nome do usuário para se conectar ao banco de dados.

    e. Insira a senha do usuário.

    f. Para testar a conexão ao banco de dados usando as informações especificadas, clique em Testar conexão.

    g. Clique em Criar para salvar o serviço vinculado.

Criar o serviço vinculado do Azure Synapse Analytics coletor

  1. Na guia Conexões, clique em + Novo na barra de ferramentas novamente.

  2. Na janela Novo Serviço Vinculado, selecione Azure Synapse Analytics e clique em Continuar.

  3. Na janela Novo Serviço Vinculado (Azure Synapse Analytics) , execute as seguintes etapas:

    a. Insira AzureSqlDWLinkedService para o Nome.

    b. Selecione o seu servidor para o Nome do servidor

    c. Em Nome do banco de dados, selecione seu banco de dados.

    d. Insira Nome de usuário para se conectar ao seu banco de dados.

    e. Insira a Senha do usuário.

    f. Para testar a conexão ao banco de dados usando as informações especificadas, clique em Testar conexão.

    g. Clique em Criar.

Criar o serviço vinculado do Armazenamento do Azure de preparo

Neste tutorial, você usa o Armazenamento de Blobs do Azure como uma área de preparação intermediária para habilitar o PolyBase para um melhor desempenho de cópia.

  1. Na guia Conexões, clique em + Novo na barra de ferramentas novamente.

  2. Na janela Novo Serviço Vinculado, selecione Armazenamento de Blobs do Azure e clique em Continuar.

  3. Na janela Novo serviço vinculado (Armazenamento de Blobs do Azure) , execute as etapas a seguir:

    a. Insira AzureStorageLinkedService como o Nome.
    b. Selecione sua conta de Armazenamento do Azure como o Nome da conta de armazenamento.

    c. Clique em Criar.

Criar conjuntos de dados

Neste tutorial você cria os conjuntos de dados de origem e do coletor, que especificam o local onde os dados são armazenados.

O conjunto de dados de entrada AzureSqlDatabaseDataset refere-se a AzureSqlDatabaseLinkedService. O serviço vinculado especifica a cadeia de conexão para se conectar ao banco de dados. O conjunto de dados especifica o nome do banco de dados e da tabela que contêm os dados de origem.

O conjunto de dados de saída AzureSqlDWDataset refere-se a AzureSqlDWLinkedService. O serviço vinculado especifica a cadeia de conexão para se conectar ao Azure Synapse Analytics. O conjunto de dados especifica o banco de dados e a tabela para a qual os dados são copiados.

Neste tutorial, as tabelas SQL de origem e de destino não são embutidas nas definições de conjunto de dados. Em vez disso, a atividade ForEach passa o nome da tabela em runtime para a atividade de Cópia.

Criar um conjunto de dados para o Banco de Dados SQL de origem

  1. Selecione a guia Criar no painel esquerdo.

  2. Selecione + (sinal de adição) no painel esquerdo e escolha Conjunto de dados.

    New dataset menu

  3. Na janela Novo Conjunto de dados, selecione Banco de Dados SQL do Azure e clique em Continuar.

  4. Na janela Definir propriedades, em Nome, insira AzureSqlDatabaseDataset. Em Serviço vinculado, selecione AzureSqlDatabaseLinkedService. Em seguida, clique em OK.

  5. Alterne para a guia Conexão e selecione qualquer tabela para Tabela. Esta é uma tabela fictícia. Você pode especificar uma consulta no conjunto de dados de origem ao criar um pipeline. A consulta é usada para extrair dados do seu banco de dados. Como alternativa, você pode clicar na caixa de seleção Editar e inserir dbo.dummyName como o nome da tabela.

Crie um conjunto de dados para o Azure Synapse Analytics coletor

  1. Clique em + (adição) no painel esquerdo e clique em Conjunto de dados.

  2. Na janela Novo Conjunto de Dados, selecione Azure Synapse Analytics e clique em Continuar.

  3. Na janela Definir propriedades, em Nome, insira AzureSqlDWDataset. Em Serviço vinculado, selecione AzureSqlDWLinkedService. Em seguida, clique em OK.

  4. Alterne para a guia Parâmetros, clique em + Novo e digite DWTableName para o nome do parâmetro. Clique em + Novo mais uma vez e digite DWSchema para o nome do parâmetro. Se você copiar/colar esse nome da página, exclua todos os caracteres de espaço à direita ao final de DWTableName e DWSchema.

  5. Alterne para a guia Conexão,

    1. Para Tabela, marque a opção Editar. Selecione o interior da primeira caixa de entrada e clique no link Adicionar conteúdo dinâmico abaixo. Na página Adicionar conteúdo dinâmico, clique em DWSchema em Parâmetros, que preencherá automaticamente a caixa de texto de expressão @dataset().DWSchema na parte superior, depois clique em Concluir.

      Dataset connection tablename

    2. Selecione o interior da segunda caixa de entrada e clique no link Adicionar conteúdo dinâmico abaixo. Na página Adicionar conteúdo dinâmico, clique em DWTAbleName em Parâmetros, que preencherá automaticamente a caixa de texto de expressão @dataset().DWTableName na parte superior e, em seguida, clique em Concluir.

    3. A propriedade tableName do conjunto de dados é definida como os valores que são passados como argumentos para os parâmetros DWSchema e DWTableName. A atividade ForEach itera por meio de uma lista de tabelas e passa uma por uma para a atividade de Cópia.

Criar pipelines

Neste tutorial, você cria dois pipelines: IterateAndCopySQLTables e GetTableListAndTriggerCopyData.

O pipeline GetTableListAndTriggerCopyData pipeline executa duas ações:

  • Pesquisa a tabela do sistema do Banco de Dados SQL do Azure para obter a lista de tabelas a serem copiadas.
  • Dispara o pipeline IterateAndCopySQLTables para fazer a cópia de dados propriamente dita.

O pipeline IterateAndCopySQLTables usa uma lista de tabelas como um parâmetro. Para cada tabela da lista, ele copia dados da tabela no Banco de Dados SQL do Azure para o Azure Synapse Analytics usando a cópia preparada e o PolyBase.

Criar o pipeline IterateAndCopySQLTables

  1. No painel esquerdo, clique em + (adição) e clique em Pipeline.

    New pipeline menu

  2. No painel Geral, em Propriedades, especifique IterateAndCopySQLTables para o Nome. Em seguida, recolha o painel clicando no ícone Propriedades no canto superior direito.

  3. Alterne para a guia Parâmetros e faça o seguinte:

    a. Clique em + Novo.

    b. Insira tableList para o parâmetro Name.

    c. Selecione Matriz para Tipo.

  4. Na caixa de ferramentas Atividades, expanda Iteração e condições e arraste e solte a atividade ForEach para a superfície de designer do pipeline. Você também pode pesquisar atividades na caixa de ferramentas Atividades.

    a. Na guia Geral, na parte inferior, digite IterateSQLTables para o Nome.

    b. Alterne para a guia Configurações, clique na caixa de entrada para Itens, em seguida, clique no link Adicionar conteúdo dinâmico abaixo.

    c. Na página Adicionar Conteúdo Dinâmico, recolha as seções Variáveis do Sistema e Funções, clique em tableList em Parâmetros, que preencherá automaticamente a caixa de texto de expressão superior para @pipeline().parameter.tableList. Em seguida, clique em Concluir.

    Foreach parameter builder

    d. Alterne para a guia Atividades, clique no ícone de lápis para adicionar uma atividade filho para a atividade ForEach.

    Foreach activity builder

  5. Na caixa de ferramentas Atividades, expanda Mover e Transferir e arraste e solte a atividade Copiar dados para a superfície do designer de pipeline. Observe o menu de navegação estrutural na parte superior. IterateAndCopySQLTable é o nome do pipeline e IterateSQLTables é o nome da atividade ForEach. O designer está no escopo da atividade. Para voltar ao editor do pipeline do editor de ForEach, você pode clicar no link no menu de navegação estrutural.

    Copy in ForEach

  6. Alterne para a guia Origem e siga estas etapas:

    1. Selecione AzureSqlDatabaseDataset para Conjunto de dados de origem.

    2. Selecione a opção de Consulta para Usar consulta.

    3. Clique na caixa de entrada Consulta -> selecione Adicionar conteúdo dinâmico abaixo -> insira a seguinte expressão para Consulta -> selecione Concluir.

      SELECT * FROM [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]
      
  7. Alterne para a guia Coletor e siga estas etapas:

    1. Selecione AzureSqlDWDataset para Conjunto de dados do coletor.

    2. Clique na caixa de entrada para o VALUE do parâmetro DWTableName -> selecione Adicionar conteúdo dinâmico abaixo, insira a expressão @item().TABLE_NAME como script -> selecione Concluir.

    3. Clique na caixa de entrada para VALUE do parâmetro DWSchema -> selecione Adicionar conteúdo dinâmico abaixo, insira a expressão @item().TABLE_SCHEMA como script -> selecione Concluir.

    4. Para o método Copy, selecione PolyBase.

    5. Desmarque a opção Usar padrão do tipo.

    6. Para a opção Tabela, a configuração padrão é "Nenhum". Se você não tiver tabelas criadas previamente no coletor do Azure Synapse Analytics, habilite a opção Criação automática de tabela, a atividade Copy então criará automaticamente tabelas para você com base nos dados de origem. Para obter detalhes, confira Criação automática de tabelas de coletor.

    7. Clique na caixa de entrada Pré-copiar Script -> selecione Adicionar conteúdo dinâmico abaixo -> insira a seguinte expressão como script -> selecione Concluir.

      IF EXISTS (SELECT * FROM [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]) TRUNCATE TABLE [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]
      

      Copy sink settings

  8. Alterne para a guia Configurações e siga estas etapas:

    1. Marque a caixa de seleção para Habilitar Preparo.
    2. Selecione AzureStorageLinkedService como Armazenar serviço vinculado da conta.
  9. Para validar as configurações de pipeline, clique em Validar na barra de ferramentas para o pipeline na parte superior. Verifique se não houve nenhum erro de validação. Para fechar o Relatório de Validação de Pipeline, clique nos colchetes duplos >>.

Criar o pipeline GetTableListAndTriggerCopyData

Esse pipeline executa duas ações:

  • Pesquisa a tabela do sistema do Banco de Dados SQL do Azure para obter a lista de tabelas a serem copiadas.
  • Dispara o pipeline "IterateAndCopySQLTables" para fazer a cópia de dados propriamente dita.

Estas são as etapas necessárias para criar o pipeline:

  1. No painel esquerdo, clique em + (adição) e clique em Pipeline.

  2. No painel Geral, sob Propriedades, altere o nome do pipeline para GetTableListAndTriggerCopyData.

  3. Na caixa de ferramentas Atividades, expanda Geral e arraste e solte a atividade de Pesquisa para a superfície do designer de pipeline e execute as seguintes etapas:

    1. Digite LookupTableList para Nome.
    2. Digite Recuperar a lista de tabelas do meu banco de dados para Descrição.
  4. Alterne para a guia Configurações e siga estas etapas:

    1. Selecione AzureSqlDatabaseDataset para Conjunto de dados de origem.

    2. Selecione Consulta para Usar consulta.

    3. Insira a seguinte consulta SQL para Consulta.

      SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE = 'BASE TABLE' and TABLE_SCHEMA = 'SalesLT' and TABLE_NAME <> 'ProductModel'
      
    4. Desmarque a caixa de seleção para o campo Somente primeira linha.

      Lookup activity - settings page

  5. Arraste e solte a atividade Executar pipeline da caixa de ferramentas Atividades para a superfície do designer do pipeline e defina o nome como TriggerCopy.

  6. Para Conectar a atividade de Pesquisa à atividade Executar Pipeline, arraste a caixa verde associada à atividade de Pesquisa à esquerda da atividade Executar Pipeline.

    Connect Lookup and Execute Pipeline activities

  7. Alterne para a guia Configurações da janela Pipeline e execute as seguintes etapas:

    1. Selecione IterateAndCopySQLTables para Pipeline invocado.

    2. Desmarque a caixa de seleção Aguardar a conclusão.

    3. Na seção Parâmetros, clique na caixa de entrada em VALUE -> selecione Adicionar conteúdo dinâmico abaixo -> insira @activity('LookupTableList').output.value como o valor do nome da tabela -> selecione Concluir. Você está configurando a lista de resultados da atividade de Pesquisa como uma entrada para o segundo pipeline. A lista de resultados contém a lista de tabelas cujos dados precisam ser copiados para o destino.

      Execute pipeline activity - settings page

  8. Para validar o pipeline, clique em Validar na barra de ferramentas. Confirme se não houver nenhum erro de validação. Para fechar o Relatório de validação do pipeline clique em >> .

  9. Para publicar entidades (conjuntos de dados, pipelines etc.) no serviço Data Factory, clique em Publicar tudo na parte superior da janela. Aguarde até que a publicação seja bem-sucedida.

Disparar uma execução de pipeline

  1. Vá até o pipeline GetTableListAndTriggerCopyData, clique em Adicionar Gatilho na barra de ferramentas do pipeline superior e, em seguida, clique em Disparar agora.

  2. Confirme a execução na página Execução do pipeline e selecione Concluir.

Monitorar a execução de pipeline

  1. Alterne para a guia Monitorar. Clique em Atualizar até que você veja as execuções para ambos os pipelines em sua solução. Continue atualizando a lista até que você veja o status Bem-sucedido.

  2. Para exibir execuções de atividade associadas ao pipeline GetTableListAndTriggerCopyData, clique no link do nome do pipeline para o pipeline. Você deve ver duas execuções de atividade para essa execução de pipeline. Monitor Pipeline run

  3. Para exibir a saída da atividade de Pesquisa, clique no link Saída ao lado da atividade, sob a coluna NOME DA ATIVIDADE. Você pode maximizar e restaurar a janela Saída. Depois de revisar, clique em X para fechar a janela Saída.

    {
        "count": 9,
        "value": [
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "Customer"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "ProductDescription"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "Product"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "ProductModelProductDescription"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "ProductCategory"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "Address"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "CustomerAddress"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "SalesOrderDetail"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "SalesOrderHeader"
            }
        ],
        "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (East US)",
        "effectiveIntegrationRuntimes": [
            {
                "name": "DefaultIntegrationRuntime",
                "type": "Managed",
                "location": "East US",
                "billedDuration": 0,
                "nodes": null
            }
        ]
    }
    
  4. Para voltar para a exibição Execuções de Pipeline, clique em Todas as execuções de pipeline na parte superior do menu de navegação estrutural. Clique no link IterateAndCopySQLTables (na coluna NOME DO PIPELINE) para exibir as execuções de atividade do pipeline. Observe que há uma execução de atividade de Cópia para cada tabela na saída da atividade Pesquisa.

  5. Confirme se os dados foram copiados para o Azure Synapse Analytics de destino usado neste tutorial.

Neste tutorial, você realizará os seguintes procedimentos:

  • Criar um data factory.
  • Criar o Banco de Dados SQL do Azure, o Azure Synapse Analytics e os serviços vinculados do Armazenamento do Azure.
  • Criar conjuntos de dados do Banco de Dados SQL do Azure e do Azure Synapse Analytics.
  • Crie um pipeline para consultar as tabelas a serem copiadas e outro pipeline para executar a operação de cópia propriamente dita.
  • Iniciar uma execução de pipeline.
  • Monitore as execuções de pipeline e de atividade.

Avance para o tutorial a seguir para saber mais sobre como copiar dados incrementalmente de uma origem para um destino: