Amazon Quick のマルチデータセットトピック機能で、データセット横断の統一セマンティックレイヤーを構築
Amazon Quick は、最大 12 のデータセットを結合した新しい「マルチデータセットトピック」機能を公開し、正規化されたデータを維持しながら AI チャットエージェントが自動で SQL ジョインを実行する統一的なセマンティックレイヤーを実現しました。
キーポイント
マルチデータセットトピックの導入
従来の 1 トピック=1 データセットという制限を突破し、単一のトピックに最大 12 のデータセットを追加して関係を定義できるようになりました。
AI チャットエージェントによる自動ジョイン
ユーザーの自然言語クエリに対して AI エンジンが意図を解釈し、定義された関係に基づいて適切な SQL ジョインを構築して回答を生成します。
データ正規化とガバナンスの維持
パフォーマンス向上のために無理に結合(デノーマライズ)する必要がなくなり、元のデータを正規化したまま中央集権的なガバナンスを維持できます。
影響分析・編集コメントを表示
影響分析
この発表は、BI ツールにおけるデータモデリングのパラダイムシフトを意味します。従来のパフォーマンス優先で複雑な結合テーブルを作成する手法から、現代的な正規化構造を活かすアプローチへ移行することで、データガバナンスの強化と分析の柔軟性を両立させます。特に大規模組織において、データサイエンティストやエンジニアの負担を減らしながら、一般ユーザーが高度なクロスドメイン分析を行えるようになり、AI 活用におけるデータアクセスの民主化を加速させるでしょう。
編集コメント
データ準備のボトルネックを解消し、AI チャットボットが背後で複雑な SQL を処理する仕組みは、実務現場での BI ツール導入障壁を下げる画期的な進化です。特にガバナンスと柔軟性の両立という課題に対し、明確な解決策を示しています。
Amazon Quick は、構造化データと非構造化のエンタープライズコンテンツを接続し、チームが 1 つの場所で探索・分析・アクションを起こせるようにする AI 駆動型の統合インテリジェンスサービスです。Amazon Quick の内部にあるビジネスインテリジェンス (BI) 機能である Amazon Quick Sight は、インタラクティブなダッシュボード、自然言語クエリ、ピクセル単位で完璧に設計されたレポート、機械学習 (ML) に基づいた洞察、および埋め込み型分析を提供します。Quick の「トピック」は、ビジネスユーザーが自然言語で質問を行い、データから直接回答を得るために使用できるセマンティックレイヤーとして機能します。
これまで、組織はエンリッチされたデータセットを作成し、それらをトピックと 1 対 1 で関連付けることでセマンティックレイヤーをモデル化していました。また、QuickSight の作成者が分析を構築する際、1 つのビジュアライズは単一のデータセットからのみソースを取得できました。QuickSight はデータセットを単一の平坦なテーブルとして表現します。顧客のデータソースに複数のテーブルが含まれている場合、QuickSight では、顧客が QuickSight のデータ準備機能でソーステーブルを結合して単一のテーブルとして定義する必要がありました。この「1 つの巨大な非正規化テーブル」アプローチは、実行時のジョインを回避することでパフォーマンスを向上させるために当初設計されました。これは、QuickSight の初期段階で使用ケースの大多数を占めていた単純なデータセットではうまく機能していました。今日、私たちはこのモデルを進化させます。マルチデータセットトピック(パブリックプレビュー)により、1 つのトピックに最大 12 のデータセットを追加し、それらの間の関係を定義できるようになりました。Quick Chat エージェントは質問に応答する際にこれらの関係を自動的にたどります。AI エンジンはユーザーの意図を解釈し、関連する列を含むデータセットを特定し、定義された関係に基づいて適切な SQL ジョインを構築し、統合された回答を返します。データは正規化されたまま保たれ、ガバナンスは集中管理され続け、ビジネスユーザーは基盤となるスキーマを理解することなく、より豊かな回答を得ることができます。同じマルチデータセットトピックは、分析の構築やチャットエージェントを使用した質問応答の両方に使用できます。
本稿では、マルチデータセットトピックの仕組みを解説し、チャットエージェントが定義された関係性を利用してクロスデータセットクエリを生成する方法について説明します。さらに、Quick Sight における小売分析シナリオを用いたエンドツーエンドの実装デモを行います。
マルチデータセットトピックの仕組み
Quick におけるトピックは、生データとビジネスユーザーの間にあるセマンティックレイヤーです。これは、AI パワー型の自然言語クエリ (NLQ) エンジンが自然言語による質問を解釈し、精密な分析クエリに変換する際に使用するメタデータ、ビジネスルール、関係性、および文脈をカプセル化しています。
マルチデータセットトピックでは、このセマンティックレイヤーは、明示的に定義された関係性を通じて接続された複数のデータセットにまたがるようになりました。以下の図は、データソースから消費までを含むエンドツーエンドのフローを示しています。

*図 1: データソースがエンリッチされたデータセットに流入し、関係性とカスタム指示を備えたトピックで結合され、チャットと分析を通じて消費される様子を示すマルチデータセットトピックのアーキテクチャフロー。
このアーキテクチャは 4 つのレイヤーで構成されています。
1. データソース。 正規化されたデータセットは、対応するソースから Amazon QuickSight に接続されます。プライベートプレビュー期間中は、マルチデータセットトピックが SPICE(Super-fast, Parallel, In-memory Calculation Engine:超高速並列インメモリ計算エンジン)データセットをサポートしています。パブリックプレビューでは、Amazon Redshift、Amazon Athena、Amazon S3 Tables、Snowflake、および Databricks に対する直接クエリ(Direct Query)へのサポートが拡大されます。現時点では、1 つのトピック内で SPICE データセットと直接クエリデータセットを組み合わせることはできません。
2. データセットのカタログあり・なしでの拡張。 各データセットは、NLQ(自然言語クエリ)の精度を向上させる意味論的メタデータで独立して拡張されます。拡張には、列の説明(各フィールドが何を表すか)、類語(ビジネスユーザーが使用する可能性のある代替用語)、意味論的型(都市、州、通貨、日付など)、計算済みフィールド、およびフィールド除外が含まれます。NLQ エンジンはこのメタデータを使用して、自然言語の用語を正しい列にマッピングします。Quick で拡張されたデータセットを作成するか、AWS Glue(AWS Glue Data Catalog)や Databricks Unity Catalog からカタログを使用して取り込むことができます。例えば、ユーザーが「従業員数」について質問した場合、エンジンは定義された類語を適切な列に一致させます。
3. 複数データセットトピック。 トピックは、データセットを一括で統合する統一コンテナとして機能します。そこには以下が含まれます:
- データセット(プレビュー版では最大 12 個)。各データセットは独自のエンリッチメントを維持し、それぞれが独自データソースに接続されます。
- リレーションシップ。データセットペア間で定義された結合キーが、NLQ エンジンに対してテーブル間の関係を伝えます。データセット間のカラムマッピングを行う JSON ファイルをアップロードします(例えば、ファクトテーブルの外部キーがディメンションテーブルの主キーと結合するケースなど)。
- カスタム指示。ドメイン固有の用語を AI が解釈する際にガイドする、永続的な自然言語ルールです。これらは曖昧さの解消、カスタム日付ロジック(会計年度境界)、およびビジネス定義に対応します。
- 権限。オーナーはトピックを変更できますが、ビューアは質問を行い分析でトピックを使用することはできても、その構成を変更することはできません。
4. コンシュープション。 ビジネスユーザーは複数のインターフェースを通じてトピックと対話します:
- チャット。ユーザーはチャットインターフェースで自然言語の質問を行います。NLQ エンジンが質問を解析し、関連するデータセット間のカラムを特定し、適切な結合を含む SQL を構築して、回答を表またはビジュアライゼーションとして返します。
- 分析シート。作成者はトピック内の複数のデータセットからフィールドを使用して視覚化を作成します。計算フィールドは異なるデータセットにまたがるカラムを参照できます。
- クロスデータセット計算。異なるデータセットからの測定値とディメンションを組み合わせた計算フィールドを作成でき、エンジンが背後にある結合ロジックを処理します。
チャットによるクロスデータセット質問の処理プロセス
ビジネスユーザーが複数のデータセットにまたがる自然言語の質問を行った場合、NLQ エンジンは以下の手順を実行します:
1. インテント解析。 エンジンは、エンリッチメントメタデータの列名、説明、および類語と照合することで、ユーザーの用語に対応する列を特定します。関連する測定値や次元を含むデータセットがどこにあるかを決定します。
2. リレーションシップのトラバーサル。 定義された結合キーを使用して、エンジンが特定したデータセット間の最短結合パスを決定します。関係グラフに従って、ファクトテーブルを必要なディメンションテーブルに接続します。
3. SQL の生成。 エンジンは、適切な JOIN 句、集計(「合計」の場合は SUM)、および要求された次元に対する GROUP BY を含む SQL クエリを構築します。
4. 結果の提示。 回答は可視化またはテーブルとして返され、生成された SQL は検証のために利用可能です。
このプロセスは透明性があります。ユーザーは生成された SQL を表示して、正しいデータセットと結合が使用されたかを確認できます。エンリッチメントメタデータやカスタム指示が充実しているほど、エンジンは曖昧な質問をより正確に解釈します。
具体例:顧客セグメントおよび店舗地域別の売上合計の表示
次のような質問を考えてみましょう。「顧客セグメントと店舗地域別の売上合計を表示してください」。
ステップ 1 – インテント解析。 エンジンは以下のようにマッピングします:
- 「総売上」→ SUM(SALES_FACT.SALE_AMOUNT)。
- 「顧客セグメント」→ CUSTOMER_DIM.SEGMENT(同義語「segment」を介してマッチング)。
- 「店舗地域」→ STORE_DIM.REGION(同義語「region」を介してマッチング)。
ステップ 2 – リレーションシップの追跡。 エンジンは、この質問に答えるには 3 つのデータセット:SALES_FACT、CUSTOMER_DIM、STORE_DIM が必要であることを特定します。定義されたリレーションシップを使用すると:
- SALES_FACT.CUSTOMER_ID → CUSTOMER_DIM.CUSTOMER_ID。
- SALES_FACT.STORE_ID → STORE_DIM.STORE_ID。
これにより、SALES_FACT をハブとして介した 2 ホップの結合パスが構築されます。
ステップ 3 – SQL の生成。 エンジンは以下を生成します:
SELECT c.SEGMENT AS customer_segment, s.REGION AS store_region, SUM(f.SALE_AMOUNT) AS total_sales
FROM SALES_FACT f
JOIN CUSTOMER_DIM c ON f.CUSTOMER_ID = c.CUSTOMER_ID
JOIN STORE_DIM s ON f.STORE_ID = s.STORE_ID
GROUP BY c.SEGMENT, s.REGION
ORDER BY total_sales DESC
ステップ 4 – 結果の提示。 回答は、詳細をすべて含む視覚化またはテーブルとしてレンダリングされます。ユーザーは「説明」機能を使用して生成された SQL を確認できます。
フィーチャーの利用状況
マルチデータセットトピックは段階的にリリースされています。以下の表は、Quick Sight BI ビジュアル構築におけるフィーチャーの利用状況を要約したものです。Quick チャットエージェントでトピックを使用する場合は、このような制限は適用されません。
凡例: Yes = 利用可能 | No = 未利用 | Planned = 今後のリリース予定

ソリューション概要
このウォークスルーでは、AnyCompany の小売分析シナリオ向けに、マルチデータセットトピックを構築します。本シナリオでは、スタースキーマパターンでモデル化された 5 つのデータセットを使用します。
以下の図は、本実装で使用されるスタースキーマの関係パターンの例を示しています。

*図 2: SALES_FACT を中央のファクトテーブルとし、CUSTOMER_DIM、PRODUCT_DIM、STORE_DIM、DATE_DIM の各ディメンションテーブルが結合キーを介して接続されたスタースキーマデータモデルを示す図。
使用されるデータセットは以下の通りです:
- SALES_FACT: 金額、数量、日付、およびディメンションテーブルへの外部キーを含むトランザクションレベルの販売データ。
- RETURN_FACT: 数量、理由、日付を含む製品返品記録。
- CUSTOMER_DIM: 名前、セグメント、ロイヤリティティア、地理的地域などの顧客属性。
- PRODUCT_DIM: カテゴリ、ブランド、原価、サプライヤー情報を含む製品カタログ。
- STORE_DIM: 都市、州、床面積、従業員数、売上目標を含む店舗所在地。
前提条件
本記事の内容を追うには、以下の環境が整っていることを確認してください:
- Amazon Quick Enterprise Edition が有効化された AWS アカウント。
- Amazon Quick における Author または Admin ロール。
- SPICE にロードされているか、サポートされる Direct Query ソースからアクセス可能なスター型スキーマ(ファクトテーブルとディメンションテーブル)を表すデータセット。
- トピックの作成およびデータセットの管理権限。
- データモデリングの基本概念(スター型スキーマ、ファクト/ディメンションテーブル、結合キー)に関する知識。
各データセットの作成と拡張
拡張機能は、技術的な列名とビジネスユーザーが実際にデータをどのように表現するかとの間のギャップを埋めます。'TXN_DT' という列名は、「購入日」や「注文日」について尋ねるマーケティングアナリストにとっては意味をなしません。説明、類義語、セマンティックタイプを追加することで、NLQ(自然言語クエリ)エンジンに組織独自の語彙を教えることができます。この投資は、ユーザーが問うすべての質問において報われます。これは、マルチデータセットトピックを単なる機能性ではなく、正確なものとする基盤です。
各データセットに対して、以下の手順を実行してください:
- Quick コンソールの左ペインで、「Quick Sight」の下にある「Data」を選択します。
- データセットを選択し、「Edit(編集)」をクリックします。
- 「Output(出力)」タブを選択し、各列に対して説明、類義語、セマンティックタイプを追加します。

- サロゲートキー、監査タイムスタンプ、抽出・変換・ロード (ETL) フラグなどの内部または未使用フィールドを除外します。
- [保存して公開] を選択します。
以下の表は、STORE_DIM データセットに対するサンプルのエンリッチメントを示しています。
列
説明
類義語
セマンティックタイプ
STORE_ID
各小売店の一意の識別子
Store Number, Store Code, Shop ID
識別子
LOCATION
店舗が所在する都市
City, Store City, Town, Area
都市
REGION
店舗が営業を行う米国州
State, Territory, Market
州
DAILY_TARGET
米ドルでの予想日次売上高目標
Daily Goal, Daily Quota
通貨
EMPLOYEE_COUNT
店舗の従業員数
Headcount, Staff Count, Team Size
カウント
STORE_SIZE_SQFT
小売床面積(平方フィート)
Square Footage, Floor Area
測定値
OPENING_DATE
店舗が初めて開店した日付
Launch Date, Start Date
日付
各データセットに対してこのプロセスを繰り返してください。詳細な手順については、Amazon QuickSight ユーザーガイドの データセットのエンリッチメント を参照してください。
複数のデータセットを組み合わせたトピックの作成
データセットをエンリッチメントした上で、それらを単一のセマンティックレイヤーに統合するトピックを作成します。
- Quick コンソールの左ペインから、Quick Sight の「データ」を選択します。
- 「トピック」タブに移動し、「トピックの作成」を選択します。
- トピック名(例:"Retail Sales Analytics")と説明を入力します。
- 「データの追加」を選択します。
- 関連するすべてのデータセット(SALES_FACT、RETURN_FACT、CUSTOMER_DIM、PRODUCT_DIM、STORE_DIM)を選択します。
- 「作成」を選択します。


データセット間の関係性の定義
関係性は、NLQ エンジン(自然言語クエリエンジン)が複数のテーブルにまたがる質問に対してデータセットを結合する方法を示します。データセットペア間の結合キーを指定する JSON 設定ファイルを使用して、関係性を定義します。
- トピックエディターで「関係性」タブに移動します。
- 「ファイルをアップロード」を選択します。
- 関係性を定義する JSON ファイルをアップロードします(以下の例を参照)。
- アップロード後、結合を選択して関係性のマッピングを確認します。
- 編集するには「編集」を選択し、結合列を更新してから「保存」を選択します。




以下の JSON は、関係ファイルのスター型スキーマ(star schema)構成を示しています:
{
"datasetPairs": [
{
"datasetLeft": { "datasetName": "SALES_FACT", "joinColumnNames": ["CUSTOMER_ID"] },
"datasetRight": { "datasetName": "CUSTOMER_DIM", "joinColumnNames": ["CUSTOMER_ID"] }
},
{
"datasetLeft": { "datasetName": "SALES_FACT", "joinColumnNames": ["PRODUCT_ID"] },
"datasetRight": { "datasetName": "PRODUCT_DIM", "joinColumnNames": ["PRODUCT_ID"] }
},
{
"datasetLeft": { "datasetName": "SALES_FACT", "joinColumnNames": ["STORE_ID"] },
"datasetRight": { "datasetName": "STORE_DIM", "joinColumnNames": ["STORE_ID"] }
},
{
"datasetLeft": { "datasetName": "RETURN_FACT", "joinColumnNames": ["PRODUCT_ID"] },
"datasetRight": { "datasetName": "PRODUCT_DIM", "joinColumnNames": ["PRODUCT_ID"] }
}
]
}
ベストプラクティス: データセットは、1 つ以上の中央のファクトテーブル(fact table)を共有されたディメンションテーブル(dimension table)に結合したスター型スキーマでモデル化してください。循環結合や多対多の関係は避けてください。
カスタム指示の追加
カスタム指示は、NLQ エンジンがすべての質問に対して適用する永続的なビジネスルールとして機能します。これらがなければ、エンジンは用語を解釈する際に
原文を表示
Amazon Quick is an AI-powered unified intelligence service that connects structured data and unstructured enterprise content so teams can explore, analyze, and act from one place. Amazon Quick Sight, the business intelligence (BI) capability within Amazon Quick, delivers interactive dashboards, natural language querying, pixel-perfect reports, machine learning (ML)-driven insights, and embedded analytics. Topics in Quick function as the semantic layer that business users can use to ask questions in natural language and get answers directly from their data.
Until now, organizations modeled their semantic layers by creating enriched datasets and associating them one-to-one with topics. Also, when Quick Sight authors build analysis, one visual could be sourced from only one dataset. Quick Sight represents a dataset as a single flattened table. If a customer’s data source contains multiple tables, Quick Sight required customers to define the dataset by joining the source tables into a single table in Quick Sight data preparation. This one big denormalized table approach was initially designed to provide better performance by avoiding run-time joins. It worked well for straightforward datasets, which made up the majority of use cases during the early stages of Quick Sight. Today, we’re evolving this model. With multi-dataset Topics (public preview), you can now add up to 12 datasets to a single topic and define relationships between them. The Quick chat agent automatically traverses those relationships when answering questions. The AI engine interprets user intent, identifies which datasets contain the relevant columns, constructs the appropriate SQL joins based on your defined relationships, and returns a unified answer. Your data stays normalized, your governance stays centralized, and your business users get richer answers without understanding the underlying schema. The same multi-dataset topic can be used for building the analysis or answering questions using the chat agent.
In this post, we walk through how multi-dataset Topics work, explain how the chat agent uses defined relationships to generate cross-dataset queries, and demonstrate an end-to-end implementation using a retail analytics scenario in Quick Sight.
How multi-dataset Topics work
A Topic in Quick is the semantic layer between raw data and business users. It encapsulates the metadata, business rules, relationships, and context that the AI-powered natural language query (NLQ) engine uses to interpret natural language questions and translate them into precise analytical queries.
With multi-dataset Topics, this semantic layer now spans multiple datasets connected through explicitly defined relationships. The following diagram illustrates the end-to-end flow from data sources through to consumption.

*Figure 1: Multi-dataset Topics architecture flow showing how data sources feed into enriched datasets, which are combined in a topic with relationships and custom instructions, then consumed through chat and analysis.*
The architecture consists of four layers:
1. Data sources. Your normalized datasets connect to Quick Sight from supported sources. During private preview, multi-dataset Topics support SPICE (Super-fast, Parallel, In-memory Calculation Engine) datasets. Public preview expands support to Direct Query against Amazon Redshift, Amazon Athena, Amazon S3 Tables, Snowflake, and Databricks. You can’t combine SPICE and Direct Query datasets within a single topic as of today.
2. Dataset enrichment with or without catalogs. Each dataset is independently enriched with semantic metadata that improves NLQ accuracy. Enrichment includes column descriptions (explaining what each field represents), synonyms (alternative terms business users might use), semantic types (City, State, Currency, Date), calculated fields, and field exclusions. The NLQ engine uses this metadata to map natural language terms to the correct columns. You can now create enriched datasets in Quick or bring them in using catalogs from AWS Glue (AWS Glue Data Catalog) and Databricks Unity Catalog. For example, when a user asks about “headcount,” the engine matches a defined synonym to the appropriate column.
3. Multi-dataset topic. The topic serves as the unified container that brings datasets together. It holds:
- Datasets (up to 12 in preview). Each dataset maintains its own enrichment and connects to its own data source.
- Relationships. Join keys defined between dataset pairs tell the NLQ engine how tables relate. You upload a JSON file that maps columns between datasets (for example, a fact table’s foreign key joins to a dimension table’s primary key).
- Custom instructions. Persistent natural language rules that guide the AI in interpreting domain-specific terminology. These handle disambiguation, custom date logic (fiscal year boundaries), and business definitions.
- Permissions. Owners can modify the topic. Viewers can ask questions and use the topic in analysis but can’t change its configuration.
4. Consumption. Business users interact with the topic through multiple surfaces:
- Chat. Users ask natural language questions in the chat interface. The NLQ engine parses the question, identifies relevant columns across datasets, constructs SQL with appropriate joins, and returns the answer as a table or visualization.
- Analysis sheets. Authors build visuals using fields from multiple datasets within the topic. Calculated fields can reference columns spanning different datasets.
- Cross-dataset calculations. You can create calculated fields that combine measures and dimensions from different datasets, and the engine handles the underlying join logic.
How the chat processes cross-dataset questions
When a business user asks a natural language question that spans multiple datasets, the NLQ engine performs the following steps:
1. Intent parsing. The engine identifies which columns map to the user’s terms by matching against column names, descriptions, and synonyms from the enrichment metadata. It determines which datasets contain the relevant measures and dimensions.
2. Relationship traversal. Using the defined join keys, the engine determines the shortest join path between the identified datasets. It follows the relationship graph to connect fact tables to the necessary dimension tables.
3. SQL generation. The engine constructs a SQL query with the appropriate JOIN clauses, aggregation (SUM for “total”), and GROUP BY for the requested dimensions.
4. Result presentation. The answer is returned as a visualization or table, with the generated SQL available for inspection.
This process is transparent. Users can view the generated SQL to verify that the correct datasets and joins were used. The richer your enrichment metadata and custom instructions, the more accurately the engine interprets ambiguous questions.
Worked example: Show total sales by customer segment and store region
Consider the question: “Show total sales by customer segment and store region.”
Step 1 – Intent parsing. The engine maps:
- “total sales” → SUM(SALES_FACT.SALE_AMOUNT).
- “customer segment” → CUSTOMER_DIM.SEGMENT (matched via synonym “segment”).
- “store region” → STORE_DIM.REGION (matched via synonym “region”).
Step 2 – Relationship traversal. The engine identifies that answering this question requires three datasets: SALES_FACT, CUSTOMER_DIM, and STORE_DIM. Using the defined relationships:
- SALES_FACT.CUSTOMER_ID → CUSTOMER_DIM.CUSTOMER_ID.
- SALES_FACT.STORE_ID → STORE_DIM.STORE_ID.
It constructs a two-hop join path through SALES_FACT as the hub.
Step 3 – SQL generation. The engine produces:
SELECT c.SEGMENT AS customer_segment, s.REGION AS store_region, SUM(f.SALE_AMOUNT) AS total_sales
FROM SALES_FACT f
JOIN CUSTOMER_DIM c ON f.CUSTOMER_ID = c.CUSTOMER_ID
JOIN STORE_DIM s ON f.STORE_ID = s.STORE_ID
GROUP BY c.SEGMENT, s.REGION
ORDER BY total_sales DESCStep 4 – Result presentation. The answer renders a visual or table with all details. The user can inspect the generated SQL using the Explanation feature.
Feature availability
Multi-dataset Topics are launching progressively. The following table summarizes feature availability for Quick Sight BI visual building. To use a Topic in Quick chat agent, no such limitations apply.
Legend: Yes = Available | No = Not Available | Planned = Planned for future release

Solution overview
For this walkthrough, we build a multi-dataset topic for a retail analytics scenario at AnyCompany. The scenario uses five datasets modeled in a star schema pattern.
The following diagram illustrates the star schema relationship pattern used in this implementation.

*Figure 2: Star schema data model showing SALES_FACT as the central fact table, with dimension tables CUSTOMER_DIM, PRODUCT_DIM, STORE_DIM, and DATE_DIM connected via join keys.*
The datasets include:
- SALES_FACT. Transaction-level sales data including amounts, quantities, dates, and foreign keys to dimension tables.
- RETURN_FACT. Product return records with quantities, reasons, and dates.
- CUSTOMER_DIM. Customer attributes including name, segment, loyalty tier, and geographic region.
- PRODUCT_DIM. Product catalog with category, brand, cost, and supplier information.
- STORE_DIM. Store locations with city, state, square footage, employee count, and revenue targets.
Prerequisites
To follow along with this post, confirm you have the following in place:
- An AWS account with Amazon Quick Enterprise Edition enabled.
- Author or Admin role in Amazon Quick.
- Datasets representing a star schema (fact tables and dimension tables), loaded into SPICE or accessible through a supported Direct Query source.
- Permissions to create topics and manage datasets.
- Familiarity with basic data modeling concepts (star schema, fact/dimension tables, join keys).
Create and enrich each dataset
Enrichment bridges the gap between technical column names and how business users actually talk about data. A column named TXN_DT means nothing to a marketing analyst who asks about ‘purchase date’ or ‘order date’. By adding descriptions, synonyms, and semantic types, you teach the NLQ engine your organization’s vocabulary. This investment pays off across every question users ask. It is the foundation that makes multi-dataset Topics accurate rather than only functional.
For each dataset, complete the following:
- From the Quick console’s left pane, under Quick Sight choose Data.
- Select a dataset and choose Edit.
- Select the output tab, and for each column, add descriptions, synonyms, and semantic types.

- Exclude internal or unused fields such as surrogate keys, audit timestamps, and extract, transform, and load (ETL) flags.
- Choose Save and publish.
The following table shows sample enrichment for the STORE_DIM dataset.
Column
Description
Synonyms
Semantic Type
STORE_ID
Unique identifier for each retail store
Store Number, Store Code, Shop ID
Identifier
LOCATION
City where the store is located
City, Store City, Town, Area
City
REGION
US state where the store operates
State, Territory, Market
State
DAILY_TARGET
Expected daily sales revenue target in USD
Daily Goal, Daily Quota
Currency
EMPLOYEE_COUNT
Number of employees at the store
Headcount, Staff Count, Team Size
Count
STORE_SIZE_SQFT
Retail floor area in square feet
Square Footage, Floor Area
Measurement
OPENING_DATE
Date the store first opened
Launch Date, Start Date
Date
Repeat this process for each dataset. For detailed instructions, refer to Dataset enrichment in the Amazon Quick Sight User Guide.
Create a topic with multiple datasets
With your datasets enriched, create a topic that combines them into a single semantic layer.
- From the Quick console’s left pane, under Quick Sight choose Data.
- Navigate to the Topics tab and choose Create topic.
- Enter a topic name (for example, “Retail Sales Analytics”) and a description.
- Choose Add dataset.
- Select all relevant datasets (SALES_FACT, RETURN_FACT, CUSTOMER_DIM, PRODUCT_DIM, STORE_DIM).
- Choose Create.


Define relationships between datasets
Relationships tell the NLQ engine how to join datasets when a question spans multiple tables. You define relationships using a JSON configuration file that specifies join keys between dataset pairs.
- In the topic editor, navigate to the Relationships tab.
- Choose Upload file.
- Upload a JSON file defining your relationships (refer to the following example).
- After uploading, select a join to verify the relationship mapping.
- To edit, choose Edit, update join columns, and choose Save.




The following JSON shows a star schema configuration of the relationship file:
{
"datasetPairs": [
{
"datasetLeft": { "datasetName": "SALES_FACT", "joinColumnNames": ["CUSTOMER_ID"] },
"datasetRight": { "datasetName": "CUSTOMER_DIM", "joinColumnNames": ["CUSTOMER_ID"] }
},
{
"datasetLeft": { "datasetName": "SALES_FACT", "joinColumnNames": ["PRODUCT_ID"] },
"datasetRight": { "datasetName": "PRODUCT_DIM", "joinColumnNames": ["PRODUCT_ID"] }
},
{
"datasetLeft": { "datasetName": "SALES_FACT", "joinColumnNames": ["STORE_ID"] },
"datasetRight": { "datasetName": "STORE_DIM", "joinColumnNames": ["STORE_ID"] }
},
{
"datasetLeft": { "datasetName": "RETURN_FACT", "joinColumnNames": ["PRODUCT_ID"] },
"datasetRight": { "datasetName": "PRODUCT_DIM", "joinColumnNames": ["PRODUCT_ID"] }
}
]
}Best practice: Model your datasets in a star schema with one or more central fact tables joined to shared dimension tables. Avoid circular joins and many-to-many relationships.
Add custom instructions
Custom instructions act as persistent business rules that the NLQ engine applies to every question. Without them, the engine interprets terms
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み