BI×AI関連機能について機能別にまとめました

# はじめに
近年、生成AIの進化が日々加速する中、ビジネス・インテリジェンス（BI）製品にも生成AIの機能が統合されつつあります。
本記事では、主要なBI製品のAI関連機能を紹介し、現在BIで何ができるのかを簡単に解説します。

# 機能別に各社BI製品から1つをご紹介
AI機能に関連したBIの機能に関して、各機能1つの製品を例にご紹介します。記載した機能に対してはこの記事での製品のみが扱っているという訳ではない点はご承知おきいただければと思います。

## 自然言語からグラフを作成 - Cognos Analytics
BI製品が提供するAI機能で最も多く見かける一つです。
自然言語入力からグラフ生成までの流れをご紹介します。

#### 1.データソースを指定する

アシスタント画面を開き、"Use a sample data source"の指示に従い、「Select sample data source」を押下し、「GO データウェアハウス（クエリー）」を選択します。
このデータソースはDb2のサンプルデータベースである「Great Outdoors」を使用し、モデリングしCognosに発行したパッケージとなっています。

データソースを指定すると、有用と思われるフィールドのリストや、質問のサジェストが表示されます。
もしも質問が思い浮かばない場合にはこういったサジェストに従ってデータ探索をしてみるのも良いでしょう。
![image-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/a3d212aa-bc3c-4121-a3de-b665eaebc32b.png)

#### 2.グラフを生成する
今回は、売上を月別で表示したいため、以下をチャットに入力します。
「show chart Revenue and Year and Month」
以下のようなグラフが作成されました。今回は年月別で見たかったため、Revenue **by** Year and Monthが正しい指示になりますが、この程度の曖昧性は解釈してよしなにやってくれるようです。
![image-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/ff875213-d55f-4ab0-bbc8-59b8680c301d.png)

グラフ表示部分の上にはグラフタイプのバーがあります。ここで、同一の指定をもとにグラフタイプを切り替えることが可能です。以下は、縦棒グラフを指定した例です。
![image-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/f631a50e-7389-4945-a627-bc8b826524f1.png)

折れ線グラフや棒グラフ等の基本的なものだけでなく、ヒート・マップや箱ひげ図等多様なグラフタイプが選択されます。


#### 3.生成したグラフをダッシュボード画面に使用する
生成されたグラフを右下の「More」>「Create dashboard from the chart」を選択することで、自然言語から生成したグラフからダッシュボードを作成が可能です。
![image-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/e6562b48-4a40-4d70-8d25-fbf733a1dbf6.png)

作成されたダッシュボードは以下です。選択したグラフは棒グラフでしたが、他のグラフタイプも含めて複数の可視化がまとまったダッシュボードが簡単に作成できました。
![image-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/61f63f27-9a80-4f0c-bcb0-29a74f017aaa.png)

#### 4.関連する可視化を見る
「More」>「Show related visualizations」を選択すると、指定したフィールドと関連のあるフィールドをCognosが勝手に選んで可視化してくれます。
先程の画面で可視化した場合、RevenueにQuantityを加えて可視化してくれました。
月の表示が1月,10月,11月,12月,2月と、昇順ソートされていない点が惜しいところですね。
![image-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/e4f508bd-43a8-41d1-b32a-6472c6f77470.png)

## グラフから自然言語インサイトを抽出 - PowerBI
インサイトを得たい視覚化のデータポイント(この例では、2013年4Qの棒グラフ)を右クリックし、「分析」をマウスホバーします。
すると、選択したデータに応じて、以下３つのうちのいずれかが表示されるため選択します。
「増加について説明してください」
「減少について説明してください」
「この配布が異なる箇所を見つけます」

「増加について説明してください」を選択した場合、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/d392921a-d930-4235-a721-c66757ff45b2.png)

増減に最も影響したカテゴリを示してくれます。
下部にある視覚化のアイコンから、どの視覚化を採用するか選択可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/9fde2a50-1e60-4db0-b5c4-6c40597fae99.png)
生成された視覚化は、プラスボタンからレポートに追加可能です。

## 自然言語から計算式の作成 - QuickSight
「挿入」タブから「計算フィールドを追加」を選択。
　(「データ」> 「計算フィールドを追加」でも可)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/8dcf1ba1-1345-49e4-a5b8-9c4c82d0ca3d.png)

「計算を作成」フィールドを展開し、説明を入力。
　今回は既存の「Billed Amount」と「Cost」の差分をとった「Profit」を作成。
　計算を作成欄に、Profitと入力すると想定通りの式が生成されます。
　(informationマークに英語のみサポートと表示がありますが、「利益」と入力しても一応、同じ式を生成してくれます。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/3c932f93-9b56-4d78-ba54-d5dfc29ef438.png)

挿入を選択し、保存すると使用可能になります。

## 自然言語でビジュアルの調整 - QuickSight
一度作成したビジュアルがイメージと違う場合でも、さらに自然言語で要望をプロンプトに入力することで、ビジュアルの調整が可能です。
例えば以下のように横棒グラフで表示されたビジュアルを調整したい場合「change to table, add region, and coloer profit red to green」と注文を付けてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/cf1d5b9b-c45a-4903-b0dd-54c296077d3d.png)

この様にビジュアルが表形式に変更され、Regionが追加され、Profitが緑から赤背景で表現されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/e9b22ff4-3c73-4cae-bea1-7ac081327af2.png)

## 予測 - QuickSight
AIの力を借りて過去のデータの持つパターンを分析し、未来のデータを予測表示することも可能です。
以下はAWSのQuick SightのBuild visual機能での例ですが、プロンプトに「forecast profit by month」と入れてみると、オレンジ色の線で未来の予測値が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/dac80cb2-1f94-406d-b59a-1b8476497ffe.png)

ダッシュボード上に置いて、プロパティから予測に用いたパラメーターを調整することも可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/2ec31f05-995a-42fd-90f0-6d22eb135f96.png)

## あいまいな質問に対する自動解釈 - QuickSight
あいまいな質問に対してもAIが適切に解釈し、回答を返してくれます。
QuickSightの場合、あいまいな質問を投げかけると、Amazon Qが質問を自動解釈します。さらに、その質問に沿ったビジュアライズを生成してくれます。

トピックからOpen Q&Aを開き、「quantity」の一単語のみのあいまいな質問を投げてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/474e9c82-518f-4661-81d7-196649262b20.png)

"Interpreted as:Total Quantity."と表記あるように、AIが自動的に「Total Quantity」という質問に解釈してくれます。
合わせて、その回答となるビジュアライズを作成してくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/ab39e6a7-385b-43dc-960b-eda9ccc3f7e9.png)
このように、1単語のみのあいまいな質問に対しても、AIが自動的に質問を解釈し、ビジュアライズの作成を行ってくれます。


## データストーリー - QuickSight

データストーリーを作成する画面です。
![image-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/28513562-8bea-4020-96d5-adc77185996c.png)

"データストーリーを説明してください"の下にプレースホルダとして「地域の売上動向を参考にして収益を増大させる機会を明らかにするマーケティング戦略を入力してください...」と表示があります。入力欄にデータストーリーを作成するためのプロンプトを入力するようです。

https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/working-with-stories-create.html


次の文言をプロンプトに入力してみました。
"build a story explaining profitability trends.give ideas about how sales managers can increse profitability in their regions."

次に、「ビジュアルを選択」下にある「＋追加」をクリックします。この画面では、作成済みのダッシュボードの中からどの図をデータストーリーに含めるかを選択できます。複数のダッシュボードから図を含めることが可能です。
なお、入力したデータストーリーの説明からAIがグラフを推薦してくれるのではなく、作成済みのダッシュボードにある図からあくまでも自身で選択してストーリーに含めるという操作手順となっています。

ビジュアルを複数選択後、「ビルド」をクリックします。ここでは、サンプルダッシュボードのSales Pipeline analysisのすべてのグラフとWeb and Social Media Analyticsのうち1つのグラフを含めてみました。
![image-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/bccc83e0-99c5-4d10-a634-2038d4c9e39b.png)

ビルドした結果はこちらです。何を可視化するもので誰のための分析かが記載されたIntroductionに始まり、各グラフの説明と洞察、推薦されるアクションなどを出力してくれています。
全文は非常に長いものとなっているため、抜粋します。

タイトルとイントロダクションが生成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/8013f92d-3c77-441b-a6b7-9e54783168e0.png)
先ほどの画面で選択したグラフがインサイト付きで表示されています。
![image-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/b01bacfb-da34-45a7-82eb-78fa356245f7.png)
最後に結論等がまとめとして記述されています。
![image-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/81413c39-43c8-4d76-955d-f39ceafa7f29.png)

ビルドされた結果には個別に文字装飾の編集を加えることが可能で、太字や文字色、背景色の変更などができます。
また、文章を編集することも可能ですので、草案をAIに生成してもらい人の手で仕上げを行うことも可能です。

## データシナリオ - QuickSight
ChatbotのようにAIとの対話形式で結論やアクションを導き出すまでの過程をスレッドとして作成できます。

任意のダッシュボードに入り、右上の「Build」マークから、もしくはホーム画面の「Scenarios」から作成可能。
・「Data」>「Find Data」 からQuickSight上で作成したダッシュボードにある視覚化をデータソースとして選択可能。
「Data」 > 「Upload File」から表形式のファイル(.csv .xlsx .xls)も利用可能。
今回はサンプルのダッシュボードにあったすべての視覚化を利用。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/b0f2783c-1275-4768-a91c-c0fd5d66d231.png)

まず得たい示唆について、自然言語をプロンプトとして入力します。(Which segments and channels contribute the most to sales?)
すると、30秒程度の推論ののちに、似たようなプロンプトを候補としていくつか出してくれます。(5番目の選択肢のように、仮定の質問にも答えてくれます。)
今回は一番上に提示されたものをSubmitして使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/3eb68329-5305-4033-b09a-d565e833766c.png)

１分経過時点です。
このように作成過程を見せてくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/317795b2-84ca-4e2d-910f-5085257521d1.png)

すべて出力しきるのに、2分ほどかかりました。
結果を見ると、
① セグメント別の合計売上高の算出と視覚化
② ①の視覚化に関連した数値の説明
③ ②の解釈
④ とるべき施策　といった構成です。
こちらは上のキャプチャの続きです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/ef1fbaa3-794c-43e1-b5ae-3d81668f04b4.png)
(最初に入力した、より抽象的な「Which segments and channels contribute the most to sales?」だと、出力しきるのに3分30秒。上述した出力の3倍以上の長さになりました。)

出力(ブロック)に繋げるかたちで追加のプロンプトを投げることも可能で、垂直方向にブロックが伸びていきます。これをスレッドと呼び、最大15個までブロックをつなげることが出来ます。
スレッドを複数作成した場合、1シナリオには最大50個のブロックを含めることが可能です。


## ベンチマークによる回答評価 - Databricks


DatabricksのAI機能Genieの回答精度を評価するために使用可能なテスト問題を作成できます。
評価が実行されたベンチマークは以下のような画面で、実行日時や回答精度、マニュアルレビューの要否などが一覧で確認可能です。
![image-23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/dfac8c06-c8bc-4d79-9a15-29224cc5cdb1.png)

ベンチマークに使用されるテスト問題は、以下のような画面から追加することができます。
QuestionとSQL Answerのセットがインプットとなります。
![image-30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/2095b0c4-97ad-43f3-889d-c3feeff2b25b.png)

プレースホルダーにある通りの内容で、Questionに"What was our ARR over the last 4 years?"と入力し、オプショナルなSQL Answerを空欄で追加した後、ベンチマーク実行した結果がこちらです。
自然言語のQuestionをInputに、Model outputはSQLとなり、先程の画面で入力が可能であったSQL Answerと突合し回答精度を評価しているようです。なお、先程の画面でSQL Answerを空欄にした場合は、「Manual review needed」と表示され、人の手でのレビューが要求されます。
![image-31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/628657b8-70c1-4adf-8728-a34d666717fe.png)

## 指示、回答のキュレーション - Databricks
よくある質問や回答に対して、事前に認定をしたり回答を準備しておくことができます。
Databricksでは、専門家が事前にGenieで使用するための指示や認定された回答を作成することができます。
認定された回答を作成しておくことで、ユーザーが誤解を招いたり、不正確な回答を受け取る可能性を低減します。
また、「Certified Answer（認定された回答）」アイコンが表示されるため、ユーザーは生成された回答に完全な信頼を持てます。


Genieが使用できるSpaceを開き、「指示」タブからSQLクエリーの例やSQL関数を追加できます。
SQLクエリーとして、「Total price by region」を定義した状態で、同様の質問をすると、事前に定義しておいたSQLクエリーを利用して回答を返していることが確認できます。
データベースのスキーマ内で事前に定義しておいた関数をGenieに追加しておき、Genieが回答で使用した際は、「信頼できるアセット」のマークも表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/0394ecd1-e817-4b66-83b8-a1f9f6bee2b6.png)

## メトリックのモニタリングとグラフ・洞察生成 - Tableau

事前に定義しておいたメトリクスに関する洞察やグラフを生成し、メールやSlackで通知を受信することが可能な機能です。
ユーザーはメトリクスをフォローすることができ、メトリクスに関する促進要因、傾向、外れ値などをAIが検出し、明示的な閾値の設定なしに通知を受領できます。
![image-26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/09d2e0ef-e55d-45ed-96f9-1d64907d2cdd.png)

メトリックは、下の表の"Definition field"に値をセットして定義します。
以下の要素で構成されます。
* 値：監視対象の指標（例：売上）の集計値。
* 時間ディメンション：時系列データを追跡するための日時フィールド。日、週、月、四半期、年といった粒度で設定します。
* フィルター：メトリックを特定の条件で絞り込むためのディメンション。地域、製品カテゴリなど、ユーザーが関心のある属性でデータをフィルタリングします。
![image-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/dc8a5a56-df90-4efd-87a4-c4a9b43fbb6d.png)


## アクティビティモニタリング - Databricks
AIにより作成された分析結果が良かったかどうかを判断するのは、あくまで人間です。
分析結果をユーザーにシェアし評価を受ける事で、より分析を精錬化していくことができます。
こちらはdatabricksの例ですが、他のユーザーがポータルにあげている分析結果を「Rating」という列で高評価・低評価を付ける事が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/933df445-de33-4645-adeb-fcde8b8e1b42.png)

評価が低い場合、AIに分析させるためのデータの意味をより詳しく正確にAIに教えてあげる必要があります。
データのアイテム(列)の一個一個に説明を記述できるカラムがあり、ここにAIにわかるように説明文を記載することで分析の精度を上げることが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/06adb916-24ec-48b7-9c85-78ef1c19642d.png)

# まとめ
自然言語からグラフを作成する機能や、グラフから自然言語のインサイトを抽出する機能は、生成AIが登場する以前から存在していました。それらの機能は、曖昧な質問・指示にも対応できるよう改良されている印象です。
従来、BIにおける計算式の作成はBI開発者やBIのパワーユーザー向けのものでしたが、曖昧な自然言語を用いて作成できるようになり、業務部門のユーザーにも広く活用される下地が整いつつあります。
一方で、生成されたグラフや計算式、洞察の正確性については、利用者自身が判断するよう求める文言が各社のBI製品に表示されています。今後、生成結果の正確性をどのように判断し、精度をどう向上させるかに関連した新機能が登場するのか注視していきたいと思います。

# 参考

### Cognos Analytics
https://www.ibm.com/docs/ja/cognos-analytics/12.0.0?topic=explorations-assistant-panel

### Databricks
https://docs.databricks.com/aws/ja/genie#%E3%83%99%E3%83%B3%E3%83%81%E3%83%9E%E3%83%BC%E3%82%AF%E3%81%AB%E3%82%88%E3%82%8B%E5%9B%9E%E7%AD%94%E3%81%AE%E8%A9%95%E4%BE%A1

### PowerBI
https://learn.microsoft.com/ja-jp/power-bi/create-reports/insights

### QuickSight
https://docs.aws.amazon.com/quicksight/latest/user/quicksight-gen-bi.html

### Tableau
https://help.tableau.com/current/online/en-us/pulse_insights_platform_insight_types.htm