Edited at

S3に保存した大量のデータをAthenaで触ってみた


やったこと

この記事で作った電力予測システムをしばらく触っていなかったのでどれくらい学習データがたまったのかなぁ...とふと思いせっかくだしAthenaで見てみよう!ということでAthenaを触ってみました。


ファイルの構成

現在以下のような構成で学習データは保存されています

BUCKET_NAME

└ electric-predict
└ train_data
└ train_data.csv


テーブルを作成する

コンソールのデザインが変わっている可能性があるので参考までに

(なぜか日本語のコンソールが最初でなくて一旦英語設定にして日本語設定に戻したら日本語で表示されました...)

athena_dashboard_make_database.png

Athenaのダッシュボードを開いて左にあるテーブルの作成を選択します

athena_from_s3.png

上の画像のような選択肢が出てきます。今回はS3にためているデータを使うのでfrom S3 bucket dataを選択

athena_name_and_place.png

必要事項を記入します

athena_csv.png

今回はcsvを使用しているのでcsvにチェックをつけます

athena_retsu.png

今回はcsvのヘッダにあるMONTHを列名として登録します。

パーティションの追加は今回必要ないのでこれでテーブルを作成できます。

make_table_query.png

こんな感じでクエリを作成してくれます。

このクエリを実行したらテーブルが作成されます。


件数を数えてみる

コンソール上でAthenaを使おうと思ったら基本的にコンソール上にあるクエリエディタにクエリを書いて投げるだけでいいみたいです。

まずは件数を数えてみました

select count(*) from sampledb.hoge;

上記のクエリをクエリエディタに入力して実行すると...

athena_record_val.png

わずか約1.6秒でレスポンスが!!!

どうやら16273件データを蓄積できていたようです。

お恥ずかしいことに初期の件数を覚えていないのですが...

順調に蓄積できていそう...

何故かファイルが残っていた2018年5月1日の学習ファイルには14760件のデータがあったので無事にシステムは動いている。と信じている...

クエリの書き方に関しては大学時代に講義で習った気がするけど殆ど覚えていないのでAWSのドキュメントを調べて書いてみました。

select count(*) from sampledb.hoge where MONTH='1';

ためしに1月のデータは何件あるか調べてみました。

athena_jan_count.png

なるほど...

これも1.3秒ほどで出力されたしすごいな...

クエリの書き方を勉強するともっと便利に使えそう...


まとめ

会社の先輩に教えてもらって使ってみたのですが初期設定がすごく簡単だしレスポンス早いし便利だし、

dynamoDBしか触ったことのないぺーぺーからしたらクエリをちょちょっと書いて件数が2秒弱で出てきた瞬間感動しましたwww

データベースの設計とかクエリの書き方とかに興味をもちました。

(このあとDQLの存在も教えていただき更に感動したのはまた別の話...)