Cuando consulto una columna de datos de TIMESTAMP en mi tabla de Amazon Athena, aparecen resultados vacíos o la consulta falla. Los datos existen en el archivo de entrada.
Descripción breve
Es posible que los datos TIMESTAMP tengan un formato incorrecto. Athena requiere el formato TIMESTAMP de Java:
YYYY-MM-DD HH:MM:SS.fffffffff
Para cambiar los datos TIMESTAMP al formato correcto:
- Defina la columna como STRING.
- Use las funciones de fecha y hora de Presto para leer la columna como DATE o TIMESTAMP en su consulta.
Resolución
Defina la columna como STRING
Ejecute un comando similar al siguiente:
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 las funciones de fecha y hora de Presto para leer la columna como DATE o TIMESTAMP en su consulta
Si los datos de entrada tienen el siguiente formato:
20200921T015005
20200923T095605
A continuación, utilice la función date_parse como se muestra en el siguiente ejemplo:
SELECT date_parse(ts,'%Y%m%dT%h%i%s') FROM timestamptestcsv3
**Nota:**El formato de la función date_parse(string,format) debe ser el formato TIMESTAMP que se utiliza en los datos.
Si los datos de entrada están en formato ISO 8601, como se muestra a continuación:
2020-11-14T02:34:48Z
A continuación, utilice la función from_iso8601_timestamp() para leer el campo ts como TIMESTAMP. Ejemplo:
SELECT from_iso8601_timestamp(ts) FROM timestamptestcsv3
Información relacionada
Tipos de datos en Amazon Athena