Atualmente, estou trabalhando em um projeto em que preciso importar dados de várias fontes e usá-los para criar um sistema de relatórios.
Uma das fontes é uma tabela Hive que tem uma coluna de registro de data e hora ( VARCHAR
) formatada assim:
'Jan 18 2019 1:54PM'
Meu objetivo é, usando SQL, converter esta coluna para algo assim (formato de 24 horas):
'YYYY-MM-DD HH:Mi:00'
Preciso trabalhar com o IBM Datastage para ler dados do Hive e gravar dados em um banco de dados Oracle. O banco de dados Oracle é usado para atualizar uma instância tabular do SQL Server, onde criarei meus relatórios usando o PowerBI.
Como eu disse, sou obrigado a usar um software específico, de acordo com a política do cliente. Posso usar o SQuirreL SQL para verificar as tabelas de origem, mas até agora não consegui encontrar uma maneira de atingir meu objetivo.
Algum conselho?
Acontece que eu precisava me aprofundar mais nas funções do Hive.
Aqui está a solução para o meu problema, usando este código SQL consigo fazer a conversão enquanto extraio a coluna:
Resultado:
Por favor tente:
Concordo com Wernfried que você não deve armazenar seus dados/carimbos de data/hora como uma string, mas como sua fonte é uma tabela do Hive, talvez outra pessoa tenha tomado essa decisão, pelo menos tente armazená-la como DATA (que na verdade é um carimbo de data/hora) no ORACLE.
Você pode fazer isso em SQL, como descrito acima, ou usar o DataStage como o T do seu ETL, para o qual seu cliente o comprou, como eu imagino.
No estágio do transformador
StringToTimestamp(SuaColunaDeEntrada,'%mmm %dd %aaaa %H:%nn%aa')
Saída disto em um estágio Peek
STRING_COL: 18 de janeiro de 2019, 13h54 TS_COL: 18/01/2019, 13h54
A função StringToTimestamp (e os formatos de data e hora usados por ela) estão bem documentados no DataStage.