サーバレスSQL AWS

記事を全然書き慣れていないので、わかりにくい所があるかもしれないですがご了承ください。

###今回使用するAWSのサービス
S3
AWS Glue
AWS Athena


###AWS Glueとは
データエンジニア、抽出、変換、読み込み (ETL) デベロッパー、データアナリスト、データサイエンティストがデータを簡単に抽出、クリーンアップ、強化、正規化、読み込みできるようにするサーバーレスのデータ準備サービスです。

（引用:https://aws.amazon.com/jp/glue/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc）
→AWS Glue クローラとは
接続可能な、データベースなど各種データソースをクローリングしてメタ情報を自動で推定し、カタログに登録できる。

###AWS Athena
Amazon Athena はインタラクティブなクエリサービスで、Amazon S3 内のデータを標準 SQL を使用して簡単に分析できます。
(引用:https://aws.amazon.com/jp/athena/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc)

###ざっくり解説

まず、S3にデータをアップロード。

![スクリーンショット 2021-01-03 11.06.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/b5461936-288b-4d4d-ba21-3b8b77e88131.png)

inputフォルダを作成しておきます。
![スクリーンショット 2021-01-03 11.07.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/f0751740-f4ed-8e1b-a712-242ca9d4fb48.png)

AWS Glueに移動する。クローラを選択。
![スクリーンショット 2021-01-03 11.21.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/57c624dc-7a88-6167-9963-1e0671c3bd30.png)

クローラの追加を選択する。情報を追加していく。
![スクリーンショット 2021-01-03 11.22.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/4d7a2193-cbe5-c785-0c34-6ddc2ae0c564.png)
![スクリーンショット 2021-01-03 11.25.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/cee096b0-4241-06de-ebc3-0207da35192d.png)
![スクリーンショット 2021-01-03 11.25.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/6c4dd205-bd0b-bac6-1587-89aea69980ee.png)
![スクリーンショット 2021-01-03 11.26.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/f3ee8ee7-d6d2-36aa-aabe-09cdbe486d8b.png)
![スクリーンショット 2021-01-03 11.32.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/5ce70142-75d9-f2f9-5cf8-bea78a4f02df.png)
データベースを追加を選択し、作成する。


クローラが作成されるので、実行する。
![スクリーンショット 2021-01-03 11.33.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/5641808f-07ff-9b4d-dbc5-26036b55cc09.png)

ステータスがStoppingになるまで待ちます(数分程度)。
![スクリーンショット 2021-01-03 11.34.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/653c1e19-df39-c738-dfc1-df40c888f679.png)


実行が終わると、データベースのテーブルのところにテーブルができています。
![スクリーンショット 2021-01-03 11.35.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/3e7b41ac-2d7b-4e01-6715-99f63c7e9847.png)
![スクリーンショット 2021-01-03 11.36.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/54cd73b1-5f43-420f-7428-cd63a5adf14a.png)

準備ができたので、Athenaに移動します。
![スクリーンショット 2021-01-03 11.39.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/24bfebdc-6ff5-dd5d-d784-6130a8269e71.png)

テーブルのプレビューからクエリが自動生成されます。
![スクリーンショット 2021-01-03 11.45.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/b1b2a5db-8f98-bd28-2a10-2e4b29776bda.png)


ビューを作成して、利用頻度の高いクエリをシンプルにすることができます。
![スクリーンショット 2021-01-03 12.02.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/08436e92-4d31-21e8-6a1a-e0cc5e49d17c.png)
![スクリーンショット 2021-01-03 12.03.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/74a3f0f0-8fe5-eb6e-6d87-0a2d5cca6ddc.png)


CTAS(Create Table AS SELECT)で、新しいテーブルを作成することもできます。(SELECT句の結果に基づいて、新しいテーブルを作成する感じ)
![スクリーンショット 2021-01-03 12.31.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629294/9de76319-3035-f214-bd6a-e5b8d27f2bfe.png)

以上、Glueクローラを使ってS3にアップロードしたデータに対して、メタ情報を作成しAthenaからSQL分析をしました。

記事を全然書き慣れていないので、わかりにくい所があるかもしれないですがご了承ください。