Looker Studio、BigQuery、Vertex AI を利用した生成 AIチャットボット搭載ダッシュボード
- Google Cloud
- データ分析
- 生成AI
- AI/ML
- エンジニア
投稿日:
はじめに
本記事では、Google の提供する BI ツール Looker Studioと、データウェアハウス BigQuery、及び ML プラットフォーム Vertex AIを利用して、生成 AI チャットボットを搭載したダッシュボードを作成する手順について解説します。
全体イメージ

ダッシュボード例

事前準備
- Google Cloud のプロジェクトを作成し、課金を有効化します。
- 下記 API を有効化します。
- BigQuery API
- BigQuery Connection API
- Vertex AI API
ここでは詳細な手順は割愛します。Google の公式ドキュメントを参照してください。
参考: Google Cloud プロジェクトをセットアップする
参考: API を有効にしています
手順
1. データの準備
本手順では、BigQuery の一般公開データセット iowa_liquor_sales(アイオワ州のお酒の販売データ)を元に簡素化したテーブルを作成します。
1-1. データセットの作成
BigQuery のコンソール画面にて、エクスプローラ内のプロジェクト名の右にある ︙ を選択し、データセットを作成を選択します。

ロケーションタイプは iowa_liquor_sales のロケーションと同じ、マルチリージョンのUSを選択してください。

1-2. テーブルの作成
クエリエディタにて以下のクエリを実行してテーブルを作成します。
元のテーブルから、2024年5月最終週の日ごとのお酒の種類別の販売量(ℓ)を抽出しています。
また、日ごとに上位 10種のみを抽出しています。
CREATE TABLE blog_demo.table_demo AS WITH RankedSales AS ( SELECT date, category_name, ROUND(SUM(volume_sold_liters)) as total_volume_sold, ROW_NUMBER() OVER (PARTITION BY date ORDER BY SUM(volume_sold_liters) DESC) as rank FROM `bigquery-public-data.iowa_liquor_sales.sales` WHERE date >= "2024-05-26" AND date <= "2024-05-31" GROUP BY date, category_name ) SELECT date, category_name, total_volume_sold FROM RankedSales WHERE rank <= 10 ORDER BY date, rank;

2. データの可視化
本手順では、Looker Studio を利用してテーブルの内容を可視化します。
2-1. レポートの作成
Looker Studio のコンソール画面にて、作成、レポートを選択します。

2-2. データの接続
データのレポートへの追加からBigQueryを選択し、作成したテーブルを選択します。

2-3. グラフの作成
グラフを追加から積み上げ縦棒グラフを選択し、以下の通りに設定します。
設定項目 | 設定値 |
---|---|
ディメンション | date |
内訳ディメンション | category_name |
指標 | total_volume_sold |
並べ替え | date (昇順) |
サブの並べ替え | total_volume_sold (降順) |

3. モデルの作成
本手順では、BigQuery ML にて、Vertex AI のリモートモデルを作成します。
3-1. 外部接続の作成
BigQuery のコンソール画面にて、+追加、外部データソースへの接続を選択します。
接続タイプにVertex AI リモートモデル、リモート関数、BigLake(Cloud リソース)を選択し、接続 ID に任意の名称を設定して接続を作成します。

3-2. Vertex AI へのアクセス権の付与
接続情報を確認し、サービスアカウントIDをコピーしてから、IAMと管理コンソール画面へ移動します。

アクセス権を付与を選択し、新しいプリンシパルにコピーしたサービスアカウントIDを貼り付け、ロールにVertex AIユーザーを選択します。

3-3. モデルの作成
BigQuery のコンソール画面へ戻り、クエリエディタにて以下のクエリを実行してリモートモデルを作成します。
リモートモデルはgemini-proを選択しています。
CREATE MODEL IF NOT EXISTS `blog_demo.model_demo` REMOTE WITH CONNECTION `us.connection_demo` OPTIONS( ENDPOINT = 'gemini-pro' )

4. 生成 AI チャットボットの作成
本手順では、作成したモデルと Looker Studio を接続し、チャットボット機能として実装します。
4-1. データの接続
Looker Studio のレポート編集画面へ戻り、データを追加、BigQueryを選択後、カスタムクエリ、課金プロジェクトを選択して以下の SQL 文を入力します。
WITH 句でテーブルの情報を取得し、受け取った質問と組み合わせてプロンプトとしています。
WITH table_data AS( SELECT STRING_AGG(CONCAT('date: ', CAST(date AS STRING), ', category_name: ', category_name, ', total_volume_sold: ', CAST(total_volume_sold AS STRING)), '\n') AS table_info FROM `blog_demo.table_demo` ) SELECT STRING(unnest_ml_generate_text_result_candidates.content.parts[0].text) AS content_text FROM ML.GENERATE_TEXT( MODEL `blog_demo.model_demo`, ( SELECT CASE WHEN @prompt IS NULL OR @prompt = '' THEN '' ELSE CONCAT('以下のアイオワ州における日ごとのお酒の種類別の販売量(ℓ)のデータに関する質問 です。\n',@prompt,'\n',table_info) END AS prompt FROM table_data ), STRUCT( 800 AS max_output_tokens ) ) LEFT JOIN UNNEST(JSON_EXTRACT_ARRAY(ml_generate_text_result.candidates)) AS unnest_ml_generate_text_result_candidates

パラメータを追加から、質問を@prompt として受け取るように設定し、データを追加します。

4-2. 入力フォームの作成
コントロールを追加から入力ボックスを選択し、コントロールフィールドに質問を設定します。

4-3. 回答の表示欄の作成
グラフを追加から表を選択し、以下の通りに設定します。
設定項目 | 設定値 |
---|---|
指標 | なし |
タイトル | 回答 |
ヘッダーを表示します | なし |
行番号を表示 | なし |
テキストを折り返す | あり |
データが欠落 | 「」(空白)を表示 |
背景と枠線 | 枠線に黒を指定 |

動作確認
表示を選択し、レポートを確認します。
質問入力フォームにグラフに関する質問を入力し、回答が生成されることを確認します。

まとめ
Looker Studio、BigQuery、Vertex AI を利用した生成 AI チャットボット搭載ダッシュボードの作成方法について解説しました。
要点は、BigQuery 内のデータの Looker Studio での可視化と、BigQuery ML にて 作成した Vertex AI のリモートモデルと Looker Studio との接続になります。
次回予告
次回は Looker Studio 、BigQuery、Vertex AI を利用した生成AIチャットボットを搭載したダッシュボードに関してご紹介します。