quarta-feira, 7 de abril de 2010

Fuzzy lookup e tipo de dados da coluna Confidence

Post rápido com uma pequena solução.

Estou usando o fuzzy lookup em um projeto do SSIS, para tentar tirar algumas inconsistências das tabelas, tentando encontrar registros semelhantes como "Luciano Caixeta Moreira" e "Luciano CaiZeta Moreira", por exemplo.

Tudo indo certo, montei a fonte, transformação fuzzy lookup configurada e criei uma nova tabela PessoaFuzzy para armazenar o resultado do que for encontrado. Fui executar o pacote e ... Pau!

"[OLE DB Destination [104]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "OLE DB provider 'STREAM' for linked server '(null)' returned invalid data for column '[!BulkInsert]._Confidence'."


O erro já direciona o foco para onde está o problema, campo Confidence, mas qual dado é inválido? Coloquei alguns data viewers no pipeline do SSIS para tentar no zoiômetro pegar alguma coisa fora do padrão (estava testando em uma pequena massa de registros) e nada aparente.

Vamos nos voltar para o "pai-dos-desenvolvedores-com-pressa-que-não-querem-gastar-muito-tempo-com-besteira".Uma rápida pesquisa e voilá, solução encontrada.

Quando o SSIS gera a tabela de destino o campo Confidence, o tipo de dados fica como REAL, mas é necessário um FLOAT para armazenar o resultado gerado pelo SSIS! Alterado o campo, tudo funcionou corretamente.

Agora, sinceramente, isso me cheira a um BUG feio. Não era para o BIDS já gerar um campo float de cara? Na verdade eu até estou querendo evitar essa palavra, pois nas duas últimas semanas eu estou passando por uma série de casos que me cheiram a bug e estou ficando um pouco alucinado com isso.

Fica aí uma referência em português sobre o assunto.

[]s
Luciano Caixeta Moreira - {Luti}
Chief Innovation Officer
Sr. Nimbus Serviços em Tecnologia Ltda
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm

Um comentário: