入力 JSON ファイルに複数のレコードが含まれているにもかかわらず、Amazon Athena の SELECT COUNT クエリが 1 つのレコードのみを返す
最終更新日: 2020 年 10 月 7 日
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」を返します。