Amazon Quick Chat 多資料集主題最佳實踐
本文為資料架構師、BI工程師和分析工程師提供了使用Amazon Quick Sight多資料集主題進行自然語言聊天探索的最佳實踐。重點介紹瞭如何透過語義指導層(包括資料集和主題級別的自定義指令、同義詞和欄位描述)使生成式AI引擎能夠自動編寫SQL,從而實現跨資料集的外連線、聯合、子查詢等複雜查詢,無需預先定義關係。文章還對比了定義關係與AI生成SQL兩種模式,給出了八個具體最佳實踐、反模式和示例。
Amazon Quick Sight的多資料集主題功能允許分析團隊將多個資料集引入單個主題,為自然語言驅動的資料探索開闢了新路徑。傳統上,跨表查詢需要資料工程師預先連線表並交付單一資料集。現在,Quick Sight提供了兩種方式:定義顯式關係鍵(在另一篇博文中討論)或為生成式AI引擎配備足夠的語義上下文,使其自行編寫SQL。本文聚焦後一種方式——聊天驅動的AI生成SQL。
當您為主題配置聊天功能時,無需提前定義關係。相反,您編寫一個包含資料集級自定義指令、主題級指令、欄位同義詞和欄位描述的語義層。AI在查詢時利用該上下文生成上下文感知的SQL。這使得外連線、聯合、子查詢、自連線、跨粒度比較和條件連線邏輯都變得觸手可及,且對關係圖沒有結構限制。
本文面向構建或最佳化Quick Sight主題以實現自然語言聊天探索的資料架構師、BI工程師和分析工程師。您將瞭解:聊天驅動的SQL生成與定義關係主題的差異;用於構建所有後設資料的層次框架“語義指導棧”;八個具體的最佳實踐及其示例和反模式;處理複雜模式(外連線、多對多、遞迴層次、角色扮演維度和跨粒度比較)的技術;選擇定義關係、純語義指導或混合方法的決策框架;以及一個完整的端到端零售分析示例。
聊天與定義關係的區別
在深入最佳實踐之前,理解Quick Sight兩種多資料集模式的基本架構區別很有幫助。當您為主題定義顯式關係時,Quick Sight構建一個邏輯連線圖,並在查詢時執行內連線。該圖必須是有向無環圖(DAG),最多支援12個資料集,產生確定性的結果。這適用於需要精確控制表組合方式的受控報表場景。
當使用者透過聊天提問時,Quick Sight的生成式AI讀取定義的關係或主題的語義層(指令、描述和同義詞),並生成SQL來回答問題。AI決定查詢哪些資料集、使用哪些列、合適的連線型別以及如何聚合結果。沒有預連線圖,AI基於意圖而非結構操作。
定義關係是護欄:它們防止嘗試不正確的連線。語義後設資料是指導:它引導AI生成正確、上下文合適的SQL。兩者都有價值,正確選擇取決於場景。參見後文的決策框架部分。
定義關係和語義指導並非互斥。混合主題可以為核心事實到維度的連線定義關係,同時依賴自定義指令處理預定義圖之外的探索模式。
語義指導棧
驅動Quick Chat的AI引擎在生成SQL時依賴七層後設資料,共同構成語義指導棧。理解每一層是編寫有效後設資料的基礎。
- 第1層:資料集輸出;資料集——資料集級指令:定義每個資料集的粒度、用途、鍵和業務規則。
- 第2層:主題——主題級指令:定義跨資料集邏輯、消歧規則和預設連線行為。
- 第3層:資料集輸出;欄位——同義詞:將業務詞彙對映到技術欄位名。
- 第4層:資料集輸出;欄位——欄位描述:解釋列語義、單位、空值性和有效範圍。
- 第6層:資料集轉換——列排除:移除噪聲,如內部鍵、ETL時間戳和廢棄欄位。
- 第7層:資料集轉換——計算欄位和命名過濾器:預構建AI可直接引用的通用業務指標和分段定義。
每一層減少AI對您資料的不確定性。各層填充得越精確,合理解釋SQL的空間就越窄,生成結果越準確。稀疏描述的多資料集主題會產生不可靠結果,原因並非AI能力不足,而是缺乏做出正確選擇所需的資訊。
最佳實踐1:編寫資料集級指令作為資料字典
資料集級自定義指令是AI與每個表的首次接觸點,併為涉及該資料集的每個問題設定上下文。要包含:表用途和粒度、主鍵、外部索引鍵提示、業務規則、已知邊界情況和聚合規則。
例如,對於SALES_FACT資料集,好的指令應明確:“SALES_FACT包含每個訂單行專案一行。主鍵:order_line_id。粒度:一個行專案對應一個訂單上的一個產品。關鍵列:order_id連結到ORDER_HEADER_DIM.order_id等。收入=數量*單價-折扣金額。始終SUM收入。排除order_status='VOID'的行。表每晚UTC 02:00重新整理。”
避免的反模式:過於泛泛的指令、嵌入原始SQL片段、相互矛盾的規則。
最佳實踐2:編寫主題級指令處理跨資料集邏輯
主題級指令告訴AI表之間如何關聯、術語歧義時哪個資料集優先以及如何處理跨資料集計算。包括:概念關係、消歧規則、預設連線行為、多事實解析、跨域業務定義和層次導航。
例如,零售分析主題的指令塊可指定:“SALES_FACT和RETURNS_FACT都透過customer_id連結到CUSTOMER_DIM,透過product_id連結到PRODUCT_DIM。當使用者詢問‘銷售’時,使用SALES_FACT;詢問‘退貨’或‘退款’時,使用RETURNS_FACT;對於‘淨銷售額’,連線兩者。優先使用事實表LEFT JOIN維度表,以避免靜默丟失無匹配維度記錄的事實。”
文章還提供了更多最佳實踐,包括使用同義詞、欄位描述、列排除、計算欄位、處理複雜模式以及決策框架,並附有完整的零售分析主題端到端示例。