JSON ファイルに複数のレコードがあるにもかかわらず、Amazon Athena の SELECT COUNT クエリがレコードを 1 件しか返さないのはなぜですか?

所要時間1分
0

SELECT COUNT(*) FROM TABLE を実行すると出力が「1」になりますが、入力ファイルには複数の JSON レコードがあります。テーブルの作成には org.openx.data.jsonserde.JsonSerDe を使用しました。

解決方法

レコードが改行文字 (\n) で区切られていない場合、SELECT COUNT(*) FROM TABLE クエリは「1」を返します。

例:

{"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"}

この問題を修正するには、次の例に示すように、レコードが \n で区切られていることを確認します。

{"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"}

この場合、SELECT COUNT(*) FROM TABLE は「3」を返します。

注: SerDE は、各 JSON ドキュメントが、レコード内のフィールドを区切る行終端文字のない単一行のテキストであることを想定しています。詳細については、「JSON データ読み取りのベストプラクティス」を参照してください。


関連情報

SELECT

CREATE TABLE

Amazon Athena を使用した SQL クエリの実行

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ