9 Replies Latest reply on May 12, 2017 6:26 AM by Rafael Marques

    Erro de hora utilizando extração banco Oracle

    Rafael Marques

      Boa tarde,

       

      Pessoal estou precisando de uma ajuda.

      Estamos auxiliando um novo cliente que ainda está testando o Tableau, ele utiliza banco Oracle e para não ficar preso a conexão do banco queria fazer extração dos dados.

       

      Quando tentamos realizar a extração dos dados é apresentado um erro dizendo que a hora deveria estar entre 0 e 23, após esse erro convertemos as ligações das tabelas para o Sql que o Tableau Desktop gera e uma pessoa que administra o banco deles fez uma edição no Sql, foi editado conforme o arquivo que está anexo. Mas agora o erro é apresentado informando que os minutos devem estar entre 0 e 59. A pessoa que administra o banco deles informou não saber como poderia nos auxiliar. Existem alguns campos somente de data e outros data/hora.

       

      2017-05-05 15_54_57-Doc1.docx (Salvo pela última vez pelo usuário) - Word.png

        • 1. Re: Erro de hora utilizando extração banco Oracle
          Thiago Cunha

          Cara,

           

          Você precisa simplificar as coisas. Trabalhe com os dados como eles vem do banco. Se os dados no banco estiverem certinhos, tipados corretamente, você não terá problema. Se mesmo assim, falarem que não podem mexer nos campos e tal, considere esses campos como strings e depois crie um campo calculado para tirar o que você precisa.

           

          ps.: Eu recomendo fortemente a não alterar o tipo de dado no tableau, o ideal é trabalhar como eles vem da base. Quando você altera o tipo de dado no tableau ele fica muito vulnerável à falha, se o sql não conseguir converter o tipo dará erro em vez de dar null como em algumas ferramentas....

          • 2. Re: Erro de hora utilizando extração banco Oracle
            Luciano Vasconcelos

            Traga os campos puros por hora e trate no Tableau.

            Dessa forma você pelo menos vai conseguir ver os dados.

             

            Claramente o seu TRUNC está interpretando outro campo como hora. Meu palpite seria dias ou minutos.

             

            Tira isso

            (CASE WHEN (NOT TRUNC(CAST(TO_TIMESTAMP(TO_NCHAR("AACDRB1"."ARBPERREF"), 'HH24MISS') AS DATE)) IS NULL) THEN TRUNC(CAST(TO_TIMESTAMP(TO_NCHAR("AACDRB1"."ARBPERREF"), 'HH24MISS') AS DATE)) WHEN (NOT TRUNC(CAST(TO_TIMESTAMP(TO_NCHAR("AACDRB1"."ARBPERREF"), 'MonthRR') AS DATE)) IS NULL) THEN TRUNC(CAST(TO_TIMESTAMP(TO_NCHAR("AACDRB1"."ARBPERREF"), 'MonthRR') AS DATE)) WHEN (NOT TRUNC(CAST(TO_TIMESTAMP(TO_NCHAR("AACDRB1"."ARBPERREF"), 'MMRR') AS DATE)) IS NULL) THEN TRUNC(CAST(TO_TIMESTAMP(TO_NCHAR("AACDRB1"."ARBPERREF"), 'MMRR') AS DATE)) WHEN (NOT TRUNC(CAST(TO_TIMESTAMP(TO_NCHAR("AACDRB1"."ARBPERREF"), 'DDRRMonthHH24') AS DATE)) IS NULL) THEN TRUNC(CAST(TO_TIMESTAMP(TO_NCHAR("AACDRB1"."ARBPERREF"), 'DDRRMonthHH24') AS DATE)) WHEN (NOT TRUNC(CAST(TO_NCHAR("AACDRB1"."ARBPERREF") AS DATE)) IS NULL) THEN TRUNC(CAST(TO_NCHAR("AACDRB1"."ARBPERREF") AS DATE)) ELSE NULL END) AS "ARBPERREF",

             

            e traz o campo AACDRB1"."ARBPERREF

            • 3. Re: Erro de hora utilizando extração banco Oracle
              Rafael Marques

              Thiago Cunha

               

              Primeiramente utilizamos os campos conforme eles veem do banco, data/hora, o Tableau já reconheceu automaticamente. Mas sempre ao tentar realizar a extração ele apresenta o erro.

               

              Depois disso alterei todos os campos onde contia data/hora para somente data, mesmo assim não resolveu, pois acho que ao realizar a extração o Tableau vai buscar no banco como data/hora. Somente apos os erros é que fomos utilizar o sql personalizado, mas ainda sem sucesso.

              • 4. Re: Erro de hora utilizando extração banco Oracle
                Rafael Marques

                LUCIANO VASCONCELOS

                 

                Utilizando as ligações das tabelas sem o sql personalizado conseguimos ver os dados e construir as planilhas ou gráficos. O problema ocorre ao tentar realizar a extração dos dados. Como tentamos mudar os campos de data/hora para somente data, mas ao realizar a extração acredito que o Tableau desconsidera a transformação feita dentro dele, ocorre o mesmo erro.

                 

                A edição do sql, a parte que você falou foi uma pessoa do cliente que fez. No próximo contato com eles vou falar sobre essa parte.

                • 5. Re: Erro de hora utilizando extração banco Oracle
                  Luciano Vasconcelos

                  Transforma dentro do Tableau.

                   

                  Em 08/05/2017 13:11, Rafael Marques escreveu:

                   

                  TABLEAU COMMUNITY

                   

                  VOCÊ FOI MENCIONADO

                   

                  por Rafael Marques  em Re: Erro de hora utilizando extração banco Oracle em Tableau Community - Visualize a referência de Rafael Marques a você

                   

                  • 6. Re: Erro de hora utilizando extração banco Oracle
                    Thiago Cunha

                    Diante de tudo que você disse, vou te falar uma treta meio radical.....

                     

                    Faça o seguinte, puxe novamente os dados crus como eles vêm da base. Como você mexeram, pode ser até que vocês já tenham solucionado o problema e não perceberam (já passei por isso). Então puxe os dados crus, não altere nenhum tipo dentro do Tableau e teste a extração novamente....

                     

                    Se mesmo assim ele ainda der alguma erro, é provável que ele mostrará a consulta com erro, então você poderá ver que campo ele está tentando converter e dando erro.... No pior cenário, pegue esse campo que deu erro altere o tipo dele para "STRING", seja ele o campo que for.....

                     

                    No pior cenário altere o tipo de campo problemático para string e dentro do Tableau faça um campo calculado convertendo-o no que você quiser.....Quero ver saporra dar erro depois dessa... kkkkkkkkkkkkkkkk

                     

                     

                     

                    ps.: agora que lembrei (mas não imagino que tenha relação com o problema), o tableau tem um limite de precisão quando se trabalha com data/hora, não imagino que isso seja o problema, a menos que ele esteja truncando para esse limite e dando erro nisso.....

                     

                    ps2.: depois do primeiro "ps.:" pensei uma coisa....  perceba se seus campos de data/hora não contenham string em algum registro..... bastaria um "string" em um único registro para travar isso aí..... toda a extensão do domínio de seu campo tem que estar coerente com o tipo que você espera, caso contrário vai dar pau sempre...... a menos que trate-o como string......

                     

                    abraço.

                    • 7. Re: Erro de hora utilizando extração banco Oracle
                      Rafael Marques

                      Conseguimos "resolver", o cliente passou a utilizar o Tableau conectado ao banco de produção, antes estava utilizando o de testes. A extração funcionou normalmente ao conectar no banco sem alterar nada ou puxar previamente algum campo.

                       

                      Utilizamos o sqldeveloper para acesso ao banco e conseguir ver quais dados estavam lá, assim sem utilizar o Tableau. Não percebemos qual seria o problema. Mas importante que agora ele conseguiu fazer a extração. O problema estava no banco de teste, só não conseguimos descobrir qual era.

                       

                      Obrigado a todos

                      • 8. Re: Erro de hora utilizando extração banco Oracle
                        Thiago Cunha

                        Parabéns!

                         

                        Conte conosco.

                         

                        Um abraço.