Amazon QuickSight のセルフハンズオンキット日本語版その１のメモ

[JP Contents Hub](https://aws-samples.github.io/jp-contents-hub/#saas)のハンズオンを上から全部やっていきます。
基本的に手順を上から舐めているだけなので、実施した部分は副教材程度に思ってください。

**やってみたの部分の記載は画面が変わってたりする部分のや注意したほうがいい部分のメモで手順通りのところは特にメモに残していません。**

最初は[Amazon QuickSight のセルフハンズオンキット日本語版](https://aws.amazon.com/jp/blogs/news/amazon-quicksight-handson-202006/)からスタート。

### このハンズオンで学べること
内容としては、各種イベントなどで実施してきたQuickSightのハンズオンなので、QuickSightを試す事ができます。
提供されているハンズオンは4つで
- QuickSight Basicハンズオン
- QuickSight 販売管理ダッシュボード
- QuickSight 埋め込みハンズオン
- QuickSight 埋め込みハンズオン(SaaS向けマルチテナント機能)

です


### 利用する主要なサービス

- QuickSight
- Athena

### やってみた
QuickSight Basicハンズオン編 (更新 2022/1/7)がBlogによると[こちら](こちらのURL)からダウンロードが可能とのことです。
zipファイルがダウンロードされ、中にハンズオン用のセットが入っています。

内容物はこんな感じ

```
.
├── Assign.csv # ハンズオンで使用するデータセット
├── Patient-Info.csv　# ハンズオンで使用するデータセット
├── QuickSight-Intro.pdf #QuickSightそのものについてSAが紹介しているスライド
└── QuickSight-handson-2020-03-11.pdf # ハンズオンの手順
```

QuickSight-handson-2020-03-11.pdfの手順に従ってハンズオンを進めます。

1-4まで通しでやると結構時間がかかります。
1 + 4 をまずは実施して必要に応じて2と３を実施する方針でも良いかもしれません。

#### QUICKSIGHT にサインアップする
**バージニア北部リージョン** の指定があるのでリージョンには注意します。

- なんらか会社のアカウントなどで既にQUICKSIGHTを使っているとそっちに入りますので、もし既に他に使っている場合は先にログアウトしましょう。

- QuickSight account name は一意である必要があります

#### CSV ファイルをアップロードする

- S3とかではなく、QUICKSIGHT からアップロードする
- 画面右上の **新しい分析** を一度クリックして、 画面左にある**データセット**を クリックします。

![518afe33-ea0f-4b44-b703-69393debddf0-960x284r.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52141/ebb01c8c-8e35-ac51-5d4e-4ed620f14e5b.png)


- Regionで２つのCSVのデータを Inner join します。
    - Inner, left,right,full それぞれの説明があって操作できるのでSQL初めての人にJOINの概念を説明するときQuickSight使うと視覚的にデータがどう表示されるか示せるので結構良いかもしれない。

- P17の内容が終わったら準備完了なのでハンズオンに進む

####  ハンズオン 1

- X軸: Account Rep / Y軸: Revenue / グループ: Payor Segment
    - 担当者ごとの売上が、売上内の分類ごとに色分けされて表示されます

- グラフのタイトルをダブルクリックすると表示名を変更できます
    - レベニュー(ペイヤーセグメント別) とする

- || このマークは、グラフの右端にマウスを持ってくると出てきます

**ドーナツグラフの作成**

- 表示されたスライスの数を変更するには、ドーナツグラフの右上のペンのマークをクリックして、ビジュアルのフォーマットを開きます。

![a4876a58-8c53-4a4a-8e14-6f9494c0a01f-960x758r.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52141/4b3b44ba-e677-7436-7777-181cfa140740.png)

- 最終的にレベニューの値が $18.63Mから19に変わらなくても支障ありません

**ピボットテーブルとコンディショナルフォーマットの作成**

- Admit Date と Payor Segment をクリックして 行に追加
- Profit, Revenue, Cost を緑の値まで引っ張ってきて３つ追加する
- テーブルのAdmit Dateをクリックすると形式から日付のカスタム編集が可能になります。
    - カスタム編集は左にデータフォーマットとして表示されてくるので日付を開くといろいろ指定可能です

**クイックフィルタ機能による絞り込みの実現**

- 棒グラフの各人をクリックすると、その人のデータで他のグラフを描画してくれます。
- 再度全部見たい場合はもう一度選択している人の棒をクリックすると解除されます。

オプションの予測機能はENTERPRISE EDITION が必要なので割愛しました。

####  ハンズオン 2

- ハンズオン１が終わった状態から画面左上のQuickSightを押せばTop画面に戻れます
- 分析の作成は **分析で使用** に文言が変わってます。
- Categoryのトリルダウンレイヤを追加するにはCategoryをX軸の文字の部分に落とします

**コントロールの作成とフィルタ**
- 開始日のコントロールを作成
    - 名前: BeginDate
    - データタイプ: 日時
    - 時間詳細度: 日
    - デフォルトの日付: 2015- 01-01
- 左に作成された BeginDate があるのでVをクリックしてコントロールを追加
    - 表示名: 開始日
- 追加で終了日のコントロールを作成
    - 名前: EndDate
    - データタイプ: 日時
    - 時間詳細度: 日
    - デフォルトの日付: 2019-01-01
- 左に作成された EndDate があるのでVをクリックしてコントロールを追加
    - 表示名: 終了日

- 左の縦棒グラフを選択した状態でフィルターの追加を行います
    - 後ほどすべてのビジュアルに変更します

**計算フィールド1:シンプルな計算フィールド**

- 計算フィールドは作成ではなく画面上は **保存** に表示が変わっている
- 計算フィールド作成時にエラーが出る 場合は一度ブラウザでリロードして作成すれば成功する
- Admit Dateをクリックすれば集計を年単位に変更が可能

**ML インサイトによる異常値検出の設定**

- Admit Dateを選択するとデフォルトで日になっているので、時間に設定されたAdmit Date横のVをクリックし集計を月に変更する
- 上位の寄与要因は左の一番下にあります
- 選択が完了したら右上の *保存* をクリックします
- ナラティブのインサイトは縦・3つを押せば説明文の編集が出てきます

####  ハンズオン 4

- Athenaのクエリ結果を保存するS3バケットは先に作成しておきます
- マネジメントコンソールでAthenaに移動します
- 先に作成しておいたバケットを選択します
- データが格納されているバケットは、ハンズオン用のデータをAWSがどこかのアカウントで保持していて、バケットポリシーでどこのアカウントからも取れるようにしてくれているようなのでAthenaからSQLを叩けば取得ができます。（**自分のアカウントのS3にデータを置く必要はない**）
    - s3://ee-assets-prod-us-east-1/modules/aba5d66e8cd44378ba70a0427830efd5/v1/flightdata1/

```:sql
CREATE EXTERNAL TABLE flightdata1( flight_date date,
flight_number string,
origin_city string,
origin_state string, destination_city string, destination_state string, departure_delay decimal(22,6), arrival_delay decimal(22,6), cancelled decimal(22,6),
diverted decimal(22,6),
air_time decimal(22,6),
distance decimal(22,6), distance_group decimal(22,6), carrier_delay decimal(22,6), weather_delay decimal(22,6), security_delay decimal(22,6), late_aircraft_delay decimal(22,6), origin_airport_name string, cancellation_reason string, destination_airport_name string, carrier_name string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION 's3://ee-assets-prod-us-east-1/modules/aba5d66e8cd44378ba70a0427830efd5/v1/flightdata1';
```

最初のSQLは上記です

```
CREATE EXTERNAL TABLE flightdata2( flight_date date,
flight_number string,
origin_city string,
origin_state string, destination_city string, destination_state string, departure_delay decimal(22,6), arrival_delay decimal(22,6), cancelled decimal(22,6),
diverted decimal(22,6),
air_time decimal(22,6),
distance decimal(22,6), distance_group decimal(22,6), carrier_delay decimal(22,6), weather_delay decimal(22,6), security_delay decimal(22,6), late_aircraft_delay decimal(22,6), origin_airport_name string, cancellation_reason string, destination_airport_name string, carrier_name string)
PARTITIONED BY (year int, month int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION 's3://ee-assets-prod-us-east-1/modules/aba5d66e8cd44378ba70a0427830efd5/v1/flightdata2';
```

パーティション化されたSQLは上記です

-  msck repair tableについて
    -  https://docs.aws.amazon.com/ja_jp/athena/latest/ug/msck-repair-table.html

**QUICKSIGHT から ATHENA に接続する**

- QuickSight の管理は画面右上の人形のマークをクリックすると出てきます
- **セキュリティとアクセス権限**をクリックして**QuickSight の AWS のサービスへのアクセス**の**Manage**を押すことでAthenaを追加できます
    - 手順の最初でAthenaへの接続を外していたのでここで追加しています

- 自分のクエリ結果が保管されたS3を追加できたら、**S3バケットを選択する**からAWS 全体でアクセスできる S3 バケットでee-assets-prod-us-east-1バケットを追加します

- Athenaでは**データクエリを直接実行**を選択します
    - 今回はスパイス経由ではなく直接実行するのがハンズオンの趣旨のため

**計算フィールド(CALCULATED FIELD)の追加**

ハンズオン１から直接飛んだ方へ**計算フィールドを追加**は画面左の＋追加を押すと出てきます。

同様にビジュアルも画面左の＋追加を押すと出てきます。

- フィルターは**フィルタの追加**で追加します
- Origin_stateのフィルタは一つのビジュアル（円グラフ）です



### 感想

- ハンズオン２,ハンズオン3は実際にQSを使って何らかのダッシュボードを作る際に、関数を使った集計がしたい。と思ったタイミングで実施するのが良いと思います。

- QSで使用する関数はドキュメントを確認しなが実際に必要になったらこねくり回すのが良いと思う

カテゴリ別関数
https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/functions-by-category.html