Perché la query SELECT COUNT in Amazon Athena restituisce un solo record anche se il file JSON di input ne contiene di più?

1 minuti di lettura
0

Quando eseguo SELECT COUNT (*) FROM TABLE, l'output è "1", ma il file di input contiene più record JSON. Ho utilizzato org.openx.data.jsonserde.JsonSerDe per creare la tabella.

Risoluzione

Quando i record non sono separati da un carattere di ritorno a capo (\n), la query SELECT COUNT (*) FROM TABLE restituisce "1".

Esempio:

{"ID":"1","MYTIMESTAMP":"2020-06-09 17:50:46.267","Name":"John"}{"ID":"2","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Joel"}{"ID":"3","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Patrick"}

Per risolvere questo problema, assicurati che i record siano delimitati da \n, come mostrato nell'esempio seguente:

{"ID":"1","MYTIMESTAMP":"2020-06-09 17:50:46.267","Name":"John"}

{"ID":"2","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Joel"}

{"ID":"3","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Patrick"}

In questo caso, SELECT COUNT (*) FROM TABLE restituisce "3".

Nota: il SerDE prevede che ogni documento JSON si trovi su una singola riga di testo senza caratteri di terminazione di riga che separano i campi del record. Per ulteriori informazioni, consulta Best practices for reading JSON data.


Informazioni correlate

SELECT

CREATE TABLE

Running SQL queries using Amazon Athena

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa