Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
SSIS Integration Runtime em Azure Data Factory
Na versão atual do SQL Server Integration Services, a instrução SQL numa tarefa "Executar SQL" pode conter uma instrução MERGE. Esta MERGE instrução permite-lhe realizar múltiplas INSERToperações , UPDATE, e DELETE numa única instrução.
Para usar a MERGE instrução num pacote, siga estes passos:
Crie uma tarefa de Fluxo de Dados que carregue, transforme e guarde os dados de origem numa tabela temporária ou de staging.
Crie uma tarefa Execute SQL que contenha a instrução MERGE.
Ligue a tarefa Fluxo de Dados à tarefa Execute SQL e use os dados da tabela de staging como entrada para a MERGE instrução.
Observação
Embora uma MERGE instrução normalmente exija uma tabela de staging neste cenário, o desempenho da MERGE instrução geralmente excede o da pesquisa linha a linha realizada pela transformação Lookup. MERGE também é útil quando o grande tamanho de uma tabela de pesquisa sobrecarregaria a memória disponível para a transformação Lookup colocar em cache a respetiva tabela de referência.
Ao utilizar MERGE
Normalmente, utiliza-se a MERGE instrução quando se quer aplicar alterações que incluam inserções, atualizações e eliminações de uma tabela para outra. Antes do SQL Server 2008 (10.0.x), este processo exigia tanto uma transformação de Pesquisa como múltiplas transformações de comandos OLE DB. A transformação de Pesquisa realizava uma pesquisa linha a linha para determinar se cada linha era nova ou alterada. As transformações do Comando OLE DB executaram então as operações necessárias INSERT, UPDATE, e DELETE . A partir do SQL Server 2008 (10.0.x), uma única MERGE instrução pode substituir tanto a transformação Lookup como as correspondentes transformações de comandos OLE DB.
MERGE com Carregamentos Incrementais
A funcionalidade de captura de dados de alteração, que é nova no SQL Server 2008 (10.0.x), facilita a realização de cargas incrementais de forma fiável para um data warehouse. Como alternativa a usar transformações parametrizadas de comandos OLE DB para realizar as inserções e atualizações, pode usar a MERGE instrução para combinar ambas as operações.
Para mais informações, consulte Aplicar as Alterações ao Destino.
MERGE Em Outros Cenários
Nos cenários seguintes, pode utilizar a instrução MERGE tanto fora como dentro de um pacote do Integration Services. No entanto, é frequentemente necessário um pacote de Serviços de Integração para carregar estes dados a partir de múltiplas fontes heterogéneas, e depois para combinar e limpar os dados. Por isso, pode considerar usar a MERGE declaração num pacote para maior comodidade e facilidade de manutenção.
Rastrear Hábitos de Compra
A tabela FactBuyingHabits no data warehouse regista a última data em que um cliente comprou um determinado produto. A tabela consiste nas colunas ProductID, CustomerID e PurchaseDate (Data de Compra). Todas as semanas, a base de dados transacional gera uma tabela PurchaseRecords que inclui as compras feitas durante essa semana. O objetivo é usar uma única MERGE declaração para fundir a informação da tabela PurchaseRecords na tabela FactBuyingHabits. Para pares produto-cliente que não existem, a MERGE instrução insere novas linhas. Para os pares produto-cliente que existem, a instrução MERGE atualiza a data de compra mais recente.
Histórico de Preços
A tabela DimBook representa a lista de livros no inventário de um livreiro e identifica o histórico de preços de cada livro. Esta tabela tem as seguintes colunas: ISBN, ProductID, Price, Shelf e IsCurrent. Esta tabela também tem uma linha para cada preço que o livro teve. Uma destas filas contém o preço atual. Para indicar qual linha contém o preço atual, o valor da coluna IsCurrent para essa linha é definido como 1.
Todas as semanas, a base de dados gera uma tabela WeeklyChanges que contém alterações de preços para a semana e novos livros adicionados durante a semana. Ao usar uma única MERGE instrução, pode aplicar as alterações na tabela WeeklyChanges à tabela DimBook. A MERGE declaração insere novas linhas para livros recém-adicionados e atualiza a coluna IsCurrent para 0 para linhas de livros existentes cujos preços mudaram. A MERGE instrução também insere novas linhas para livros cujos preços mudaram e, para essas novas linhas, define o valor da coluna IsCurrent para 1.
Combine uma tabela com novos dados em relação à tabela antiga.
A base de dados modela as propriedades de um objeto usando um "esquema aberto", ou seja, uma tabela contém pares nome-valor para cada propriedade. A tabela de Propriedades tem três colunas: EntityID, PropertyID e Value. Uma tabela NewProperties que seja uma versão mais recente da tabela tem de ser sincronizada com a tabela Properties. Para sincronizar estas duas tabelas, pode usar uma única MERGE instrução para realizar as seguintes operações:
Eliminar propriedades da tabela Properties se estiverem ausentes da tabela NewProperties.
Atualize os valores das propriedades que estão na tabela Properties com novos valores encontrados na tabela NewProperties.
Insira novas propriedades para propriedades que estão na tabela NewProperties mas que não se encontram na tabela Properties.
Esta abordagem é útil em cenários que se assemelham a cenários de replicação, onde o objetivo é manter os dados em duas tabelas em dois servidores sincronizados.
Acompanhar Inventário
A base de dados de Inventário tem uma tabela de ProdutosInventário com as colunas ProductID e StockOnHand. Uma tabela de Envios com as colunas ProductID, CustomerID e Quantity acompanha os envios de produtos para os clientes. A tabela de ProdutoInventário tem de ser atualizada diariamente com base nas informações da tabela de Envios. Uma única instrução MERGE pode reduzir o stock na tabela ProductInventory com base nas expedições efetuadas. Se o inventário de um produto foi reduzido para 0, essa MERGE instrução também pode eliminar essa linha de produto da tabela ProductInventory.