Cenário:
A necessidade de automatizar a carga
de um grande volume de dados pode colocar a equipe de desenvolvimento na difícil
tarefa de tentar encontrar erros oriundos da fonte de informação. Entretanto, identificar
os registros problemáticos poderá ser uma ação extremamente onerosa. Uma das
formas mais produtivas de se efetuar essa tarefa no Integration Services(SISS) é
garantir a execução total da rotina de carga .Configurando a mesma para separar
os registros defeituosos dos registros corretos.
Esse tutorial apresentará uma forma
simples de permitir a análise dos registros que não poderão ser levados para a tabela
alvo desejada.
Ambiente:
O ambiente de desenvolvimento dessa
solução é composto pelo sistema operacional Windows 10, banco de dados Sql Server e Integration
Services (SISS – ferramenta para extração e carga dos dados).
Problema:
A empresa Xpto opera com dois bancos
de dados: ZAX e PXO. O PXO precisará carregar os dados da tabela tFuncionario
presente no banco ZAX. A tabela tFuncionario possui os seguintes dados listados
abaixo:
Id |
Nome |
Setor |
Idade |
1 |
João |
Vendas |
50 |
2 |
Marta |
TI |
35 |
3 |
Maria |
Financeiro |
X |
OBS: Para conseguir criar o contexto
do problema na carga, será considerado que a linha correspondente ao Id 3
possui uma inconsistência de tipo para o atributo idade. Pois, o atributo idade
foi definido como varchar e por algum motivo foi cadastrado um valor de idade
incompatível com o tipo inteiro.
Segue o script para montar o contexto da tabela fonte de dados:
Scripts:
CREATE TABLE [dbo].[tFuncionario](
[cod] [INT] NULL,
[nome] [varchar](250) NULL,
[setor] [varchar](50) NULL,
[idade] [varchar](2)
) ON [PRIMARY]
GO
INSERT INTO [dbo].[tFuncionario] (cod , nome ,setor ,idade) VALUES (1,'João','Vendas',50)
INSERT INTO [dbo].[tFuncionario] (cod , nome ,setor ,idade) VALUES (2,'Marta','TI',35)
INSERT INTO [dbo].[tFuncionario] (cod , nome ,setor ,idade) VALUES (3,'Maria','Financeiro','X')
A tabela do banco PXO que receberá os
dados de tFuncionario se chama tFuncStageZAX. Essa tabela possui o seguinte
script de criação:
CREATE TABLE [dbo].[tFuncStageZAX](
[cod] [INT] NULL,
[nome] [varchar](250) NULL,
[setor] [varchar](50) NULL,
[idade] [INT]
) ON [PRIMARY]
GO
Diante dessa estrutura de tabela, a
linha de Id 3 da tabela tFuncionario irá gerar um erro na carga pois o valor X
não conseguirá ser convertido em um valor inteiro
Solução:
Passo 1
Na tela Fluxo de Controle arraste o
componente de Fluxo de Carga.
Entre no componente clicando duas vezes sobre
o mesmo para abrir a tela de Fluxo de Dados. arraste um componente para a origem de dados referenciando
a tabela tFuncionario e um componente de destino de dados referenciando a
tabela tFuncStageZAX.
Passo 2 (Identificação do Erro)
Tente executar a carga para que o
erro abaixo seja exibido pelo integration Service.
Consulte a tabela destino tFuncStageZAX
e perceba que nenhum dado foi carregado lá.
Passo 3 (Tratamento do Erro)
Para possibilitar a carga dos
registros corretos e facilitar a identificação das linhas responsáveis pelo
erro exibido no Passo 2 a seguinte
configuração de carga poderá ser realizada:
Para desenvolver essa configuração foi incluído o componente de Destino de Dados nomeado de tLogCargaFunc. Este componente tem como entrada de dados uma linha vermelha que representa o fluxo das linhas responsáveis por gerar exceções ou erros na inserção de dados na tabela tFuncStageZAX.
A configuração do componente tLogCargaFunc foi realizada seguindo as seguintes etapas:
Abrindo a tela de edição do
componente tLogCargaFunc crie a tabela para agilizar a criação da estrutura de
log para armazenar as linhas incorretas.
Entre na aba de Mapeamentos para estabelecer as correspondências entre as colunas do log o fluxo dos dados
Após finalizar a configuração do
componente de Log a carga poderá ser executada novamente. Após a finalização da
mesma o erro não será mais emitido pelo Integration Service e a tabela tLogCargaFunc
armazenará a linha de Id igual 3 enquanto a tabela tFuncStageZAX armazenará os outros dois registros.
Conclusão
O Integration Service oferece o mecanismo
para captura de erros na inserção dos registros de uma tabela. Esse mecanimos
possibilita a continuação da carga e registro das linhas incorretas.
Facilitando a depuração da carga e continuação da mesma através da inserção dos
registros válidos na tabela alvo.
Comentários
Postar um comentário