Amazon Quick の Dataset Q&A + Dataset Enrichment を試してみた

記事タイトルとURLをコピーする

はじめに

こんにちは。クロスインダストリー第1本部の脇江です。

Amazon Quick は、データ可視化(Quick Sight)、調査(Quick Research)、ワークフロー自動化(Quick Flows / Automate)などの機能を統合した AWS のエージェント型 AI ワークスペースです。

aws.amazon.com

2026年5月に Amazon Quick の Quick Sight に「Dataset Q&A」が GA されました。これはデータセット(Aurora・Redshift・S3・Athena などのデータソースから作成)に対して自然言語で質問を投げるだけで、SQL を書かずに集計・分析ができる Text-to-SQL エージェント機能です。

aws.amazon.com

本記事では、プライベートサブネットに配置した Aurora をデータソースとして Dataset Q&A を使ってみます。加えて、列説明やカスタム指示で SQL の精度を高める Dataset Enrichment の設定前後で生成される SQL がどう変わるかも確認していきます。

対象読者と前提条件

対象読者

  • Amazon Quick / QuickSight で自然言語クエリを試したい方
  • Text-to-SQL の精度をビジネス文脈に合わせる手段を探している方
  • Dataset Q&A と Topic Q&A の使い分けを知りたい方

前提条件

  • Amazon Quick のサブスクリプションが有効で、ログイン可能であること
  • Aurora を配置および Amazon Quick を接続する VPC・サブネットが作成済みであること
  • Amazon Quick の VPC 接続に必要なセキュリティグループ・IAM ロールが作成済みであること
  • Aurora を作成済みで、サンプルデータの投入が完了していること(※サンプルデータは後述)

Dataset Q&A とは

Dataset Q&A は、ユーザーの質問を Text-to-SQL エージェントが解釈し、データセットのメタデータを取り込んだセマンティックグラフ(ダッシュボード・データセット・トピックなどのアセット間の意味的な関連を把握したグラフ)を参照しながら SQL を生成・実行して回答します。

主な特徴

  • 事前のトピック設定(後述する Topic Q&A で必要な意味付け)が不要。データセットさえ用意すれば質問できる
  • Explain 機能で、回答生成に使われた SQL や前提条件(参照データソース・フィルター・計算ロジック)を確認できる
  • 質問内容に応じて、セマンティックグラフを参照して複数データセットの中から最適な対象を自動選択する
  • Dataset Enrichment(カスタム指示・列説明)を設定するとセマンティックグラフが補強され、SQL 生成精度が向上する

Dataset Q&A と Topic Q&A の使い分け

Amazon Quick には自然言語クエリ機能として Dataset Q&A と Topic Q&A の2種類があります。

観点 Dataset Q&A Topic Q&A
仕組み Text-to-SQL エージェント キュレーション済みトピック
事前設定 不要(データセットのみ) トピック作成・キュレーション設定が必要
精度チューニング Dataset Enrichment で補強 Named Entity・集計ルールで細かく制御
複数データセット アセット間の意味的な関連グラフで横断検索 トピック内のデータセットに限定
回答の透明性 Explain で生成された SQL を確認可能 ビジュアル中心の回答
リリース 2026年5月 GA(新機能) 既存機能

使い分けの判断基準

Dataset Q&A が向いているケース:

  • データを初めて探索したい・アドホック分析
  • 事前のトピック設定に工数をかけられない
  • 生成された SQL を確認・検証しながら進めたい
  • 複数データセットをまたいで質問したい

Topic Q&A が向いているケース:

  • 特定のビジネス領域で高精度・安定した回答が必要
  • 複数カラムを1つの概念にまとめたい(Named Entity)
  • 集計方法を厳密に制御したい
  • ビジネスユーザーが繰り返し同じ領域を質問する運用

運用フロー例

Dataset Q&A は探索フェーズ、Topic Q&A は運用フェーズという棲み分けが現時点での自然な使い方になりそうです。

新しいデータセット
    ↓
Dataset Q&A で探索・検証
    ↓
よく使われる領域・精度が足りない領域は
Topic Q&A でキュレーション

やってみる

それでは実際にやってみます。

1. 検証構成の全体像

今回の検証構成は以下の通りです。

  • プライベートサブネットに Aurora を配置
  • Amazon Quick は VPC 接続を経由して Aurora を参照
    • ENI を作成・更新・削除できるようにするための IAM ロールを関連付ける
  • Aurora のセキュリティグループで Amazon Quick からのインバウンドのDB通信を許可

検証構成の全体像

補足

本記事では VPC, Aurora, セキュリティグループ, IAM ロールの構築、Aurora へのデータ投入は事前に完了している前提として割愛します。

2. 使用したサンプルデータ

今回は IT 機器の販売データを想定した sales テーブルを使用します。

カラム 説明
product 商品名
category カテゴリ(PC / 周辺機器 / モバイル)
amount 1件あたりの単価(円)
quantity 販売数量
sold_at 販売日
region 地域
CREATE TABLE sales (
  id        SERIAL PRIMARY KEY,
  product   TEXT,
  category  TEXT,
  amount    NUMERIC(10,2),
  quantity  INTEGER,
  sold_at   DATE,
  region    TEXT
);

INSERT INTO sales (product, category, amount, quantity, sold_at, region) VALUES
  ('ノートPC',      'PC',        120000, 3, '2026-01-05', '東京'),
  ('マウス',        '周辺機器',    2500, 10, '2026-01-07', '大阪'),
  ('モニター',      'PC',         45000,  2, '2026-01-12', '東京'),
  ('キーボード',    '周辺機器',    8000,  5, '2026-01-15', '福岡'),
  ('ノートPC',      'PC',        118000,  2, '2026-02-03', '大阪'),
  ('Webカメラ',     '周辺機器',    6500,  7, '2026-02-10', '東京'),
  ('タブレット',    'モバイル',   60000,  4, '2026-02-14', '東京'),
  ('スマートフォン','モバイル',   90000,  6, '2026-02-20', '福岡'),
  ('モニター',      'PC',         47000,  3, '2026-03-01', '大阪'),
  ('マウス',        '周辺機器',    2800,  8, '2026-03-05', '東京'),
  ('ノートPC',      'PC',        125000,  5, '2026-03-15', '東京'),
  ('タブレット',    'モバイル',   58000,  2, '2026-03-22', '大阪'),
  ('キーボード',    '周辺機器',    9000,  4, '2026-04-01', '福岡'),
  ('スマートフォン','モバイル',   95000,  8, '2026-04-10', '東京'),
  ('Webカメラ',     '周辺機器',    7000,  3, '2026-04-18', '大阪');

3. Amazon Quick の VPC 接続設定

Amazon Quick からプライベートサブネットの Aurora に接続するために VPC 接続を設定します。

設定手順や Amazon Quick の VPC 接続設定時に必要な IAM ロール権限については以下 AWS ドキュメントを参照してください。

docs.aws.amazon.com

4. データソースとデータセットの作成

データソースとデータセットを作成します。

Amazon Quick のコンソール画面左メニューで、[クイックサイト] -> [データセット] を選択します。

クイックサイト -> データセットを選択

[データソース] タブを選択し、[データソースを作成] を選択します。

データソースを作成

<データソースを作成>画面で [Amazon Aurora] を選択し、[次へ] を選択します。

Amazon Aurora を選択

各パラメータを設定し、[データソースを作成] を選択します。

  • データソース名:任意の名前を入力
  • 接続タイプ:作成した VPC 接続を選択
  • データベースコネクタ:接続先の DB エンジンの種類を選択
  • データベースサーバー:接続先の DB インスタンスのホスト名または IP アドレスを入力
  • ポート:DB のアクセスに利用するポートを入力
  • データベース名:接続するデータベースの名前を入力
  • ユーザー名:データベースに接続するユーザー名を入力
  • パスワード:データベースに接続するユーザーのパスワードを入力

データソースのパラメータ設定

データソースが作成されていることを確認します。

データソースが作成されていることを確認

次に [データセット] タブを選択し、[データセットを作成] を選択します。

データセットを作成

作成したデータソースを選択し、[選択] を選択します。

データソースを選択

[スキーマ], [テーブル] を選択し、[選択] を選択します。

スキーマとテーブルを選択

今回はデータソースへ都度クエリを実行するダイレクトクエリの構成とするため、[データクエリを直接実行] を選択し、[データの編集/プレビュー] を選択します。

データクエリを直接実行を選択して、データの編集/プレビュー

ここでは特に設定を変更せず、[保存して公開] -> [保存して公開] を選択します。
この画面から Dataset Enrichment の設定が可能ではあるのですが、設定有無による違いを確認するため、あえて設定せずに進めます。

設定を変えずに保存して公開

データセットが作成されていることを確認します。

データセットが作成されていることを確認

5. Dataset Q&A で質問してみる

データセットに対してチャットから質問を投げます。

データセットの <アクション> の [Chat] を選択します。

データセットに対するチャットを開始

画面右からチャット画面が出てきます。
参照するデータとして作成したデータセットが選択されていることを確認します。

作成したデータセットが選択されていることを確認

チャットから以下の質問を投げると、回答が返ってきます。

質問:

カテゴリ別の売上合計を教えて

質問に対する回答

6. Explain 機能で生成 SQL を確認

回答の下部にある [説明] を選択すると、回答生成に使われた SQL を確認できます。

回答下部の説明を選択

[SQL query] を選択して展開すると、生成された SQL が表示されます。

生成された SQL を確認

Dataset Enrichment を設定していない状態での生成 SQL は以下の通りでした。

SELECT
    "category",
    SUM("amount") AS "total_amount"
FROM
    "sales"
GROUP BY
    "category"
ORDER BY
    "total_amount" DESC

amount のみの合計を total_amount として定義しています。

7. Dataset Enrichment の設定

繰り返しになりますが、Dataset Enrichment はデータセットにカスタム指示や列の説明を設定することで、セマンティックグラフに取り込まれ SQL 生成精度が向上する機能です。

docs.aws.amazon.com

データセットに対して設定できる情報は以下となります。

  • 説明: データセット全体の概要説明
  • カスタム指示: SQL 生成時の計算ルールなどを自然言語で指定
  • 列レベルの説明: 各フィールドの意味をコンテキストとして付与

Dataset Enrichment は「新しいデータ準備エクスペリエンス」でのみ設定可能です。 レガシーエクスペリエンスで作成したデータセットは新エクスペリエンスでの編集ができません。 その場合は新しいデータ準備エクスペリエンスでデータセットを新規作成してください。

データセットの <アクション> の [︙] を選択し、[編集] を選択します。

データセットを編集

画面左上で [出力] タブを選択します。

出力タブを選択

データセットおよび各フィールドに説明やカスタム指示が入力できる画面となります。
データセットの [Dataset details] -> [カスタム指示] に以下の文言を追加し、[保存して公開] -> [保存して公開] を選択します。

売上金額の計算
- amountは1件あたりの単価(円)
- 売上合計を求める場合は amount × quantityで計算すること
- amountのみを合計しても正しい売上合計にならない

データセットにカスタム指示を設定

売上合計は amount x quantity の合計とするようにカスタム指示を入れます。

8. Enrichment あり/なしの比較

同じ質問「カテゴリ別の売上合計を教えて」を Enrichment 設定後に再度投げます。

先ほどと計算結果が変わっていることがわかります。

Enrichment 設定後の回答

さらに生成された SQL を確認すると、SUM の計算対象が "amount" * "quantity" になっていることがわかります。

Enrichment 設定後に生成された SQL

Enrichment 設定なし(再掲)

SELECT
    "category",
    SUM("amount") AS "total_amount"
FROM
    "sales"
GROUP BY
    "category"
ORDER BY
    "total_amount" DESC

Enrichment 設定あり

SELECT
    "category",
    SUM("amount" * "quantity") AS "売上合計"
FROM
    "sales"
GROUP BY
    "category"
ORDER BY
    "売上合計" DESC

カスタム指示に「売上合計は amount × quantity で計算する」と定義したことで、意図した計算式として反映させることができました。

まとめ

Dataset Q&A を使うことで、SQL を書かずに自然言語でデータを探索できることを確認しました。

ポイント

  • Dataset Q&A は事前トピック設定なしで使える Text-to-SQL エージェント機能
  • Explain 機能で生成 SQL を確認できるため、検証フェーズに最適
  • Dataset Enrichment(カスタム指示・列説明)で SQL 生成精度を向上させることが可能
  • Topic Q&A との棲み分けは「探索=Dataset Q&A、運用=Topic Q&A」
  • Dataset Enrichment はレガシーエクスペリエンスで作成したデータセットには設定できない

所感

実際にどういう SQL クエリでデータへの問い合わせが実行されているかを確認できるので、カスタム指示による AI エージェントへの指示が意図したものになっているかの確認はやりやすいなと感じました。 今回は非常にシンプルなケースでカスタム指示の動作を確認しましたが、複数テーブルのデータの結合が伴うような指示でも通るのかなども今後試していきたいと思います。

この記事がどなたかのお役に立てば幸いです。

参考資料

脇江 凜 (記事一覧)

クロスインダストリー第1本部クラウドコンサルティング2課

猫が好きです。