Quando eseguo una query su una colonna di dati TIMESTAMP nella mia tabella Amazon Athena, ottengo risultati vuoti o la query ha esito negativo. I dati esistono nel file di input.
Breve descrizione
I dati TIMESTAMP potrebbero essere nel formato errato. Athena richiede il formato Java TIMESTAMP:
YYYY-MM-DD HH:MM:SS.fffffffff
Per modificare i dati TIMESTAMP con il formato corretto:
- Definisci la colonna come STRING.
- Usa le funzioni di data e ora di Presto per leggere la colonna come DATE o TIMESTAMP nella tua query.
Risoluzione
Definisci la colonna come STRING
Esegui un comando simile al seguente:
CREATE EXTERNAL TABLE 'test' ('ts' STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
LOCATION 's3://doc-example-bucket/path-to-data/'
Usa le funzioni di data e ora di Presto per leggere la colonna come DATE o TIMESTAMP nella tua query
Se i dati di input sono nel seguente formato:
20200921T015005
20200923T095605
utilizza la funzione date\ _parse come mostrato nell'esempio seguente:
SELECT date_parse(ts,'%Y%m%dT%h%i%s') FROM timestamptestcsv3
**Nota:**il formato nella funzione date_parse(string,format) deve essere il formato TIMESTAMP utilizzato nei dati.
Se i dati di input sono nel formato ISO 8601, come di seguito:
2020-11-14T02:34:48Z
Usa la funzione from_iso8601_timestamp() per leggere il campo ts come TIMESTAMP. Esempio:
SELECT from_iso8601_timestamp(ts) FROM timestamptestcsv3
Informazioni correlate
Tipi di dati in Amazon Athena