Por que TIMESTAMP dá um resultado vazio quando eu consulto uma tabela no Amazon Athena?

2 minuto de leitura
0

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:

  1. Defina a coluna como STRING.
  2. 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

AWS OFICIAL
AWS OFICIALAtualizada há um ano