QuickSightで動的に変更可能な2重軸グラフを作りたい

やりたいことはタイトルのとおりです。同じように困ってる人のお役に立てれば。

### QuickSightとは
せっかくなので[Amazon Bedrock](https://aws.amazon.com/jp/bedrock/)の[Chat Playground](https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/chat-playground.html)から[Anthropic社のClaudeV２.1](https://aws.amazon.com/jp/about-aws/whats-new/2023/11/claude-2-1-foundation-model-anthropic-amazon-bedrock/)を使ってサマリを生成させてみました。

---

Amazon QuickSightは、クラウドネイティブのビジネスインテリジェンス(BI)サービスです。大規模なデータセットを高速に可視化し、ダッシュボードとして共有することができます。

主な特徴は以下の通りです。

- 大容量のデータをリアルタイムに分析し、結果を直感的なダッシュボードとして表示
- 機械学習を活用した予測など、先進的な分析機能を備えている
- AWSのマネージドサービスとして提供されており、インフラ構築不要で使用できる
- 柔軟な課金方式で利用料金を最適化できる
- 様々なデータソースや外部ツールと容易に接続が可能

QuickSightは、ビッグデータ分析やデータドリブンな意思決定に最適なBIツールとして、Fortune500を含む大手企業での導入実績が豊富です。コストパフォーマンスと拡張性にすぐれたサービスと評価されています。

このようにQuickSightは、データ分析を促進しビジネス洞察を加速する強力なソリューションを提供しています。

---

**※正確にはこちらを参照ください。**

https://aws.amazon.com/jp/quicksight/

<br>
さて、まずはサンプルデータを準備しましょう。
「九州の地域、販売数（5桁）、売上（8桁）、利益（7桁）、人件費（6桁）、光熱費（6桁）　の項目を持った1000件のテストデータをcsvで作成して」と生成系AIにお願いしてサクッと作成。

こんなデータが生成されました。
<img width="500" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/e42269c8-8ed5-7a1c-b046-2aaf1302e8a4.png">

---
### まずは固定の2重Y軸グラフを作ってみる

サンプルのcsvデータをQuickSight（以降は**QS**と略します）にアップロードしてデータセットを作成します。

QSの左のメニューからデータセットを選択し「新しいデータセット」をクリック
<img width="200" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/06c48018-6218-376f-9de8-81cfa820786a.png">
<br>
ファイルのアップロードをクリックして、ファイルを選択してアップします。
（自分が持っているデータをその場でアップロードして使えるのは便利）
<img width="600" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/17bc418a-5c46-2d40-92c3-1d6f13daa10a.png">
<br>
アップロードが完了するとデータの一部が表示されるので、「設定の編集とデータの準備」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/a6461eaa-fdbc-cf7d-32b5-3047283d1fb5.png)
<br>
この画面で別にアップロードしたデータとのJOINとかフィルタリングなどもできて便利
データは大丈夫そうなので右上の「発行して視覚化」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/f79a754c-358a-912e-ef4f-d51d1f918fe3.png)
<br>
そのまま左の「インタラクティブシート」を選択して「作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/9be8b368-77d2-82c0-e9ae-7b8a9829950a.png)
<br>
はい。データの生成からここまで10分もかかりません笑！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/cff61eaa-c882-da9c-612f-601af4c5171d.png)
<br>
ビジュアルのところから「折れ線グラフ」を選択します。
今回はX軸に「地域」
Y軸に相当する値2部分に「販売数」と「売上」の2つを選択しました。（2重軸なので）
販売数の右の点線をクリックすると小ウィンドウが表示されますので、そこでこの値をY軸の左を基準に表示するか、右を基準に表示するか選択をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/6feed5b5-92c6-3d0f-bfa0-64067a31a349.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/3ff604fb-15c1-7f3b-3c07-f98090caaead.png)
<br>
はい。2重Y軸グラフできました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/088fc738-fbc1-cb99-0c46-44f9772a1728.png)

### Y軸を動的に選択させたい！

今回地域はX軸に使っているので、残りの販売数、売上、利益、人件費、光熱費をY軸の左右で自由に選択させたい！

生成する中で大事なキーワードはこちら。
- [パラメーター](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/parameters-in-quicksight.html)
- [コントロール](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/parameters-controls.html)
- [計算フィールド](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/adding-a-calculated-field-analysis.html)
- [switch関数](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/switch-function.html)

<br>
まずはメニューから「パラメーター」を選択します。パラメーターの「追加」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/c3ad9e1d-8bbb-984a-4df7-4f9c2426e24c.png)
<br>
Y軸左を定義していきます。新しいパラメーターの名前を「PalamL」、静的デフォルト値を「販売数」として作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/cf716fa1-c1b5-91aa-7552-b2fcea42f360.png)

作成されるとポップアップが出てくるので「コントロール」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/3582d160-dfc3-33bb-7cd5-894f41ab1a85.png)

ここで項目を選択するドロップダウンメニュー（コントロール）を定義します。
名前をわかりやすく「Y軸左」、スタイルはドロップダウン、値にフィールドの項目名を入力します。
最後のデフォルト値が設定されている…にチェックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/9bef2a92-1d97-862e-1a1e-31936b664d50.png)


同様にY軸右も作成していきましょう！パラメーターの追加から〜
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/3faaeae2-d6cd-13a5-fbb3-14b5f99375d6.png)

コントロールを追加します。ここではY軸右。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/b06f2220-1d0a-d624-7aaa-fae844b92ea3.png)

そうそう、コントロールを追加する際のポップアップを閉じてしまった場合には「パラメーター」で作成したパラメーター名の右の点線メニューをクリックすると「コントロール追加」が出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/78ee27dc-1bf5-4ab8-8872-e6f13f6cc4f8.png)

次に、「計算フィールド」を作成します。QS画面の左上にあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/4c70d021-9c95-19df-825f-fda137b58f9d.png)

まずはY軸左の計算フィールドを追加します。
計算フィールドを使ってswitch関数でどの項目を表示させるかの分岐を定義します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/2c90d577-5a6a-f1e9-9655-0a3198b40614.png)

同様にしてY軸右の計算フィールドを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/e2eb8b4c-b75f-cf46-5e63-93700e09d59c.png)

※ここで重要なのは選択される各項目のデータ型が一致している事が重要です。これが一致していないと保存のときにエラーになります。

<br>
さてうまくいくと左側に今作成した計算フィールド「Y軸右」と「Y軸左」が追加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/59792591-0ae7-b537-3207-545ac6ce10fb.png)
<br>
一番最初の2重Y軸の手順で作成した計算フィールドを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/286012ed-23c0-351b-fdb0-3667fbfdaabf.png)

Y軸左は左側に表示、Y軸右は右側に表示するよう設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/58b33b86-3fdf-bfb2-a2d9-b9804bd63d67.png)

ということで完成しました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112854/82f50132-85e7-f339-5521-e07b020d5e11.png)

今回試しながらメモ代わりに記載したので細かく機能の説明はしていませんが、画面ショットで流れは理解頂けるかなと思います。
同じ悩みのユーザーのお役に立てれば幸いです。
最後に殴り書きでごめんなさい。