1
resposta

Erro ao carregar os dados na dimensão de alteração lenta, conflito com Dim_Organizacional

Fiz as coisas conforme mostrado na área mãos na massa, mas aparece este problema ao executar;

Também notei duas coisas sobre o banco de dados que a gente baixa, ele vem com uma coluna extra chamada DATA_FATO, que é ignorado e há outra detalhe o campo UNIDADE_VENDIDA não é mapeado automaticamente para Unidades_Vendida, fazendo a associação manual, ou criando uma area de conversão de dados, da na mesma o erro abaixo aparece;

Pelo que entendi ele conflita de alguma forma com a Dim_Organizacional no campo Cod_Filho, mas porque?

Um registro OLE DB está disponível. Origem: "Microsoft SQL Server Native Client 11.0" Resultado: 0x80040E2F Descrição: "A instrução INSERT conflitou com a restrição do FOREIGN KEY "FK_Fato_001_Dim_Organizacional". O conflito ocorreu no banco de dados "DW_SUCOS", tabela "dbo.Dim_Organizacional", column 'Cod_Filho'.". Erro: 0xC0209029 em Fato001, Inserir Destino [178]: Código de Erro SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Falha de "Inserir Destino.Entradas[Entrada de Destino OLE DB]" devido ao código de erro 0xC020907B e a disposição da linha de erro em "Inserir Destino.Entradas[Entrada de Destino OLE DB]" especifica falha no erro. Ocorreu um erro no objeto especificado do componente especificado. Mensagens de erro podem ter sido postadas antes com mais informações sobre a falha. Erro: 0xC0047022 em Fato001, SSIS.Pipeline: Código de Erro SSIS DTS_E_PROCESSINPUTFAILED. Falha do método ProcessInput no componente "Inserir Destino" (178) com o código de erro 0xC0209029 durante o processamento da entrada "Entrada de Destino OLE DB" (191). O componente identificado retornou um erro do método ProcessInput. Esse erro é específico do componente, mas é fatal e fará com que a execução da tarefa de Fluxo de Dados seja interrompida. Mensagens de erro podem ter sido postadas antes dessa com mais informações sobre a falha. Informações: 0x40043008 em Fato001, SSIS.Pipeline: A fase Pós-execução está começando. Informações: 0x4004300B em Fato001, SSIS.Pipeline: "Inserir Destino" gravou 0 linhas. Informações: 0x40043009 em Fato001, SSIS.Pipeline: A fase de limpeza está começando. Falha na tarefa: Fato001 Aviso: 0x80019002 em CargaFatos: Código de Aviso SSIS DTS_W_MAXIMUMERRORCOUNTREACHED. O método Execution foi bem-sucedido, mas o número de erros aumentou (3) e alcançou o máximo permitido (1); resultando em falha. Isso ocorre quando o número de erros alcança o número especificado em MaximumErrorCount. Altere MaximumErrorCount ou corrija os erros. Pacote SSIS "D:\Cursos de ETL\DatawarehouseSucos\CargaDatawarehouse\CargaFatos.dtsx" concluído: Falha.

1 resposta

Olá Wildrimak!

Bom, primeiramente, "UNIDADE_VENDIDA" não é convertido automaticamente para "unidades_vendida" por conta do valor de texto ser diferente entre um e outro. Desde que você associe uma outra manualmente na hora de realizar a dimensão de alteração lenta (coluna de entrada - coluna de dimensão), isso não deve gerar nenhum problema.

A coluna DATA_FATO é utilizada para selecionar os dados dentro do comando SQL. Depois desse uso, ela não será mais necessária dentro do nosso banco de dados, pois já possuímos dimensões relacionadas ao tempo dentro do nosso DW. É por isso que ela é ignorada, não vamos mais precisar dela.

Sobre seu erro, temos a seguinte nomenclatura: “DTS_E_INDUCEDTRANSFORMFAILUREONERROR”

Isso significa que no seu projeto, existe conflito entre os tipos dos dados, logo algum dado não foi convertido corretamente. Como temos essa dica da Dim_Organizacional e de Cod_Filho, preciso que você verifique o seguinte:

Volte na criação da Dim_Organizacional, e verifique se a conversão de dados foi realizada corretamente. Em específico, verifique se Cod_Filho está marcado como “cadeia de caracteres unicode” e comprimento de 50.

Verifique também, se no projeto em que fizemos as tabelas do banco de dados, Cod_Filho está configurado para ser “nvarchar 50”.

Por favor, me avise se nenhuma dessas soluções te atender. Além disso, você pode conferir mais sobre esse tipo de erro no link abaixo:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/53b2260f-0ed4-465e-8513-f20b7f7533d1/error-0xc0209029-importing-table?forum=sqlintegrationservices