AWS Quicksight Q で Generative BI（生成系 BI）機能 を使ってみる

# はじめに
AWS Quicksight QにGenerative BI (生成系 BI) 機能の追加が
2023年8月に発表されました。

https://aws.amazon.com/jp/blogs/news/announcing-generative-bi-capabilities-in-amazon-quicksight/

以下をまとめていきます。
* QuickSight Qとは
* Generative BI 機能追加の概要
* 生成系BIでできる事（できない事）

---
## QuickSight Qとは

QuickSightに搭載された機械学習(ML)を利用した自然言語クエリ(NLQ ※Natural Language Query)機能のことです。

QuickSightに自然言語でデータに関する質問を投げかけるだけで、普段使い慣れたビジュアルで回答を得ることができます。

---
例えば
「What spots we make the most sales last year?（昨年最も売れたスポットは？）」
と尋ねるとNLQで質問の意図を解釈し
QuickSightで数値、グラフ、テーブルの形で回答を返します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/c4a12401-d468-2cbf-adcb-615100af031c.png)

---
## Generative BI 機能
Q の自然言語クエリを基盤にAmazon Bedrock の大規模言語モデル (LLM)を利用した複数の機能が追加されました。
これにより従来に比べてよりNQLによる自由度の高い分析の構築が可能となっています。

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

Generative BI 機能
* ビジュアルの作成
* 計算の構築
* ビジュアルの改良

---
# QuickSight Q

## 利用条件
利用条件は以下の通りです
* Enterprise Edition であること
* リージョン：US East (ヴァージニア) および US West (オレゴン) 

---
## 使用開始
使用開始は以下の手順で行います
* 提供されているリージョンに変更
* Topicsを選択
* QuickSight アカウントの Q アドオンを取得
* サブスクリプションを利用できるようにする AWS リージョン を指定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/04287686-374f-898d-0f43-99ad483b24d8.png)

---
## 基本

---
### トピックの作成
Qを使い始めるにはトピックを作成します。
分析やダッシュボード、データセットと同様に1つのオブジェクトとして追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/c040e9c7-eed8-f0ba-234c-bc7b1d1be04c.png)

---
### サンプルトピックの作成
Qではデータセット・トピックがセットになったサンプルがあります。
データの学習が済んでいるサンプルを使うと操作を学びやすいです。

「NEW SAMPLE TOPIC」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/5b67985f-c56d-974c-c53e-17befb79e57a.png)

---
### サンプルトピックの種類
複数のサンプルから選ぶことができます。記事ではProduct Salesを使用します。

|トピック名|内容|
|:-:|:-:|
|Product Sales|製品販売|
|Clinical Trials|臨床試験|
|Marketing Campaigns|マーケティングキャンペーン|
|Student Enrollment Statistics|学生登録統計|
|Financial Services Card Payments|金融サービスカード決済|
|AWS Cost and Usage|AWS のコストと使用状況|

---
## 基本的な使い方

---
### トピックの選択
ページ上部にあるQバー（検索窓）でトピックを選択します。
サンプルを作った状態では「Software Sales」が選択されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/d0dc7910-21e4-74aa-7dae-78155a1dfaeb.png)

---
### 質問する
Qバーに質問を入力します。
対応するのは基本英語のみです。（一部日本語が可能で後述します。）

例として「What country did we make the most sales last year?（昨年最も売上が多かった国はどこ）」と入力すると、数秒でグラフがビルドされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/0ead1f5d-696b-7dfc-30df-12daf11afe52.png)

---
### 解釈の確認
Qがどのように文章を解釈したかQバーの下で確認できます。
質問の主要用語にアンダーバーで強調され、解釈したフィールド名とマッピングされていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/d916403b-df61-5a6f-f898-31538d8ca237.png)

例では以下のようにマッピングされています。
sales ＝ sum of sales（salesフィールドの合計）
country = countryフィールド
year = previous year（yearフィールドが前年）

---
### トピックワークスペース
トピックワークスペースと呼ばれる画面で概要やデータ、回答の履歴が確認できます。

「Data」ではフィールドの設定ができます。
* フィールドの除外
* フィールド名の編集
* フィールドのシノニムを追加
* フィールド設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/6310d015-8784-9f23-2e91-3d64b40fe591.png)

---
## 詳細

### 曖昧な質問をしてみる
フィールドの一覧には場所に関する単語が複数ありました。
* Coutry（国）
* City（都市）
* Region（地域）
* Subregion（準地域）

曖昧な質問をした場合はどのようになるでしょうか。
「What areas we make the most sales last year?
（去年最も売り上げが高いエリアはどこ？）」

---
結果、フィールドにない「area」を「Region（地域）」フィールドとして認識します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/45bd963d-72f9-f2ba-b1b7-77d0e30135bd.png)

---
これはRegionのSynonymsに「Area」が登録されているためです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/1b3d5ade-f78d-1e57-8428-caa2b879aff6.png)

---
Synonymsにも存在しない単語「spot（スポット）」を
検索した場合、どのようになるでしょうか。
「What spots we make the most sales last year?（スポットはどこ？）」

---
結果は「spot」はマッピングされませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/2e3f0f0d-2fea-2edc-03fa-814ee29ef6c1.png)

しかしながら「What did you mean?」と共に場所に関連するフィールドがサジェストされています。

---
これはフィールドの設定でDetailsに「場所」が設定されていることで関連付けられています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/f8217d7e-67b7-0562-e70a-71d7aa6099d1.png)

---
#
サジェストされた中から意図していたフィールドを選択することでビジュアルが作成されます。

ここでは「Country」を選択します。
また連動してフィールド設定のSynonymsに追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/8f66615b-5cd9-9431-f5f2-01e376a0c255.png)

---
サンプルではデフォルトですが、新規で作成する場合は自動データ準備の機能により自動的にフィールドにラベルを付け、同義語を識別するプロセスが実行されます。

https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/quicksight-q-topics.html

Q がデータを解釈し、回答しやすくするためにデータセットに対してヒントを提供することができます。

https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/quicksight-q-topics-natural-language.html

---
# Generative BI機能
ここまではQuickSight Qの機能です。今回追加されたGenerative BI機能についてご説明します。

---
## 利用条件
Generative BI機能はパブリックプレビューです。
QuickSight Qが使用できる状態であればオプトインすることが可能です。

---
## 使用開始
画面右上ユーザーから
「プレビューマネージャー」＞「QuickSightの作成者向け生成系BI」を有効にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/9ab6ae1a-5343-6798-096d-c80e67b0bcdb.png)

---
## 導入された機能
大きく3つの機能が導入されました。
1. ビジュアルの作成
2. 計算の作成
3. ビジュアルの修正

Qとの大きな違い
* Amazon Bedrock 大規模言語モデル (LLM) がベースとなっている
* 計算や修正ができるようになった


---
## 機能1　ビジュアルの作成

### Build visual
GenerativeBI機能は分析画面内のオプションとして使用できます。
* Qバーのあった場所
* 計算フィールドの作成画面
* ビジュアルの設定

---
機能を有効にするとQバーの場所に「Build visual」が表示されます。
選択すると右側に「Build a visual」ウィザードが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/52764f04-93a7-fcde-dff3-9cab17daf420.png)

---
Qバーと同様に英語でクエリを発行します。
同じ質問でもGenerativeBI（左）とQ（右）では回答に違いが出ます。
「show me count of orders in 2023 by city as a map
(2023年の都市別注文数を地図で表示して) 」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/d41bde6f-1c13-586f-42e7-1a3b2f6ee2f9.png)

---
GenerativeBIでは「as a map（地図で表示して）」を認識し
忠実に表現できています。

サポートする質問のタイプはドキュメントに記載されています。

参考：Qがサポートする質問のタイプ

https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/quicksight-q-ask.html#quicksight-q-ask-types

---
### 単語でクエリ
サポートする言語が英語のため、利用するのにハードルを感じてしまいます。
しかしながら単語だけで指示することも可能です。

例として、2023年04月の受注件数の推移を単語で質問してみます。
「Order Date day ,Order ID count,2023 04」

---
Qが翻訳してくれます。
「Unique number of Order ID by Order Date day for Order Date in April 2023」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/1cf57994-11cd-bfea-8d0a-a6f0b8be4187.png)

---
### ビジュアルに追加
「ADD TO ANALYSIS」を選択するとビジュアルとして追加されます。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/03c30343-94bb-3e9d-286a-89f74586ae16.png)

---
## 機能2　計算の作成
BI初学者にとって習得には一定の知識が必要となる計算フィールドの作成もサポートされています。

計算フィールド作成画面で「計算を作成」というオプションが表示されます。

「rolling 7 day average order count（オーダーの7日間の移動平均）」
を求める指示を入力すると、計算フィールドが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/95150cbf-bf92-db62-54b0-85a714a3b842.png)

---
「挿入」を押すと指示文と共に計算式が追加されます。
「movingAverage7days」として追加しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/6c15632d-1682-27c2-f117-b05efcc82bc2.png)

---
## 機能3　ビジュアルの修正
新機能では作成したビジュアルに対して修正の指示を行うことが可能です。

また説明文が日本語の場合、日本語で指示することが可能です。
今後もサポートが増えていくと思われます。

---
### フィールドの追加
修正したいビジュアルのオプションから「ビジュアルを編集」を選択します。
「移動平均を追加」と日本語で指示すると
「movingAverage7days」フィールドが追加できています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/306e0fe8-ec76-f7a3-7057-bbac04f1af63.png)

---
### フィールド集計の変更
OrderIDフィールドが「個別の値をカウント」（Unique）になってしまっているので
重複もカウントするように変更します。

「OrderIDをカウントに変更」と指示すると「カウント」に変更されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/9f8cce2a-3bb9-085a-6ad6-3ceae9acd760.png)

---
### できないこと
サポートされていない編集リクエストを投げかけるとエラーとなります。
質問のタイプは決まっているので確認しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3345257/550ca746-c64c-c9df-d5dc-db8fe5abcd1d.png)

参考：修正をサポートする質問のタイプ

https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/generative-bi-author-experience.html#generative-bi-refine-visual

---
## スクリプト
Google翻訳で日本語から英語に翻訳した質問と、翻訳を介さない自然言語で、同じ結果が得られるか検証しました。
サンプルトピックの中から、Cost and Usage（AWS のコストと使用状況）を使用して、Quicksightの月別使用量を表示する質問をします。

---
### Google翻訳を使用した場合
「月別のQuicksight使用量」は「Quicksight usage by month」と翻訳されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3525311/1ffa5bb4-6484-c957-ea01-fc4c6faad848.png)

---
このままQuicksightQに質問としてペーストし、結果を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3525311/e8454c1d-ffc7-3940-8edc-71cda7970250.png)

---
Quicksightの月別使用量がグラフで表示されました。
さらに、グラフの左側の「Did you mean...」以下で、Quicksightが質問をどの様に理解したかが表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3525311/acc44c08-f792-084f-9df1-49838e07f7a4.png)

---
### 翻訳を介さない自然言語を使用した場合
「how much we use quicksight monthly」という質問を投げた結果です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3525311/2071a35c-de2d-064b-d207-65c00856cf58.png)

---
Google翻訳を通した場合と全く同一の結果が出ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3525311/ab280004-fad4-3afa-8e22-e59f8a475d85.png)

---
同様にいくつか他の質問も試してみたところ、翻訳を介しても介さずとも、ほとんどの場合で意図した通りの回答を得られました。
まれに質問に回答されない場合がありましたが、その場合には、質問の文章を変えたり、フィールドの設定を見直すと正しい回答が得られました。

※質問をQuicksightQが理解できない場合、以下のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3525311/a9ee1512-4fb7-82df-de28-4c4fc075f875.png)

---
## 理由を尋ねる
QuicksightQでは、データに対して「なぜ」という質問を投げかけ、回答を得ることができます。

https://aws.amazon.com/jp/blogs/business-intelligence/new-analytical-questions-available-in-amazon-quicksight-q-why-and-forecast/

---
まずは、分析対象のデータを確認します。
Redshiftの月別の使用量を調べると、毎年4月に使用量が落ちていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3525311/f3823b68-2e19-cffb-548d-46e1359a5f0e.png)

---
2022年をピックアップして、「なぜ」4月に使用量が落ちるのかを尋ねます。
「Why do the spend for Redshift drop in April 2022」と質問しました。

---
複数の分析軸の中から、4月にRedshiftの使用量が落ちる原因となっているものを解析した結果を返してくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3525311/3f2571df-0550-8f82-599e-61aba25ec4eb.png)

---
今までであればこれらの分析軸を一つずつ見て、原因を探るという作業が必要でしたが、このように理由を尋ねる質問をすることで、その作業は不要になりました。


さらに、分析の技術や知識のない人でも、「なぜ」の質問をするだけで分析が可能になります。

---
この機能は、質問の文章に以下の条件がありますのでご注意ください。
* 「why」から始める文章にする
* KPIとなる数値項目を入れる（上記の例の場合はRedshiftの使用量）
* 日付か時間の指定を入れる（上記の例の場合は2022年4月）
  ※現時点では「this month(今月)」や「this week(今週)」などの動的な指定は未対応

---
# 最後に

QuickSight Qの動作検証を行いました。

ML/AIへのプロンプトでは細かい表現や解釈がブラックボックスになりがちですが
人間が修正でき、品質を担保しやすいことが分かりました。
* 検索窓でフィールドとのマッピング
* 設定画面でシノニムやディテールを任意に設定できる

---
今回追加されたGenerative BIの導入により機能がアップデートされています。
* グラフの表現で地図をサポートできるなど、表現の幅が広がっている。
* 日本語を一部サポートしている。今後も増えていく可能性が高い。

---
実際に作業する前に、サポートしている質問や動作を一通り確認しておくことで
スムーズに機能を活用できると感じました。

3つの新機能はGenerative BI 機能の第一弾ということで今後に期待したいです。

---
# 
株式会社ジールでは、初期費用が不要で運用・保守の手間もかからず、ノーコード・ローコードですぐに手元データを分析可能なオールインワン型データ活用プラットフォーム「ZEUSCloud」を提供しております。
ご興味がある方は是非下記のリンクをご覧ください：
https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area