GSP1258

總覽
假設您是資料分析師,在 Data Beans 工作了幾個月,並與團隊成功完成了一些專案,而現在公司指派了第一項獨立專案給您。您開始要自行建立及撰寫更複雜的查詢,藉此取得更精闢的深入分析結果。雖然團隊中的每位成員都很樂於協助,但您需要開始展現獨立作業的能力。
您已瞭解 BigQuery 的 SQL 程式碼生成、說明和轉換功能,可協助您使用自然語言撰寫更複雜的查詢。此外,如果您在撰寫新查詢時遇到困難,也知道能使用 Gemini 檢查程式碼及進行偵錯,甚至取得問題解決建議。這些功能可助您獨立作業,甚至提高工作效率,但您還不確定要如何踏出第一步。
目標
本實驗室的內容包括:
- 使用自然語言提示生成 SQL 查詢。
- 使用 BigQuery 的程式碼說明功能。
- 使用 BigQuery 的轉換功能修改 SQL 程式碼。
- 在 BigQuery 中使用提示,要求 Gemini 檢查 SQL 程式碼並進行偵錯。
- 要求 Gemini 提供建議來修正 SQL 程式碼問題。
最後,您將利用一段時間回答實驗室日誌中的問題,藉此回顧在本實驗室學到的內容,思考如何在您的資料、特定用途與工作流程中,運用程式碼生成、說明、轉換和建議功能。
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始研究室及登入 Google Cloud 控制台
-
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的臨時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
工作 1:檢查 menu 和 order_item 資料表
在這項工作中,您會檢查 menu 和 order_item 資料表的結構定義。
重要事項:如果未檢查這些資料表的結構定義,就無法成功完成本實驗室的其他工作。
檢查 menu 資料表的結構定義
-
前往 Google Cloud 控制台的「導覽選單」,點選「BigQuery」。
-
點選歡迎對話方塊中的「完成」。
-
在「Explorer」面板中展開 專案。您會在清單底部看到 coffee_on_wheels
資料集。
-
展開「coffee_on_wheels」資料集,您會看到 menu
資料表。
-
點選「menu」資料表,您會看到 menu
結構定義。
-
檢查結構定義的詳細資料。
-
回答這個問題:
哪些欄位的資料類型為 FLOAT?
查看 order_item 資料表結構定義
-
點選「order_item」資料表,您會看到 order_item
結構定義。
-
檢查結構定義的詳細資料。
-
回答這個問題:
哪些欄位的資料類型為 INTEGER?
工作 2:使用自然語言提示生成 SQL 查詢
在這項工作中,您會使用自然語言提示生成 SQL 查詢,找出菜單中總收益最高和最低的三個品項,以及這些品項的菜單 ID 和總收益。
-
點選
圖示,建立新的 SQL 查詢。新分頁會在 BigQuery Studio 中顯示。
-
點選
即可使用 SQL 生成工具,您會看到「透過 Gemini 生成 SQL」對話方塊。您可以在此視窗中輸入自然語言提示,生成新的 SQL 陳述式。
-
輸入下列提示。
從 order_item 資料表找出總收益最高和最低的三個品項,顯示這些品項的菜單 ID 和總收益。
-
點選「產生」,您會看到 Gemini 建立的 SQL 陳述式,如下所示:
(
SELECT
menu_id,
SUM(item_total) AS total_revenue
FROM
`{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item`
GROUP BY 1
ORDER BY
total_revenue DESC
LIMIT 3
)
UNION ALL
(
SELECT
menu_id,
SUM(item_total) AS total_revenue
FROM
`{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item`
GROUP BY 1
ORDER BY
total_revenue
LIMIT 3
);
注意:如果生成的查詢出現錯誤訊息「Syntax error: Expected end of input but got keyword UNION at [12:1]」,建議您調整查詢語法或取代整個查詢,以符合上方的示例。
- 點選「插入」,生成的查詢會新增至「未命名的查詢」分頁。
說明查詢
-
選取查詢。
-
點選緊鄰查詢左側的
圖示。
-
點選「說明這項查詢」,
-
您會看到 Gemini 對話方塊在 BigQuery Studio 的右側開啟。
-
點選「開始對話」,對話視窗會顯示類似下方的查詢說明。
注意:如果對話視窗未顯示說明,請選取整個查詢,再次點選「說明這項查詢」。
-
檢查說明。Gemini 會提供回覆摘要,如下所示:
總結來說,此查詢可助您依據收益找出最熱門和最冷門的菜單品項,為業務決策提供寶貴的深入分析。
-
點選「執行」,結果顯示六個菜單品項,也就是銷量最高和最低的三個品項。
回顧時間
- 思考一下,根據您的資料和 BigQuery 用途,您要如何使用程式碼生成功能?
- 此外,又將如何使用程式碼說明功能?
點選「Check my progress」,確認目標已達成。
擷取收益最高和最低的三個菜單 ID。
工作 3:轉換查詢
您在前一項工作中建立的查詢很實用,但缺少了一些重要資訊。舉例來說,您不知道菜單品項名稱,且「total_revenue」欄的小數位數過多。
如要取得菜單品項名稱,您需要彙整 menu 和 order item 資料表。您也能設定「total_revenue」欄位的格式,只顯示到小數點後兩位。
在這項工作中,您會使用 Gemini 的轉換功能撰寫提示,解決這些問題。
彙整 menu 和 order item 資料表,即可取得菜單品項名稱
-
點選
圖示,建立新的 SQL 查詢。新分頁會在 BigQuery Studio 中顯示。
-
點選
即可使用 SQL 生成工具,您會看到「透過 Gemini 生成 SQL」對話方塊。您可以在此視窗中輸入自然語言提示,生成新的 SQL 陳述式。
-
輸入下列提示。
結合 menu 資料表與 order item 資料表、傳回 menu_id 和 item_name,並按照 total_revenue 顯示總收益最高和最低的三個品項。
-
點選「產生」,您會看到 Gemini 建立的 SQL 陳述式,如下所示:
(
SELECT
t1.menu_id,
t1.item_name,
SUM(t2.item_total) AS total_revenue
FROM
`{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS t1
INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS t2 ON t1.menu_id = t2.menu_id
GROUP BY 1, 2
ORDER BY
total_revenue DESC
LIMIT 3
)
UNION ALL
(
SELECT
t1.menu_id,
t1.item_name,
SUM(t2.item_total) AS total_revenue
FROM
`{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS t1
INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS t2 ON t1.menu_id = t2.menu_id
GROUP BY 1, 2
ORDER BY
total_revenue
LIMIT 3
);
-
點選「插入」,生成的查詢會新增至「未命名的查詢」分頁。
注意:Gemini 的回覆可能不同,如果發生語法錯誤或查詢內容與示例不符,建議您調整查詢語法或取代整個查詢,以符合上方的示例。
說明查詢
-
選取查詢。
-
點選緊鄰查詢左側的
圖示。
-
點選「說明這項查詢」,您會看到 Gemini 對話視窗中顯示說明和摘要,如下所示:
此查詢能從咖啡店的菜單中,輕鬆快速地找出最熱門和最冷門的品項,為商家的庫存管理、定價和品項調整提供寶貴的決策依據。
-
查看說明的詳細內容。
-
點選「執行」,結果顯示六個菜單品項,也就是銷量最高和最低的三個品項。不過,這次您不只會看到「menu_id」和「total_revenue」欄位,也會看到這兩欄之間多了「item_name」欄位。
-
回答下列問題:
點選「Check my progress」,確認目標已達成。
結合 menu 和 order item 資料表,即可擷取菜單品項名稱。
轉換查詢來移除多餘的小數位數
-
選取查詢。
-
點選
即可使用 SQL 生成工具。
-
點選「轉換」,您會看到「透過 Gemini 轉換 SQL」彈出式視窗。
-
輸入下列提示詞。
設定總收益欄的格式,只顯示到小數點後兩位。使用 ROUND 函式來達成目標。
-
點選「生成」,您會看到生成的新查詢。
注意:BigQuery 會以顏色區分程式碼的差異,換掉的行會以紅色背景顯示,根據提示修改而成的新行則會以綠色背景顯示。
-
點選「插入」,您會在「未命名的查詢」分頁中看到新查詢。
(
SELECT
t1.menu_id,
t1.item_name,
ROUND(SUM(t2.item_total), 2) AS total_revenue
FROM
`{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS t1
INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS t2 ON t1.menu_id = t2.menu_id
GROUP BY 1, 2
ORDER BY
total_revenue DESC
LIMIT 3
)
UNION ALL
(
SELECT
t1.menu_id,
t1.item_name,
ROUND(SUM(t2.item_total), 2) AS total_revenue
FROM
`{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS t1
INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS t2 ON t1.menu_id = t2.menu_id
GROUP BY 1, 2
ORDER BY
total_revenue
LIMIT 3
);
-
點選「執行」,您會看到這次查詢結果與先前非常類似,但現在總收益欄位只會顯示到小數點後兩位。
注意:Gemini 的回覆可能不同,如果發生錯誤或查詢內容與示例不符,建議您調整查詢語法或取代整個查詢,以符合上方的示例。
回顧時間
-
Clouds of Coffee Delight 這個品項創造了多少總收益?
-
思考一下,根據您的資料和 BigQuery 用途,您要如何使用程式碼生成功能?
點選「Check my progress」,確認目標已達成。
設定總收益欄的格式,只顯示到小數點後兩位。
工作 4:程式碼審查、偵錯及建議
使用 Gemini 和 BigQuery 時,也能運用程式碼檢查及偵錯功能。如果發生錯誤,您可以使用 Gemini 取得建議,來修正程式碼及排解錯誤。
情境
您的團隊成員撰寫了下列 SQL 程式碼:
SELECT
oi.menu_id,
m.item_name,
SUM(oi.item_total) AS total_revenue
FROM
`{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS oi
INNER JOIN `{{{project_0.project_id|set at lab start}}}.menu` AS m ON oi.menu_id = m.menu_id
WHERE m.item_size = 'Small'
GROUP BY 1, 2
ORDER BY
total_revenue DESC
LIMIT 10;
這些程式碼的目標是從 coffee_on_wheels
資料集擷取總收益前十名的小型品項,並顯示 menu_id
、item_name
和 total_revenue
欄位。
不過,您的團隊成員在執行這段 SQL 程式碼時,收到下列錯誤訊息:
找不到 資料集:在位置 US 中找不到
團隊成員無法解決此問題。
您需要使用 Gemini 和 coffee_on_wheels
資料集,解決這段 SQL 程式碼的問題。
檢查程式碼
-
點選
圖示,建立新的 SQL 查詢。
-
輸入下列查詢。
SELECT
oi.menu_id,
m.item_name,
SUM(oi.item_total) AS total_revenue
FROM
`{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS oi
INNER JOIN `{{{project_0.project_id|set at lab start}}}.menu` AS m ON oi.menu_id = m.menu_id
WHERE m.item_size = 'Small'
GROUP BY 1, 2
ORDER BY
total_revenue DESC
LIMIT 10;
-
點選「執行」,您會看到查詢執行失敗,並顯示下列錯誤訊息:
找不到 資料集:在位置 US 中找不到
運用 Gemini 對程式碼進行偵錯,並排解錯誤
-
開啟 BigQuery 中的 Gemini Chat 視窗。
-
在對話視窗中輸入下列問題。
為什麼我在執行此查詢後,會收到「找不到 :在位置 US 中找不到 」的錯誤訊息?
-
按下 SHIFT + ENTER 鍵或 Mac 的 SHIFT + return 鍵,在對話視窗中建立新行。
-
選取並複製查詢。
-
將查詢貼到您剛才輸入的問題後方。
-
按下 SHIFT + ENTER 鍵或 Mac 的 SHIFT + return 鍵,在對話視窗中建立新行。
-
輸入下列句子:
請建議新的程式碼來解決所有問題。
-
點選
圖示,您會收到 Gemini 的回覆。
-
查看回覆中的建議。
根據這些建議,您判斷問題最可能的原因是,查詢中針對 menu 資料表的 INNER JOIN 陳述式,並未正確指定 coffee_on_wheels
資料集名稱。
Gemini 在建議中提供了可行的解決方案,包括修正後的查詢,如下所示:
SELECT
oi.menu_id,
m.item_name,
SUM(oi.item_total) AS total_revenue
FROM
`{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS oi
INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS m ON oi.menu_id = m.menu_id
WHERE m.item_size = 'Small'
GROUP BY 1, 2
ORDER BY
total_revenue DESC
LIMIT 10;
-
複製修正後的查詢。
-
點選
圖示,開啟新的「未命名的查詢」分頁。
-
在新的「未命名的查詢」分頁中,貼上修正後的查詢。
-
點選「執行」,查詢結果會顯示菜單中總收益最高的 10 個小型品項,以及這些品項的名稱和總收益。
這項結果已非常接近團隊成員的需求,但修正後的查詢依然有一點小問題。請注意,「total_revenue」欄位有過多的小數位數。您可以按照下列步驟,要求 Gemini 修正此問題。
將「total_revenue」欄位設為最多到小數點後兩位
-
在 Gemini 對話視窗中輸入下列提示。
我需要修正此查詢。
-
按下 SHIFT + ENTER 鍵或 Mac 的 SHIFT + return 鍵,在對話視窗中建立新行。
-
選取並複製查詢。
-
將查詢貼到第一部分提示的後方。
-
按下 SHIFT + ENTER 鍵或 Mac 的 SHIFT + return 鍵,在對話視窗中建立新行。
-
在提示結尾加入下列文字。
重構程式碼,讓結果中「total_revenue」欄位的值四捨五入到小數點後兩位。
-
確認提示是否如下列所示:
我需要修正此查詢。SELECT oi.menu_id, m.item_name, SUM(oi.item_total) AS total_revenue FROM `.coffee_on_wheels.order_item` AS oi INNER JOIN `.coffee_on_wheels.menu` AS m ON oi.menu_id = m.menu_id WHERE m.item_size = 'Small' GROUP BY 1, 2 ORDER BY total_revenue DESC LIMIT 10; 重構程式碼,讓結果中「total_revenue」欄位的值四捨五入到小數點後兩位。
-
點選
圖示,您會看到下方的 Gemini 回覆。
SELECT
oi.menu_id,
m.item_name,
ROUND(SUM(oi.item_total), 2) AS total_revenue -- Round to 2 decimal places
FROM
`{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.order_item` AS oi
INNER JOIN `{{{project_0.project_id|set at lab start}}}.coffee_on_wheels.menu` AS m ON oi.menu_id = m.menu_id
WHERE m.item_size = 'Small'
GROUP BY 1, 2
ORDER BY
total_revenue DESC
LIMIT 10;
以及類似下方的說明:
如要將「total_revenue」欄位的值限制在小數點後兩位,可以在 BigQuery 使用 ROUND() 函式。ROUND(SUM(oi.item_total), 2):查詢的此部分會使用 ROUND() 函式,將「oi.item_total」的值四捨五入到小數點後兩位。ROUND() 函式中的 2 表示要保留的小數位數。
-
複製重構後的程式碼。
-
點選
圖示,開啟新的「未命名的查詢」分頁。
-
在新的「未命名的查詢」分頁中,貼上重構後的查詢。
-
點選「執行」,查詢結果會顯示菜單中總收益最高的 10 個小型品項,以及這些品項的名稱和總收益。
您確認結果符合預期,並將查詢回傳給團隊成員。對方非常感謝您的協助。
回顧時間
-
回答這個問題:「收益第 5 高的品項名稱為何?創造了多少收益?」
-
思考一下,根據您的資料和用途,您要如何使用程式碼檢查及建議功能,修正難以解決的程式碼問題?
點選「Check my progress」,確認目標已達成。
修正錯誤,並擷取收益最高的前 10 個小型品項。
恭喜!
您使用自然語言提示生成了 SQL 查詢,並透過程式碼說明功能瞭解您不熟悉的查詢。您也成功使用 Gemini 協助檢查程式碼及進行偵錯,還透過 Gemini 的建議功能來改良甚至修正程式碼。您更加熟悉如何在有/無程式碼時,透過 Gemini in BigQuery 撰寫查詢,甚至還瞭解如何排解查詢問題。您對 BigQuery 的掌握程度日益增加,並能使用 Gemini 拓展您的知識與技巧。
後續步驟/瞭解詳情
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2025 年 3 月 28 日
實驗室上次測試日期:2025 年 3 月 28 日
Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。