Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Erro Carga Dimensão Tempo após rodar a primeira vez

Ao rodar a transformação de carga da dimensão tempo pela segunda vez obtenho o seguinte erro:

2021/02/01 18:40:22 - Gravação da Dimensão Tempo.0 - Unable to get value 'Date' from database resultset, index 1
2021/02/01 18:40:22 - Gravação da Dimensão Tempo.0 - HOUR_OF_DAY: 0 -> 1

Eu só percebi isso nas aulas sobre a criação de jobs quando o professor roda essa transformação novamente a partir do job "JobCargaDimensaoParalelo". No caso dele não deu erro (talvez porque o BD dele estivesse vazio). Eu percebi que se eu apagar a tabela "dim_tempo" e rodar o job funciona. Porém, na segunda vez em diante já falha. Tem como evitar esse problema?

9 respostas

Oii Caroline, tudo bom? Espero que sim.

Então, você poderia compartilhar comigo todos processos da sua dimensão tempo para eu poder dar uma olhada? Pode ser algum processo que tenha feito diferente do instrutor. Você pode upar os prints aqui no imgur e enviar os links.

Fico no aguardo para te ajudar :)

Tudo tranquilo, Maria! E você?

Agradeço pela ajuda.

Upei as imagens no link: https://imgur.com/a/l3K1kLY. Se precisar de algo mais me avise.

Oi Carol, tô bem obrigada.

Analisei os prints com o meu projeto e achei duas divergências, mas eu não sei se isso influencia no erro que está te retornando.

  • A primeira é a tabela dim_tempo, o campo da data não está marcado como not null.

Imgur

  • A segunda é a etapa Exclui Colunas, está invertido a ordem para excluir.

Imgur

Como eu disse acima, eu não sei se isso afeta, mas vale a pena tentar. Se puder me mandar prints do JobCargaDimensaoParalelo para eu dar uma olhada também.

Me avise qualquer coisa, tá bom? :)

Oi, segui o passo-a-passo exatamente como o da aula e consegui rodar duas vezes seguidas numa boa.

Tive o mesmo problema que você.... tentei de tudo e não consegui resolver

Olá, Maria. Obrigada pelo retorno.

Fiz as mudanças que você sugeriu e ainda assim obtive o mesmo problema. Meu job está bem simples. Tirei 2 prints das partes relevantes da dimensão tempo: https://imgur.com/a/F72eeP8. Se precisar de algo mais me avise.

Carol,

Depois de intensas pesquisas, eu acredito que encontrei o erro.

Vi num fórum do Pentaho que pode ser um erro do horário de versão. O MySQL tenta converter a data com a calculadora que é usada ali na dimensão tempo e então, não consegue e lança uma exceção: HOUR_OF_DAY: 0 -> 1.

O que sugeriram como solução: Remover serverTimezone do URL de conexão JDBC.

Então, remova toda essa parte do Timezone de todas conexões e tente novamente.

Me avise qualquer coisa :)

solução!

Boa noite, Maria.

Remover a parte do timezone das conexões não resolveu, porém, me ajudou a achar uma solução.

Eu voltei na pasta do data-integration para olhar a versão do connector do mysql que estava usando e vi que era a "mysql-connector-java-8.0.23" que é a versão compatível com o mysql que já estava instalado em minha máquina antes. Resolvi fazer um teste e voltar à versão "mysql-connector-java-8.0.22" e para minha surpresa o erro retornado mudou. Ele pedia justamente para eu adicionar aquelas configurações de timezone que eu havia removido. Voltei então no jdbc.properties, adicionei novamente o "?useTimezone=true&serverTimezone=UTC" na url e consegui rodar a transformação sem erros.

Pode ser algum bug dessa versão 8.0.23 e seja consertado mais a frente, não sei. Mas fica aí a dica.

PS.: Com a versão que o professor usa também só funcionou dessa forma.

Muito obrigada pela ajuda!

Oi Carol,

Eu tinha lido mesmo, que poderia ser o Driver do MySQL ou até mesmo o JDK, mas queria testar outras coisas antes. Que bom que deu tudo certo.

Obrigada pela paciência ao tentar desvendar esse erro. Qualquer coisa estou sempre à disposição por aqui.

Bons estudos, Carol :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software