1. 簡介
從資料中取得洞察資料通常需要花費大量時間、心力,並具備深厚的 SQL 專業知識。在本程式碼實驗室中,您將探索 BigQuery 的代理程式目錄,這個新平台可透過對話式資料代理程式,即時提供 AI 輔助的洞察資訊。
您將建立精選資料代理程式,進一步瞭解如何將簡單的文字轉換為 SQL。您將瞭解如何為代理程式提供業務脈絡、系統指令和已驗證的查詢,確保結果準確度。最後,您將發布這個代理,供貴機構的其他使用者使用。
必要條件
- 對 Google Cloud 有基本瞭解
課程內容
- 如何瀏覽 BigQuery 代理程式目錄
- 如何建立自訂代理程式及定義知識來源
- 如何使用 Gemini 生成語意中繼資料
- 如何新增系統指令和已驗證的查詢,引導代理程式
- 如何發布及分享代理程式
軟硬體需求
- Google Cloud 帳戶和 Google Cloud 專案
- BigQuery 和 SQL 的基本知識
- 網路瀏覽器,例如 Chrome
2. 設定和需求條件
選擇專案
- 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶。



- 專案名稱是這個專案參與者的顯示名稱。這是 Google API 未使用的字元字串。你隨時可以更新。
- 專案 ID 在所有 Google Cloud 專案中都是不重複的,而且設定後即無法變更。Cloud 控制台會自動產生專屬字串,通常您不需要在意該字串為何。在大多數程式碼研究室中,您需要參照專案 ID (通常標示為
PROJECT_ID)。如果您不喜歡產生的 ID,可以產生另一個隨機 ID。你也可以嘗試使用自己的名稱,看看是否可用。完成這個步驟後就無法變更,且專案期間會維持不變。 - 請注意,有些 API 會使用第三個值,也就是「專案編號」。如要進一步瞭解這三種值,請參閱說明文件。
- 接著,您需要在 Cloud 控制台中啟用帳單,才能使用 Cloud 資源/API。完成這個程式碼研究室的費用不高,甚至可能完全免費。如要關閉資源,避免在本教學課程結束後繼續產生費用,請刪除您建立的資源或專案。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。
3. 事前準備
授予自己必要角色
前往專案的 IAM 頁面,然後授予自己 Gemini Data Analytics 資料代理擁有者角色:
這個角色授予的權限可讓您建立、編輯、共用及刪除專案中的所有資料代理程式。
啟用必要的 API
使用側邊導覽選單或頁面頂端的搜尋選單,前往「BigQuery」>「Agents」。
按一下「啟用 Data Analytics API with Gemini」:

同時啟用 Gemini in BigQuery API 和 Gemini for Google Cloud API:

現在應該會看到新的代理程式頁面:

4. 建立代理程式
我們將使用 Google 搜尋趨勢國際公開資料集,建立第一個資料代理程式。這個資料集有助於瞭解全球熱門搜尋字詞,以及這些興趣與過去的比較。
首先,請為代理命名並提供簡要說明。這段說明僅供其他使用者瞭解代理的用途。
代理程式名稱
Google Trends Agent
代理說明
Data agent for the Google Trends International Top Terms public dataset
知識來源
接著新增知識來源。知識來源是代理可用來回答問題的 BigQuery 資料表、檢視區塊或 UDF。
為簡化流程,請在本範例中只新增一個表格。不過請注意,每個代理程式最多可新增 50 個知識來源,以處理更複雜的資料情境。
在搜尋框中輸入下表,勾選方塊,然後按一下「新增」:
bigquery-public-data.google_trends.international_top_terms

結構化背景資訊
如要提高資料代理的準確度,請在資料表和資料欄中加入結構化脈絡。按一下「自訂」Customise:

Gemini 會自動生成說明建議。按一下「資料表說明」旁的「接受」:

如要將說明套用至所有欄,請勾選「選取所有列」,然後按一下「接受建議」:

按一下頁面底部的「更新」,儲存變更並返回代理程式編輯器。
操作說明
您可以在代理程式指令對話方塊中,為代理程式提供額外指引,協助解讀及查詢資料來源。包括:
- 同義詞:關鍵欄位的替代字詞。
- 重要欄位:分析作業中最重要的欄位。
- 排除欄位:資料代理應避免使用的欄位。
- 篩選和分組:代理在篩選及分類資料時應使用的欄位。
- 彙整關係:兩個以上的資料表如何依據共通欄位合併。
複製並貼上下列操作說明:
### System Instruction
* You are an expert data analyst for the Google Trends International public dataset.
* Always filter on yesterday's refresh_date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY).
* If yesterday returns no data, filter on 2 days ago's refresh_date = DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY).
* Default to country-level results (one row per term).
* "Top" queries must deduplicate snapshot rows.
* Only include week or score when the user explicitly asks for trends over time.
* This is an international dataset and does not include any data for the United States.
### Additional Descriptions
#### 1. Core model:
* refresh_date selects the daily Top-25 term set.
* week + score are historical weekly values attached to those terms.
* Filtering week does not change which terms appear.
#### 2. Deduplication rule (critical):
* Snapshot rows repeat across weeks and regions.
* For "top" queries, always GROUP BY term (country-level) and compute rank as MIN(rank).
#### 3. Defaults:
* Country-level results only.
* Use region_code only if the user explicitly asks for regions.
* Limit results unless the user asks otherwise.
#### 4. Time series usage:
* Only include week or score when the user asks for trends over time, historical context, or week-over-week score changes.
#### 5. Field guidance:
* Prefer country_code or region_code for filters.
* country_name / region_name are for display only.
* score is normalized; compare trends within a term, not across terms.
已驗證的查詢
經過驗證的查詢 (舊稱黃金查詢) 可做為代理的參考資料,提高回覆準確度。這些範例會決定代理的回覆結構,並協助代理瞭解貴機構使用的商業邏輯。
我們來為代理新增兩個範例。按一下「新增查詢」,然後複製 / 貼上下列問題和查詢:
第 1 題:
What are the top search terms in the UK right now?
查詢 1:
SELECT term, MIN(rank) AS rank
FROM `bigquery-public-data.google_trends.international_top_terms`
WHERE refresh_date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
AND country_code = 'GB'
GROUP BY term
ORDER BY rank
LIMIT 25;
儲存這項查詢前,請先執行查詢,確認查詢有效。

我覺得沒問題!按一下「新增」,儲存已驗證的查詢。
讓我們再舉一個例子,說明更複雜的用途。按一下「管理查詢」,然後新增:
第 2 題:
Show the last 12 weeks of interest for the current top 5 terms in Auckland.
答案 2:
WITH top5 AS (
SELECT term, MIN(rank) AS rank
FROM `bigquery-public-data.google_trends.international_top_terms`
WHERE refresh_date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
AND country_code = 'NZ'
AND region_code = 'NZ-AUK'
GROUP BY 1
ORDER BY 2
LIMIT 5
),
series AS (
SELECT term, week, score,
ROW_NUMBER() OVER (PARTITION BY term ORDER BY week DESC) AS rn
FROM `bigquery-public-data.google_trends.international_top_terms`
WHERE refresh_date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
AND country_code = 'NZ'
AND region_code = 'NZ-AUK'
AND term IN (SELECT term FROM top5)
)
SELECT week, term, score
FROM series
WHERE rn <= 12
ORDER BY 1 DESC, 3
在繼續進行下一節之前,請先查看 Gemini 生成的建議:

您可以在這裡看到一些建議的已驗證查詢。日後建立新代理程式時,這會是絕佳的起點。請務必驗證您新增的任何查詢!
詞彙
現在,我們要在詞彙表中新增字詞。如果貴商家使用 Dataplex,這些字詞會直接從 Dataplex Universal Catalog 的商務詞彙表匯入。
按一下「新增字詞」,然後複製 / 貼上下列範例:
效期:
refresh_date
定義:
Snapshot date that selects the daily Top 25 term set. All rows for that date belong to the same "what's trending now" snapshot. Attach Historical week and score values after this selection.
同義詞:
today, latest, current, now, recent
然後按一下「新增」,再按一下「儲存」。
代理設定
在「設定」部分,您可以設定「標籤」和「資料量計費上限」。
標籤
標籤是鍵/值組合,用於將 Google Cloud 資源整理成邏輯群組。為專注於本實驗室,請將標籤留空。
計費位元組上限
為避免不小心產生任何高費用的查詢,請為每次查詢設定資料量計費上限。如果代理查詢處理的位元組數超出這個上限,查詢就會失敗 (不會產生費用)。輸入下列值:
10000000000
10,000,000,000 個位元組約為 9.3 GB。如未指定值,計費位元組數上限預設為專案的每日查詢用量配額。
5. 儲存及分享代理程式
預覽
一切就緒!請先測試代理程式,再繼續操作。在畫面右側,您可以在編輯設定時動態測試代理程式。預覽畫面會自動使用您提供的新中繼資料,不必儲存或發布變更。
讓我們詢問代理程式可存取哪些資料。請用自己的話提問:

儲存
測試幾個提示後,請儲存並發布代理程式:

發布代理程式後,即可在 BigQuery Studio、對話式數據分析 API 和 Looker Studio Pro (須遵守授權條款) 中使用:

日後推出的版本將支援更多平台和整合功能。
分享
畫面上應會顯示代理程式已發布的確認訊息。現在可以與其他使用者分享這個代理。

與其他使用者共用代理程式時,您可以指派特定角色,控管他們的存取層級。這些角色會決定協作者只能檢視代理程式,還是有權編輯及管理其設定。
請注意,這些角色可套用至兩個不同層級:
- 專案層級:在專案層級授予角色後,使用者就能取得該 Google Cloud 專案中所有代理程式的權限。
- 代理程式層級:如要更精細地控管存取權,可以為特定代理程式授予角色。如果您想讓使用者存取特定資料代理程式,但不想讓他們查看專案中的其他代理程式,這項功能就非常實用。
對話式數據分析的預先定義角色如下:
- Gemini Data Analytics 資料代理擁有者 (roles/geminidataanalytics.dataAgentOwner) - 建立、編輯、共用及刪除所有資料代理
- Gemini Data Analytics 資料代理建立者 (roles/geminidataanalytics.dataAgentCreator):建立、編輯、共用及刪除自己的資料代理
- Gemini Data Analytics 資料代理編輯者 (roles/geminidataanalytics.dataAgentEditor) - 具備資料代理的對話和編輯權限
- 資料分析資料代理使用者 (roles/geminidataanalytics.dataAgentUser) - 具備資料代理程式的對話和檢視權限
- Gemini Data Analytics 資料代理檢視者 (roles/geminidataanalytics.dataAgentViewer) - 具備資料代理的檢視 (唯讀) 存取權
6. 與代理對話
請退出「分享」分頁,然後建立新對話:

按一下「建立對話」後,系統會產生新的無標題對話。
我們來查詢英格蘭的熱門字詞 (你也可以換成自己選擇的地點):
Based on the top 10 terms in England, how did they trend for the past 3 months?
解壓縮回應串流
資料代理程式通常會按照相同的回覆流程回答問題:
- 推論:代理會先「思考」提示。展開「顯示推論」按鈕,即可逐步瞭解代理的決策過程。
- 摘要:代理程式會生成查詢、產生的報表和視覺化效果的概略摘要。
- 生成的 SQL:展開「這是查詢...」部分,檢查 SQL。點選「在編輯器中開啟」,即可在 BigQuery Studio 中手動微調查詢。
- 資料結果:代理程式會以清楚的表格格式呈現查詢結果。
- 視覺化:圖表會顯示在簡短說明旁。代理程式會自動推斷最適合您資料的圖表類型 (例如多重序列折線圖)。
- 資料洞察:代理程式會歸納結果中的重要趨勢和發現。
- 後續問題:最後,代理程式會建議相關的後續問題,協助您繼續分析。

BigQuery ML 支援
接著,我們詢問資料虛擬服務專員是否能根據這些結果執行一些預測。這會運用 BigQuery ML 函式預測未來的點數。
輸入下列提示 (請務必將「大富翁遊戲盤」換成與查詢相關的字詞!):
Can you predict and visualize how monopoly board will trend in the next 4 weeks?
您可以看到 AI_FORECAST 用於預測時間序列。雖然這並不令人意外,但有趣的是,您會看到 2021 年 8 月出現大幅尖峰,這與倫敦大富翁實境景點的盛大開幕時間一致!

7. 探索 Agent Catalog
最後,我們來看看服務專員目錄。按一下視窗頂端的「代理程式目錄」:

這個頁面是資料代理程式的管理中心,分為下列幾個部分:
- 我的代理:目前發布的代理。
- 「代理草稿」:您已儲存但尚未發布的設定。
- 貴機構中其他成員分享的代理:同事建立的代理,您有權存取。
- Google 的代理範例:預先設定的範例,協助您開始使用。
您可以編輯所管理代理程式的設定、複製代理程式,以及管理共用權限。
8. 結語
恭喜!您已成功建構 Conversational Analytics 資料代理程式。如要瞭解詳情,請參閱參考資料!

