Partilhar via


Crie pipelines de cópia de dados em grande escala com uma abordagem orientada por metadados na ferramenta de cópia de dados

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!

Quando você deseja copiar grandes quantidades de objetos (por exemplo, milhares de tabelas) ou carregar dados de uma grande variedade de fontes, a abordagem apropriada é inserir a lista de nomes dos objetos com comportamentos de cópia necessários em uma tabela de controle e, em seguida, usar pipelines parametrizados para ler o mesmo da tabela de controle e aplicá-los aos trabalhos de acordo. Ao fazer isso, você pode manter (por exemplo, adicionar/remover) a lista de objetos a ser copiada facilmente, apenas atualizando os nomes de objetos na tabela de controle em vez de reimplantar os pipelines. Além disso, você terá um único lugar para verificar facilmente quais objetos copiados por quais pipelines/gatilhos com comportamentos de cópia definidos.

A ferramenta de cópia de dados no ADF facilita a jornada de criação desses pipelines de cópia de dados orientados por metadados. Depois de passar por um fluxo intuitivo de uma experiência baseada em assistente, a ferramenta pode gerar pipelines parametrizados e scripts SQL para você criar tabelas de controle externo de acordo. Depois de executar os scripts gerados para criar a tabela de controle em seu banco de dados SQL, seus pipelines lerão os metadados da tabela de controle e os aplicarão nos trabalhos de cópia automaticamente.

Criar trabalhos de cópia orientados por metadados a partir da ferramenta de cópia de dados

  1. Selecione Tarefa de cópia orientada por metadados na ferramenta Copiar dados.

    Você precisa inserir a conexão e o nome da tabela de controle, para que o pipeline gerado leia metadados a partir disso.

    Selecionar tipo de tarefa

  2. Insira a conexão do seu banco de dados de origem. Você também pode usar o serviço vinculado parametrizado.

    Selecionar serviço vinculado parametrizado

  3. Selecione o nome da tabela a ser copiado.

    Selecionar tabela

    Nota

    Se você selecionar armazenamento de dados tabulares, terá a chance de selecionar ainda mais carga completa ou carga delta na próxima página. Se você selecionar armazenamento de armazenamento, poderá selecionar ainda mais a carga completa somente na próxima página. Atualmente, não há suporte para o carregamento incremental de novos arquivos somente do armazenamento de armazenamento.

  4. Escolha o comportamento de carregamento.

    Gorjeta

    Se você quiser fazer a cópia completa em todas as tabelas, selecione Carregar todas as tabelas. Se quiser fazer uma cópia incremental, você pode selecionar configurar para cada tabela individualmente e selecionar Carga delta, bem como nome da coluna de marca d'água e valor & para iniciar para cada tabela.

  5. Selecione Armazenamento de dados de destino.

  6. Na página Configurações , você pode decidir o número máximo de atividades de cópia para copiar dados do seu armazenamento de origem simultaneamente por meio do Número de tarefas de cópia simultâneas. O valor padrão é 20.

    Página de definições

  7. Após a implantação do pipeline, você pode copiar ou baixar os scripts SQL da interface do usuário para criar a tabela de controle e o procedimento de armazenamento.

    Baixar scripts

    Você verá dois scripts SQL.

    • O primeiro script SQL é usado para criar duas tabelas de controle. A tabela de controle principal armazena a lista de tabelas, o caminho do arquivo ou os comportamentos de cópia. A tabela de controle de conexão armazena o valor de conexão do seu armazenamento de dados se você usou o serviço vinculado parametrizado.
    • O segundo script SQL é usado para criar um procedimento de armazenamento. Ele é usado para atualizar o valor da marca d'água na tabela de controle principal quando os trabalhos de cópia incremental são concluídos sempre.
  8. Abra o SSMS para se conectar ao servidor de tabela de controle e execute os dois scripts SQL para criar tabelas de controle e armazenar procedimentos.

    Criar script de tabela de controle

  9. Consulte a tabela de controle principal e a tabela de controle de conexão para revisar os metadados nela.

    Tabela de controlo principalScript da tabela de controle de consulta1

    Tabela de controle de conexãoScript de tabela de controle de consulta2

  10. Volte ao portal do ADF para visualizar e depurar pipelines. Você verá uma pasta criada nomeando "MetadataDrivenCopyTask_#########". Clique na nomenclatura do pipeline com "MetadataDrivenCopyTask###_TopLevel" e clique em debug run.

    É necessário inserir os seguintes parâmetros:

    Nome dos parâmetros Description
    MaxNumberOfConcurrentTasks Você sempre pode alterar o número máximo de atividades de cópia simultâneas executadas antes da execução do pipeline. O valor padrão será aquele que você inserir na ferramenta de cópia de dados.
    MainControlTableName Você sempre pode alterar o nome da tabela de controle principal, para que o pipeline obtenha os metadados dessa tabela antes de ser executado.
    ConnectionControlTableName Você sempre pode alterar o nome da tabela de controle de conexão (opcional), para que o pipeline obtenha os metadados relacionados à conexão do armazenamento de dados antes da execução.
    MaxNumberOfObjectsReturnedFromLookupActivity Para evitar atingir o limite da atividade de pesquisa de saída, há uma maneira de definir o número máximo de objetos retornados pela atividade de pesquisa. Na maioria dos casos, o valor padrão não precisa ser alterado.
    janelaIniciar Quando você insere um valor dinâmico (por exemplo, aaaa/mm/dd) como caminho da pasta, o parâmetro é usado para passar o tempo de gatilho atual para o pipeline, a fim de preencher o caminho da pasta dinâmica. Quando o pipeline é acionado por gatilho de agendamento ou gatilho de janelas de tombamento, os usuários não precisam inserir o valor desse parâmetro. Valor da amostra: 2021-01-25T01:49:28Z
  11. Habilite o gatilho para operacionalizar os pipelines.

    Ativar o acionador

Atualizar tabela de controle por ferramenta de cópia de dados

Você sempre pode atualizar diretamente a tabela de controle adicionando ou removendo o objeto a ser copiado ou alterando o comportamento de cópia para cada tabela. Também criamos experiência de interface do usuário na ferramenta de cópia de dados para facilitar a jornada de edição da tabela de controle.

  1. Clique com o botão direito do mouse no pipeline de nível superior: MetadataDrivenCopyTask_xxx_TopLevel e selecione Editar tabela de controle.

    Editar tabela de controlo1

  2. Selecione linhas na tabela de controle para editar.

    Editar tabela de controlo2

  3. Faça a transferência da ferramenta de cópia de dados e ela criará um novo script SQL para você. Execute novamente o script SQL para atualizar sua tabela de controle.

    Editar tabela de controlo3

    Nota

    O pipeline NÃO será reimplantado. O novo script SQL criado ajuda você a atualizar somente a tabela de controle.

Tabelas de controlo

Tabela de controlo principal

Cada linha na tabela de controle contém os metadados de um objeto (por exemplo, uma tabela) a ser copiado.

Nome da coluna Descrição
ID ID exclusivo do objeto a ser copiado.
SourceObjectSettings Metadados do conjunto de dados de origem. Pode ser nome do esquema, nome da tabela, etc. Aqui está um exemplo.
SourceConnectionSettingsName O nome da configuração de conexão de origem na tabela de controle de conexão. É opcional.
CopySourceSettings Metadados da propriedade source na atividade de cópia. Pode ser consulta, partições etc. Aqui está um exemplo.
SinkObjectSettings Metadados do conjunto de dados de destino. Pode ser nome do arquivo, caminho da pasta, nome da tabela, etc. Aqui está um exemplo. Se o caminho da pasta dinâmica for especificado, o valor da variável não será escrito aqui na tabela de controle.
SinkConnectionSettingsName O nome da configuração de conexão de destino na tabela de controle de conexão. É opcional.
CopySinkSettings Metadados da propriedade do coletor na atividade de cópia. Pode ser preCopyScript, tableOption etc. Aqui está um exemplo.
CopyActivitySettings Metadados da propriedade do tradutor na atividade de cópia. Ele é usado para definir o mapeamento de colunas.
TopLevelPipelineName Nome do pipeline superior, que pode copiar este objeto.
Nome_gatilho Nome do gatilho, que pode acionar o pipeline para copiar esse objeto. Se a depuração for executada, o nome será Sandbox. Se execução manual, o nome é Manual. Se a execução for agendada, o nome será o nome do gatilho associado. Pode ser inserido vários nomes.
DataLoadingBehaviorSettings Carga total vs. carga delta.
TaskId A ordem dos objetos a serem copiados seguindo o TaskId na tabela de controle (ORDER BY [TaskId] DESC). Se você tiver grandes quantidades de objetos a serem copiados, mas apenas um número limitado de cópias simultâneas permitido, poderá alterar o TaskId de cada objeto para decidir quais objetos podem ser copiados anteriormente. O valor predefinido é 0.
CopyEnabled Especifique se o item está habilitado no processo de ingestão de dados. Valores permitidos: 1 (habilitado), 0 (desativado). O valor padrão é 1.

Tabela de controle de conexão

Cada linha na tabela de controle contém uma configuração de conexão para o armazenamento de dados.

Nome da coluna Description
Name Nome da conexão parametrizada na tabela de controle principal.
Configurações de conexão As configurações de conexão. Pode ser nome do banco de dados, nome do servidor e assim por diante.

Pipelines

Você verá três níveis de pipelines são gerados pela ferramenta de cópia de dados.

MetadataDrivenCopyTask_xxx_TopLevel

Esse pipeline calculará o número total de objetos (tabelas, etc.) necessários para serem copiados nesta execução, criará o número de lotes sequenciais com base na tarefa de cópia simultânea máxima permitida e, em seguida, executará outro pipeline para copiar lotes diferentes sequencialmente.

Parâmetros

Nome dos parâmetros Description
MaxNumberOfConcurrentTasks Você sempre pode alterar o número máximo de atividades de cópia simultâneas executadas antes da execução do pipeline. O valor padrão será aquele que você inserir na ferramenta de cópia de dados.
MainControlTableName O nome da tabela de controle principal. O pipeline obterá os metadados desta tabela antes de executar
ConnectionControlTableName O nome da tabela da tabela de controle de conexão (opcional). O pipeline obterá os metadados relacionados à conexão de armazenamento de dados antes de executar
MaxNumberOfObjectsReturnedFromLookupActivity Para evitar atingir o limite da atividade de pesquisa de saída, há uma maneira de definir o número máximo de objetos retornados pela atividade de pesquisa. Na maioria dos casos, o valor padrão não precisa ser alterado.
janelaIniciar Quando você insere um valor dinâmico (por exemplo, aaaa/mm/dd) como caminho da pasta, o parâmetro é usado para passar o tempo de gatilho atual para o pipeline, a fim de preencher o caminho da pasta dinâmica. Quando o pipeline é acionado por gatilho de agendamento ou gatilho de janelas de tombamento, os usuários não precisam inserir o valor desse parâmetro. Valor da amostra: 2021-01-25T01:49:28Z

Atividades

Nome da atividade Tipo de atividade Description
GetSumOfObjectsToCopy Procura Calcule o número total de objetos (tabelas, etc.) necessários para serem copiados nesta execução.
CopyBatchesOfObjectsSequencialmente ForEach Crie o número de lotes sequenciais com base no máximo permitido de tarefas de cópia simultânea e, em seguida, execute outro pipeline para copiar lotes diferentes sequencialmente.
CopyObjectsInOneBtach Executar pipeline Execute outro pipeline para copiar um lote de objetos. Os objetos pertencentes a este lote serão copiados em paralelo.

MetadataDrivenCopyTask_xxx_ Nível Médio

Esse pipeline copiará um lote de objetos. Os objetos pertencentes a este lote serão copiados em paralelo.

Parâmetros

Nome dos parâmetros Description
MaxNumberOfObjectsReturnedFromLookupActivity Para evitar atingir o limite da atividade de pesquisa de saída, há uma maneira de definir o número máximo de objetos retornados pela atividade de pesquisa. Na maioria dos casos, o valor padrão não precisa ser alterado.
TopLevelPipelineName O nome do pipeline da camada superior.
Nome_gatilho O nome do gatilho.
CurrentSequentialNumberOfBatch A ID do lote sequencial.
SumOfObjectsToCopy O número total de objetos a serem copiados.
SumOfObjectsToCopyForCurrentBatch O número de objetos a serem copiados no lote atual.
MainControlTableName O nome da tabela de controle principal.
ConnectionControlTableName O nome da tabela de controle de conexão.

Atividades

Nome da atividade Tipo de atividade Description
DivideOneBatchIntoMultipleGroups ForEach Divida objetos de um único lote em vários grupos paralelos para evitar atingir o limite de saída da atividade de pesquisa.
GetObjectsPerGroupToCopy Procura Obter objetos (tabelas, etc.) da tabela de controle necessários para serem copiados neste grupo. A ordem dos objetos a serem copiados seguindo o TaskId na tabela de controle (ORDER BY [TaskId] DESC).
CopyObjectsInOneGroup Executar pipeline Execute outro pipeline para copiar objetos de um grupo. Os objetos pertencentes a este grupo serão copiados em paralelo.

MetadataDrivenCopyTask_xxx_ Nível inferior

Esse pipeline copiará objetos de um grupo. Os objetos pertencentes a este grupo serão copiados em paralelo.

Parâmetros

Nome dos parâmetros Description
ObjectsPerGroupToCopy O número de objetos a serem copiados no grupo atual.
ConnectionControlTableName O nome da tabela de controle de conexão.
janelaIniciar Ele costumava passar o tempo de gatilho atual para o pipeline, a fim de preencher o caminho da pasta dinâmica, se configurado pelo usuário.

Atividades

Nome da atividade Tipo de atividade Description
ListObjectsFromOneGroup ForEach Liste objetos de um grupo e itere cada um deles para atividades a jusante.
RouteJobsBasedOnLoadingBehavior Switch Verifique o comportamento de carregamento de cada objeto. Se for o caso padrão ou FullLoad, faça o carregamento completo. Se for o caso DeltaLoad, faça o carregamento incremental através da coluna de marca d'água para identificar alterações
FullLoadOneObject Copiar Tire um instantâneo completo deste objeto e copie-o para o destino.
DeltaLoadOneObject Copiar Copie os dados alterados somente da última vez comparando o valor na coluna de marca d'água para identificar alterações.
GetMaxWatermarkValue Procura Consulte o objeto de origem para obter o valor máximo da coluna marca d'água.
UpdateWatermarkColumnValue StoreProcedure Escreva novamente o novo valor da marca d'água na tabela de controle a ser usada na próxima vez.

Limitações conhecidas

  • Nome de IR, tipo de banco de dados, tipo de formato de arquivo não podem ser parametrizados no ADF. Por exemplo, se você quiser ingerir dados do Oracle Server e do SQL Server, precisará de dois pipelines parametrizados diferentes. Mas a tabela de controle única pode ser compartilhada por dois conjuntos de pipelines.
  • OPENJSON é usado em scripts SQL gerados pela ferramenta de cópia de dados. Se você estiver usando o SQL Server para hospedar a tabela de controle, ela deverá ser SQL Server 2016 (13.x) e posterior para dar suporte à função OPENJSON.

Experimente estes tutoriais que usam a ferramenta Copiar dados: