2018, 2020年のQuickSight BlackBeltをまとめる

# はじめに
2018年に発表されたQuickSightのBlackBeltと2020年に発表されたアップデート機能の内容をまとめました。一部公式ドキュメントなどから2023年時点での情報を追加しています。
内容の順番や表現を変えている部分もございます。

**2018年**

https://d1.awsstatic.com/webinars/jp/pdf/services/20180228_AWS-BlackBelt_QuickSight_v2.pdf

**2020年**

https://pages.awscloud.com/rs/112-TZM-766/images/20200204_AWS_BlackBelt_QuickSight_Update.pdf

# QuickSightの役割

大規模データの分析基盤の可視化を担当するサービス
- 収集
- 保存
- 分析
- **可視化** ←ここを担当

# QuickSightの特徴
- すぐに始められる
- BIサーバの運用管理が不要
    下記のようにAWSの運用範囲が広く、ユーザーは分析に集中できる。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703223/5deeb043-44dc-447c-52a8-e71910bb9273.png)

- 多様なデータソースと繋がる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703223/79c384d8-5b70-1ea5-2c87-6d06693f3632.png)
- 低コスト、無料利用枠あり

## ユースケース
- AWS上のRDS/RedshiftやS3にデータを蓄積している
- 分析をすぐに、ローリスクで開始したい
- BIサーバを運用する人材が居ないが分析はしたい
- どこからでもアクセスできるBI環境が欲しい





# 利用イメージ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703223/fe7011b4-582e-065f-0e0a-0956413a2450.png)

下記の3種類のアクターが存在。
- QuickSight管理者
    - データソース定義
    - 分析用データセットを準備
- QuickSightユーザ（分析）
    - データソースを分析
- QuickSightユーザ（閲覧）
    - レポートを閲覧


# データソースとの接続
- QuickSightからデータソースにアクセスする
- データソースにはパブリックなアクセスが基本だったが、現在はプライベートなアクセス方法も充実している様子

https://aws.amazon.com/jp/blogs/news/amazon-quicksight-private-vpc-access/

https://dev.classmethod.jp/articles/aurora-quicksight/

https://repost.aws/ja/knowledge-center/quicksight-redshift-private-connection

- 他リージョンやオンプレのデータソースにもアクセス可能
    - 対応リージョン（[こちら](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/regions.html)から最新情報を確認できる）
        - 米国東部 (オハイオ) (us-east-2)
        - 米国東部 (バージニア北部) (us-east-1)
        - 米国西部 (オレゴン) (us-west-2)
        - アジアパシフィック (ムンバイ) (ap-south-1)
        - アジアパシフィック (ソウル) (ap-northeast-2)
        - アジアパシフィック (シンガポール) (ap-southeast-1)
        - アジアパシフィック (シドニー) (ap-southeast-2)
        - アジアパシフィック (東京) (ap-northeast-1)
        - カナダ (中部) (ca-central-1)
        - ヨーロッパ (フランクフルト) (eu-central-1)
        - 欧州 (アイルランド) (eu-west-1)
        - ヨーロッパ (ロンドン) (eu-west-2)
        - 欧州 (パリ) (eu-west-3)
        - 欧州 (ストックホルム) (eu-north-1)
        - 南米 (サンパウロ) (sa-east-1)
        - AWS GovCloud (米国西部) (gov-west-1)


# SPICE

- インメモリ処理に最適化されたDB
- フルマネージド
- カラムナ
- データソースのデータをSPICEに保存し高速処理が可能
    - S3上のファイルや、PC上のファイルはSPICEに取り込むことで分析が可能になる
    - RDB（RDS)、Athena、RedshiftのデータはSPICE無しで直接SQLを発行してアクセス、もしくはSPICEに一部取り込むかを選択できる
    - 自動ディスカバリ機能により自動でデータソースを追加できる
        - リージョン内のRDS/Redshiftは自動的にインスタンスが検索され、ホスト名やDB名、ポート番号は入力不要
        - S3やRDS、Redshiftの読み取りアクセスをQuickSightに付与する事で自動ディスカバリーやS3連携が可能になる
        - ホスト名、ポート番号、ID、パスワード等を指定して手動で接続する事も可能
    - SPICEへのデータ取り込みをスケジュール実行できる
        - 繰り返しの最小単位は一日置き
    - 全データを読み直す（差分更新ではない）
- QuickSightStandard Editionでは、１ユーザあたり10GBのSPICE用領域が利用可能
    - SPICE領域は追加で購入可能
    - 不要になった分を返却も可能
    - 購入したリージョンで使用可能
    - 総量がユーザ全員で共有される


# 分析手順
- データソースを準備
- 抽出してデータセット作成
    - アップロードファイル、S3 → SPICEに取り込み
    - RDB → SPICEを利用するか選べる 
- 加工
    - 列名のリネーム
    - 不要な列の削除
    - 計算フィールド(Calculated field)の追加
        - 使える関数は[こちら](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/calculated-field-reference.html
)を参照
    - ジョイン
    - 型の変換
    - フィルタ条件の追加
    - カスタムクエリの登録
- 分析
    - ビジュアルタイプ
        - 棒グラフ（水平・垂直）
        - 積み上げ棒グラフ（水平・垂直）
        - 100%積み上げ棒グラフ（水平・垂直）
        - 折れ線グラフ
        - エリアラインチャート（面グラフ）
        - ピボットテーブル
        - フラットテーブル
        - 散布図
        - ツリーマップ
        - 円グラフ
        - ヒートマップ
        - KPI
        - コンボチャート
        - 地理空間
        - ゲージ
        - ドーナツ
        - ワードクラウド
    - オートグラフで自動選択も可能
    - カスタマイズも可能
        - 複数のビジュアルタイプを組み合わせる
        - 色、配置、アグリゲーションなどのカスタマイズ
        - フィルタで任意の値をグラフから排除できる
        - 軸の階層を定義し、ドリルダウン分析可能
    - ストーリー
        - 分析結果をキャプチャして保存できる
    - ダッシュボードの共有
        - 閲覧のみの共有
            - フィルタによる絞り込み以外の操作ができない
# ユーザ管理
- 最初にAdminユーザを作成
- Adminユーザがユーザを追加
    - IAMユーザかメールアドレスを指定
    - ユーザ指定で課金が発生
- 追加したユーザ間でストーリーやダッシュボードを共有できる
- モバイルからでもアクセス可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703223/3696d7c6-437b-06c9-150c-8389f6cb1ef8.png)
- iOS, Androidアプリもある
    - ダッシュボードの閲覧、フィルタ変更、ドリルダウン等が可能
    - フェデレーションログインに対応
    - Face ID等の生体認証にも対応可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703223/cc975b5d-48c3-70b2-4dfb-f309b8d2e68f.png)

# エディションと費用
- Standard Edition
    - 標準的なBI機能を全て提供される
- Enterprise Edition
    - 運用のための機能が追加されるイメージ
        - データ暗号化(Encryption at Rest)
        - Active Directory との統合
            - Managed Microsoft ADやAD Connectorを通して既存のADにも接続可能
        - 行レベルのセキュリティ(RLS) 
        - プライベートVPC接続プレビュー

# データソース側のセキュリティグループ

QuickSightサービスのIPアドレスレンジが公開されているので、そのIPアドレスからのみSQLアクセスを許可するようにセキュリティグループを設定する

https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/regions.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703223/e2d4a3b1-34df-31c1-2d7a-0f69664fcc9c.png)


# レポート
- ダイナミックレポート
    - 常にデータソースの最新状態を反映
    - レポートの閲覧や変更をするたびにデータソースにアクセス（SQLクエリ）が発生
- 静的なレポートの作成方法
    - RDBで静的なデータマートを作成
    - SPICEに取り込む
        - RDBから表の一部をデータセットとして取り込む
        - CSVやEXCELデータを取り込む
        - データソースから負荷をオフロードできる


# GUIがサポートする言語

- デンマーク語
- ドイツ語
- 英語
- スペイン語
- フランス語
- イタリア語
- オランダ語
- ノルウェー語
- ポルトガル語
- フィンランド語
- スウェーデン語
- 日本語
- 韓国語
- 簡体字中国語
- 繁体字中国語


# MLインサイト
- **MLベースの異常検知**：自動的に異常値を発見し、報告
- **MLベースの予測**：過去の値から将来を予測
- **自動ナラティブ**：分かりやすい文章で分析結果を提供

# SageMakerとの連携
- ビルトインモデル以外に、独自のモデルを利用可能に
- SageMakerで作成した独自モデルと連携
- ポイント＆クリックで連携：コーディング不要
- 可視化とインサイトを高速化


# Webサイトへのダッシュボード埋め込み
- フル機能のダッシュボードを埋め込み可能
- iFrameでの埋め込み
    - JavaScriptの埋め込み用ライブラリを提供
- 閲覧には、QuickSightへのサインインが必要
- ユーザIDによって表示するデータを変えたり（行レベルセキュリティ）デフォルト値を変える（ダイナミックデフォルト）事が可能
- QuickSightアカウントを持たない人は閲覧できないため、パブリックWebサイトには不向き

# テーマ
- 各種要素や背景、テキストの色、ボーダーの幅等を好みに合わせてカスタマイズ“テーマ”として保存しておくことが可能に
- ダークテーマにも対応

# 条件付き書式(conditional format)
- 条件に合わせたカラーグラデーションや、追加のアイコン等を指定可能
- 例
    - 収益に合わせてアイコンをつける
    - 達成率上位25%は青色にする

# アクション（ワンクリックフィルタ）
グラフやチャートの特定の項目をクリックすると、その項目についてフィルタリングができるようになる機能

- 既存のフィルタ機能
    - 用意されているダイアログやパラメータに値を指定して、フィルタする
- アクション
    - ビジュアルをクリックすると、クリックされた値やディメンジョンでフィルタ
    - 引数を付けてURLを呼び出す事も可能

# クロスソースジョイン
- 複数のデータソースにまたがったジョインを実現
- 3つ以上のソースからのジョインにも対応
- 結果セットがSPICEに格納されるため、サイズに注意
- SPICEでの1データセットの最大サイズ
    - Enterprise Edition : 最大1億行（もしくは200GB）
    - Standard Edition : 最大2,500万行（もしくは25GB）

# きめ細かなアクセスコントロール(Fine Grained Access Control)
- ユーザがアクセスできるデータソースを制限する機能
- IAMポリシーをQuickSightユーザやグループに紐付けておくと、データソースへのアクセス時に反映される
- S3, Athena, RDS, Redshiftに対応
- 過去との互換性のため、デフォルト全許可の設定も可能

# Athena Workgroup サポート
- QuickSightがAthenaのWorkgroupをサポート
- Athenaデータセット作成時に、利用するWorkgroupを指定可能に
- Athena Workgroupによる分離
    - スキャン量の最大値等の制限
    - ログや結果出力のバケットを分離等

# レベル対応の集計(LAA : Level Aware Aggregations)
- 表示時点の集計とは”別のレベル”で集計を行う関数（SQLのWindow関数に近い働き)
- 例）顧客の売上合計が100,000以下は集計しない
    - salesPerCustomer= sumOver({売上},[{顧客ID}],PRE_AGG)
- 集計関数を適用するタイミングを指定できる
    - PRE_FILTER
    - PRE_AGG
    - POST_AGG_FILTER

# APIの機能拡充
- 各種APIが追加
    - JavaScript
    - Java
    - .NET(C#)
    - Python 3
    - CLI をサポート
- ユーザ・グループ操作
- データソース、データセット操作
- SPICE操作
- 埋め込み
- テンプレート
- 事前作成の雛形と任意のデータセットを元にダッシュボードを作成

# 料金体系

下記ページ参照
https://aws.amazon.com/jp/quicksight/pricing/