S3に格納したCSVファイルをQuickSightで可視化する方法1

## 概要

AWSのQuickSightでS3に格納したCSVファイルを可視化する方法をまとめていきます。
すでに調べればいろいろと出てくるかと思いますが、とりあえず自分で実施した内容をまとめてみました。
[2021年7月のJADERのデータ](https://www.pmda.go.jp/safety/info-services/drugs/adr-info/suspected-adr/0003.html)から被疑薬、相互作用の医薬品について一般名と有害事象の関係を事前に計算したファイルを使用しています。

## S3バケットの作成

* CSVファイルを格納するS3バケットを作成します。
* ファイルを格納するフォルダも作成してその中にファイルを格納します。
    * フォルダを作成しないと後述のAthenaのところでクエリに失敗しました。
* Athenaの結果を格納するバケットも作成します。

## AWS Glue
* AthenaでS3上のファイルにクエリを実行する場合、その情報をカタログに登録する必要があります。そのためまずはGlueを使ってカタログを作成します。
    * テーブルを一から作成することも可能ですが今回はクローラーを使います。
* コンソールからAWS Glueを開いてクローラーの追加を行います。
![glue1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/c1c9e55b-2fc5-44ac-19e8-c503a912f01e.png)
* 名前は任意に設定します。
![glue2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/4d1284ce-579e-2e1c-7d83-8b0d2bc6f77e.png)
* 次の画面ではそのまま次へを押下します。
![glue3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/881237b4-b438-ddc4-aa98-bb5f3f2d3e25.png)

* 読み込ませたいCSVファイルが入っているパスを選択します。
    * フォルダまで選択します。前述したとおりここでフォルダの中にファイルを入れていないと後述のAthenaのところでエラーになります。
![glue4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/af83e215-e87a-4888-1832-9746cbcc4001.png)
![glue5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/7d1975d3-2640-797a-386f-d56a1331ffd3.png)

* 別のデータストア追加の部分はいいえのまま次へ
![glue6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/bc88622f-1f00-8acf-baba-e447bdcd809f.png)

* ロールの選択では作成をします。
    * 一度作った後既存のロールを使いたくなるかもしれませんが、アクセスするバケットの権限がないとエラーになるので都度作るのがよさそうです。
![glue7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/4b6ea05a-88cd-2c8b-3680-d63765b98e7b.png)

* クローラのスケジュールはオンデマンドで実行にします。
    * 日次など定期的に動かしたいときは状況に合わせて設定します。
![glue8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/97967089-d85e-bee0-0a1f-00d32f86eb6a.png)
* 出力先を指定するところでデータベースの追加を押下して任意の名前を設定します。
![glue9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/88fbf93a-7697-b8a4-c2a4-d17acd0f2f6a.png)

* 最終的には以下のようになります。
![glue10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/2d62c329-0fdf-c3d7-109c-965599d8954f.png)
![glue11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/66d63fbe-b7cb-b1c5-d3b9-1a8c16e127c8.png)

* 作成したクローラを選択してクローラの実行を押下すれば以下のように画面が進みデータを取得します。
    * 成功すると追加テーブルに追加された件数が表示されます。
    * 失敗した場合はCloudWatchLogsにログが出力されるのでそちらを確認します。
    * またCloudTrailにも情報は出るので何かあったらこの弐つを見ましょう。
![glue12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/e4d23ec6-182c-69c0-2673-128fc8a49206.png)
![glue13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/8cbf2f44-ebde-8a1c-7b9e-5eb244ab0bbf.png)
![glue14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/9dcc4f56-0bad-d888-29c4-35e4670f9368.png)

* データの型を変更したいときはスキーマの編集を押下して型を変更することができます。
![glue15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/410b08ee-2568-13f7-4956-59e7933e315e.png)

## Athena
* ワークのｸﾞﾙｰﾌﾟの作成を行います。
![athena1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/a518188e-7103-1ed1-7500-b6dd83539e63.png)
![athena2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/05c2e399-049a-a1b4-715d-9e4e0ca12d7c.png)
* Athena engineはversion2を選択します。
![athena3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/0a2314a8-a523-71f1-9acb-6fb701fb6d83.png)
* 作成すると以下のようにワークグループができるのワークグループを切り替えるボタンを押下します。
![athena4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/f675a7d5-468a-f2d7-127a-0e8d1c1abec5.png)
* クエリエディタを押下しデータソースはAwsDataCatalog データベースはGlueのところで作成したものを選択します。
    * クローラで読み込んだテーブルが出ることを確認します。
![athena_data1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/c472a838-9c19-cecb-e83b-a97d03ebd393.png)

* クエリのところにはSQLを書けるので抽出したい内容に合わせます。
    * 今回は１ファイルだけですが、DynamoDBの内容と結合したり、ほかのファイルと結合するなどRDBのようにjoinなどができます。
    * クエリ実行を押下すると以下のように結果がでます。
![athena_data2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/02f3e5fb-1c17-c1d6-f429-11ade8a16720.png)


## QuickSight
* QuickSightで取り込むと以下のように可視化することができます。
    * 今回は棒グラフですが表や円グラフなど用途に応じていろいろ選択できます。
    * QuickSightの設定は後日記載予定
![quicksight7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/86cd0173-0f2d-9bd5-cae8-6d96227c57cb.png)