廣告位招商中 歡迎洽談

如何將 Snowflake 與 Google BigQuery 連接至 Dust 實現資料倉儲自然語言 SQL 查詢

365Finds Editorial
已收錄 11,430 篇 Wiki 文章

讓你的 AI 用上 365 Wiki

複製下方的提示詞,貼給你常用的 AI,然後直接提問。

下載完整版 Skill

先用提示詞體驗;經常使用時,安裝完整版 365Wiki Skill,以後無需重複複製。沒有常用 AI?Gemini、Microsoft Copilot 等網頁版也可以。

365Wiki Skill

企業資料分析團隊與技術維運團隊經常面臨一項協作瓶頸:業務部門需要大量的日常指標與即時報表支援,然而傳統的自服務 BI 工具操作門檻偏高,導致分析師的工單積壓嚴重。然而,常見的非結構化文件知識庫與檢索增強生成(RAG)方案在面對此類場景時完全無法奏效——語意搜尋依賴文字向量相似度,根本無法處理跨越數百萬行資料的數值加總、維度分組聚合、動態篩選或留存率統計。

Dust 透過其結構化資料整合能力與 Table queries(資料表查詢) 功能徹底突破了這個局限。Dust 無需搬遷或重複儲存企業資料倉儲中的原始數據,而是直接與 Snowflake 和 Google BigQuery 建立安全連線,提取並映射結構描述(Table Schema)中繼資料,驅動 AI 智能體直接生成受控的唯讀 SQL 查詢,並將運算結果轉譯為清晰易懂的自然語言業務洞察與動態圖表。

本文將深入解析 Dust 連接 Snowflake 與 Google BigQuery 的底層技術架構、安全性授權、跨表關聯指引與 Prompt 最佳實踐,協助資料團隊快速部署企業級資料倉儲自然語言查詢智能體。


核心架構:Dust 如何在不儲存原始數據的前提下查詢資料倉儲

將企業核心資料倉儲介接至第三方 AI 平台時,資訊安全與資料所有權往往是企業架構師的首要考量。Dust 採用「僅限中繼資料(Metadata-Only)」的架構設計:

  1. 零原始數據同步:Dust 不會在自家伺服器或向量資料庫中同步、鏡像或持久化 Snowflake 或 BigQuery 中的實際資料列。平台僅讀取並索引結構中繼資料:資料庫名稱、資料集識別碼、結構描述名稱(Schema)、資料表名稱、欄位名稱、資料型態以及倉儲內設定的原生欄位註解。
  2. Schema 上下文注入:當業務同仁提出定量問題(例如「上一季各區域的平均客單價是多少?」)時,智能體會參照當前已掛載的資料表結構定義,識別相關實體與指標欄位。
  3. 受控 SQL 生成:大型語言模型嚴格遵循目標資料來源的方言語法(Snowflake SQL 或 GoogleSQL)撰寫精確的 SQL 查詢語句。
  4. 直連唯讀執行:Dust 透過加密連線,使用專用的唯讀憑證向目標倉儲提交查詢工作並擷取計算結果。
  5. 洞察轉譯與稽核透明度:智能體解析回傳的表格資料,生成業務總結或視覺化圖表。同時,使用者可隨時點擊對話視窗中的 Tools inspection(工具檢查) 按鈕,檢視完整的 SQL 語法、執行耗時與原始回應數據,確保所有計算過程公開透明且可被檢驗。

方案一:連接 Snowflake 至 Dust

針對 Snowflake,Dust 提供兩種整合模式:Snowflake Connection(受管資料倉儲連線) 與 Snowflake Tool(OAuth 工具模式)。建置受控的企業自服務指標問答智能體時,資料團隊通常優先採用前者。

1. Snowflake 端安全性設定與基礎設施佈署

依據最小權限原則,在 Snowflake 中建立專屬的運算倉儲、服務使用者帳號與存取角色:

-- 步驟 1:建立專屬存取角色
CREATE ROLE dust_role;

-- 步驟 2:建立專用運算倉儲,設定自動暫停以節省成本
CREATE WAREHOUSE dust_warehouse
WITH WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 300
AUTO_RESUME = TRUE;

GRANT USAGE ON WAREHOUSE dust_warehouse TO ROLE dust_role;

驗證方式選擇:金鑰組認證 vs. 密碼認證

由於 Snowflake 官方正逐步棄用純密碼連線,生產環境強烈建議全面導入 RSA 金鑰組認證(Key Pair Authentication)。

設定 RSA 金鑰組認證(推薦):

  1. 產生 2048 位元 RSA 私密金鑰與公開金鑰:
    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out dust_rsa_key.p8 -nocrypt
    openssl rsa -in dust_rsa_key.p8 -pubout -out dust_rsa_key.pub
    
  2. 擷取去除開頭、結尾標籤與換行符號的純公開金鑰字串:
    cat dust_rsa_key.pub | grep -v "BEGIN PUBLIC KEY" | grep -v "END PUBLIC KEY" | tr -d '\n'
    
  3. 建立綁定公開金鑰的 Snowflake 服務帳號:
    CREATE USER dust_user
      DEFAULT_ROLE = dust_role
      RSA_PUBLIC_KEY = '<貼上整理後的公開金鑰字串>';
    
    GRANT ROLE dust_role TO USER dust_user;
    

替代方案(帳號密碼認證):

CREATE USER dust_user
  PASSWORD = 'YourStrongPasswordHere'
  DEFAULT_ROLE = dust_role;

GRANT ROLE dust_role TO USER dust_user;

2. 網路策略加入允許清單與唯讀權限配置

若 Snowflake 帳戶已啟用網路原則(Network Policy),請將 Dust 的靜態輸出 IP 位址加入允許清單:

接著配置中繼資料與資料表讀取權限。Dust 連接器會主動審查角色權限,嚴格拒絕包含任何寫入或修改權限(如 INSERT、UPDATE、DELETE、MERGE)的角色:

-- 授予資料庫與 Schema 的 USAGE 權限
GRANT USAGE ON DATABASE analytics_dw TO ROLE dust_role;
GRANT USAGE ON SCHEMA analytics_dw.marts TO ROLE dust_role;

-- 授予實體資料表的 SELECT 查詢權限
GRANT SELECT ON ALL TABLES IN SCHEMA analytics_dw.marts TO ROLE dust_role;
GRANT SELECT ON FUTURE TABLES IN SCHEMA analytics_dw.marts TO ROLE dust_role;

重要提醒:受管型 Snowflake Connection 僅針對實體資料表(Tables)生效,會主動忽略一般檢視表(Views)與具體化檢視表(Materialized Views)。若業務架構必須直接查詢檢視表,請改採基於 OAuth 的 Snowflake Tool。

3. 在 Dust 後台啟用連線

  1. 登入 Dust,前往 Spaces > Connections,點選 Add Connections 並選擇 Snowflake。
  2. 選擇 Key Pair Authentication(或密碼認證)。
  3. 依序填入連線參數:
    • Account Identifier:Snowflake 帳戶識別碼(例如 xy12345.us-east-1 或 orgname-accountname)。
    • Role:dust_role。
    • Warehouse:dust_warehouse。
    • Username:dust_user。
    • Private Key:完整貼上包含標頭與標尾的 PEM 格式私密金鑰內容。
  4. 勾選欲授權給 Dust 智能體使用的資料庫、Schema 與實體資料表。

方案二:連接 Google BigQuery 至 Dust

Google BigQuery 透過 Google Cloud Platform(GCP)的 IAM 服務帳號金鑰與 Dust 連接,原生支援資料表欄位註解自動導入與地理區域隔離。

1. GCP 服務帳號與權限配置

  1. 登入 Google Cloud Console,進入 IAM 與管理 > 服務帳戶。
  2. 點選 建立服務帳戶,命名為 dust-warehouse-sa。
  3. 指派至少兩項必要的唯讀與查詢執行 IAM 角色:
    • roles/bigquery.user:允許 Dust 提交查詢工作(Query Jobs)、列出資料集並取用運算配額。
    • roles/bigquery.dataViewer:允許 Dust 檢視資料集架構並讀取資料表內容。
  4. 進入該服務帳號的 金鑰 分頁,點選 新增金鑰 > 建立新的金鑰 > JSON。
  5. 下載並妥善保管產生的 JSON 憑證檔案。

2. 在 Dust 中註冊 BigQuery 資源

  1. 前往 Dust 的 Spaces > Connections > Add Connections,選擇 BigQuery。
  2. 將下載的 JSON 檔案完整內容貼入輸入方塊中。
  3. 選擇 BigQuery 地理區域(Location):BigQuery 在底層架構上嚴格禁止跨區域關聯查詢(例如無法在同一條 SQL 中 JOIN 位於 EU 與 US 的資料集)。必須指定此連線對應的區域(如 US、EU 或特定區域),且所有選取的資料集必須位於同一地理位置。
  4. 選取欲公開給智能體查詢的資料集與資料表。
  5. 啟用「Use BigQuery descriptions」選項:勾選此設定後,Dust 會自動將 BigQuery 結構中維護的資料表說明與欄位註解同步為智能體的提示上下文,大幅減少手動維護欄位說明的成本。

方案比較:Snowflake Connection 與 Snowflake Tool 如何抉擇?

面對 Snowflake,團隊在評估架構時需釐清兩種連線方式的差異:

評估維度Snowflake Connection(受管連線)Snowflake Tool(OAuth 工具模式)
主要定位企業團隊受控報表與核心指標問答分析師動態結構探索與即席檢視表查詢
驗證機制集中式服務帳號(金鑰組或密碼)個人用戶 OAuth(遵循個人權限)或工作區統一 OAuth
支援物件僅限實體資料表(不支援任何檢視表)支援實體資料表、一般檢視表與具體化檢視表
資料回傳上限單次查詢最高支援 25,000 列單次查詢執行上限為 1,000 列
Schema 探索由管理員在 Space 設定中預先指定並發布智能體於執行階段動態呼叫 list_schemas、describe_table
多語句 SQL 防護嚴格阻斷多分號語句嚴格阻斷多分號語句

設定與引導企業級自然語言查詢智能體

資料倉儲成功連接至 Dust 後,資料團隊可建立專屬商業分析智能體(例如 @經營數據助手),讓非技術同仁透過口語化對話取得報表數據。

1. 為智能體掛載 Query Tables 工具

在 Dust 智能體編輯介面中:

  1. 進入 Agent Builder > Instructions & Tools。
  2. 於 Action & Data sources 下點選 Add a tool,選擇 Query Tables。
  3. 勾選欲開放的 Snowflake 或 BigQuery 核心資料表(例如 marts.fct_daily_orders)。

2. 在 Prompt 中明確定義跨表關聯與業務指標邏輯

雖然模型能辨識基礎欄位型態,但在處理多表關聯(JOIN)與特定指標定義時,明確的指令指引能杜絕模型產生幻覺:

你負責解答業務團隊關於營運數據的提問。你已被授權存取以下資料倉儲表格:
- fct_orders:記錄歷史訂單交易筆數、金額與履約狀態。
- dim_customers:記錄客戶等級、註冊日期與所屬企業輪廓。

SQL 查詢生成與回答準則:
1. 跨表查詢時,必須使用 dim_customers.customer_id = fct_orders.customer_id 進行關聯。
2. 計算實質營業額時,除非使用者特別要求統計包含未付款的總流水,否則一律篩選 `order_status = 'COMPLETED'`。
3. 避免撰寫 SELECT *,僅選取回答問題所必需的欄位以提升效能。
4. 依時間趨勢分組時,一律將 UTC 時間戳記轉換為標準月份或季度維度。
5. 在輸出表格數據之餘,附帶精簡的自然語言業務結論,指出關鍵趨勢或異常波動。

3. 查詢歷程審查與可解釋性(Tools Inspection)

當使用者提出問題時,Dust 會自動載入結構定義、編譯 SQL、送交資料倉儲執行並組織答案。團隊成員可隨時點擊回覆訊息上的 Tools inspection 按鈕,檢視生成的原始 SQL 語法、執行延遲與底層回傳的數據片段,消除對 AI 計算結果的黑箱疑慮。


資料與技術營運團隊的落地建議

  1. 優先對接標準化資料市集(Marts):建議將 Dust 指向經過 dbt 轉換後的 Gold 層寬表,而非原始 ODS/Bronze 接入層。結構清晰、命名規範的實體表能大幅提升 SQL 一次編譯的成功率。
  2. 在資料倉儲層落實欄位註解(COMMENT):善用 BigQuery 與 Snowflake 的 DDL 註解功能。完善的欄位註解能讓智能體自然理解業務縮寫(如 mrr、gmv、ltv),無需在 Prompt 中反覆堆疊重複說明。
  3. 嚴格管控運算成本:
    • Snowflake 側配置專屬 XSMALL 規格倉儲,並將 AUTO_SUSPEND 縮短至 300 秒以內;
    • BigQuery 側在專用服務帳號上設定專案層級單次查詢掃描位元組上限,防止大表全表掃描產生意外帳單。
  4. 混合編排非結構化與結構化數據:智能體可同時配置 Query Tables 工具與基於非結構化文件的 Search Data Source(RAG)工具。當分析營收變動的量化數據時,智能體能同時檢索 Google Drive 或 Notion 中的檢討報告,提供兼具數據與成因的完整業務洞察。

參考資料