Quando eu consulto uma coluna de dados TIMESTAMP na minha tabela do Amazon Athena, obtenho resultados vazios ou a consulta falha. Os dados existem no arquivo de entrada.
Breve descrição
Os dados TIMESTAMP podem estar no formato errado. O Athena requer o formato TIMESTAMP Java:
YYYY-MM-DD HH:MM:SS.fffffffff
Para alterar os dados do TIMESTAMP para o formato correto:
- Defina a coluna como STRING.
- Use as funções de data e hora do Presto para ler a coluna como DATE ou TIMESTAMP em sua consulta.
Resolução
Defina a coluna como STRING
Execute um comando semelhante ao seguinte:
CREATE EXTERNAL TABLE 'test' ('ts' STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
LOCATION 's3://doc-example-bucket/path-to-data/'
Use as funções de data e hora do Presto para ler a coluna como DATE ou TIMESTAMP em sua consulta
Se seus dados de entrada estiverem no seguinte formato:
20200921T015005
20200923T095605
Então use a função date_parse, conforme mostrado no exemplo a seguir:
SELECT date_parse(ts,'%Y%m%dT%h%i%s') FROM timestamptestcsv3
Observação: o formato na função date_parse(string,format) deve ser o formato TIMESTAMP usado em seus dados.
Se seus dados de entrada estiverem no formato ISO 8601, conforme mostrado a seguir:
2020-11-14T02:34:48Z
Então use a função from_iso8601_timestamp() para ler o campo ts como TIMESTAMP. Exemplo:
SELECT from_iso8601_timestamp(ts) FROM timestamptestcsv3
Informações relacionadas
Tipos de dados no Amazon Athena