在 BigQuery 程式碼研究室中使用 AI 代理程式準備資料

1. 簡介

想像一下,您不必是程式設計專家,就能更快、更有效率地準備好資料以供分析。BigQuery 資料準備功能可實現這個願景。這項強大功能可簡化資料擷取、轉換和清理作業,讓貴機構的所有資料從業人員都能準備資料。

準備好發掘產品資料中隱藏的秘密了嗎?

必要條件

  • 對 Google Cloud 控制台有基本瞭解
  • 對 SQL 有基本瞭解

課程內容

  • 瞭解如何使用時尚和美妝產業的實際範例,透過 BigQuery 資料準備功能清理原始資料並轉換為可做為行動依據的商務智慧。
  • 如何執行及排定已清理資料的資料準備作業

軟硬體需求

  • Google Cloud 帳戶和 Google Cloud 專案
  • 網路瀏覽器,例如 Chrome

2. 基本設定和需求

自修實驗室環境設定

  1. 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 專案名稱是這個專案參與者的顯示名稱。這是 Google API 未使用的字元字串。你隨時可以更新。
  • 專案 ID 在所有 Google Cloud 專案中都是不重複的,而且設定後即無法變更。Cloud 控制台會自動產生專屬字串,通常您不需要在意該字串為何。在大多數程式碼研究室中,您需要參照專案 ID (通常標示為 PROJECT_ID)。如果您不喜歡產生的 ID,可以產生另一個隨機 ID。你也可以嘗試使用自己的名稱,看看是否可用。完成這個步驟後就無法變更,且專案期間會維持不變。
  • 請注意,有些 API 會使用第三個值,也就是「專案編號」。如要進一步瞭解這三種值,請參閱說明文件
  1. 接著,您需要在 Cloud 控制台中啟用帳單,才能使用 Cloud 資源/API。完成這個程式碼研究室的費用不高,甚至可能完全免費。如要關閉資源,避免在本教學課程結束後繼續產生費用,請刪除您建立的資源或專案。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。

3. 事前準備

啟用 API

如要使用 Gemini in BigQuery,請啟用 Gemini for Google Cloud API。通常由具備 serviceusage.services.enable IAM 權限的服務管理員或專案擁有者執行這個步驟。

  1. 如要啟用 Gemini for Google Cloud API,請前往 Google Cloud Marketplace 的「Gemini for Google Cloud」頁面。前往 Gemini 版 Google Cloud
  2. 在專案選擇器中選取專案。
  3. 按一下「啟用」。頁面會更新並顯示「已啟用」狀態。現在,只要使用者具備必要的 IAM 權限,就能在所選 Google Cloud 專案使用 Gemini in BigQuery。

設定角色和權限,以開發資料準備作業

  1. 在「IAM 與管理」中選取「IAM」

4477412d79f29e0b.png

  1. 選取使用者,然後按一下鉛筆圖示「編輯主體」

5eb558e04ad12362.png

如要使用 BigQuery 資料準備功能,您需要下列角色和權限:

4. 在 BigQuery Analytics Hub 中尋找並訂閱「bq data preparation demo」項目

在本教學課程中,我們會使用 bq data preparation demo 資料集。這是 BigQuery Analytics Hub 中的連結資料集,我們會從中讀取資料。

資料準備作業絕不會寫回來源,我們會要求您定義要寫入的目的地資料表。我們將在本練習中使用只有 1,000 列的資料表,盡量減少費用,但資料準備作業會在 BigQuery 上執行,並隨之擴充。

請按照下列步驟尋找及訂閱連結的資料集:

  1. 存取 Analytics Hub:前往 Google Cloud 控制台中的 BigQuery。
  2. 在 BigQuery 導覽選單中,選取「控管」下方的「Analytics Hub」。

6ddfac4dd863ca7b.png

  1. 搜尋項目:在 Analytics Hub 使用者介面中,按一下「搜尋項目」
  2. 在搜尋列中輸入 bq data preparation demo,然後按 Enter 鍵。

7e0cb82b80174cdc.png

  1. 訂閱房源:從搜尋結果中選取 bq data preparation demo 房源。
  2. 在房源詳細資料頁面中,按一下「訂閱」按鈕。
  3. 查看所有確認對話方塊,並視需要更新專案/資料集。預設值應該是正確的。

2ef0ac1e3557f2f9.png

  1. 在 BigQuery 中存取資料集:訂閱成功後,資訊中的資料集就會連結至您的 BigQuery 專案。

返回 BigQuery Studio

5. 探索資料並啟動資料準備程序

  1. 找出資料集和資料表:在「Explorer」面板中選取專案,然後找出 bq data preparation demo 清單中包含的資料集。選取「stg_product」資料表。
  2. 在資料準備中開啟:按一下資料表名稱旁的三個直向點,然後選取 Open in Data Preparation

系統隨即會在「資料準備」介面中開啟資料表,方便您開始轉換資料。

76ace3d4b5cfc2d0.png

如下方的資料預覽畫面所示,我們將解決一些資料問題,包括:

  • 價格欄同時包含金額和幣別,因此難以進行分析。
  • 產品資料欄會混合顯示產品名稱和類別 (以直立線符號「|」分隔)。

f4d93aa59a56447a.png

Gemini 會立即分析資料,並建議幾種轉換方式。在本例中,我們看到多項建議。在接下來的步驟中,我們會套用所需的項目。

fd4d14e4fa3c31c1.png

6. 處理價格欄

現在來處理「價格」欄。如先前所見,這個結構體包含幣別和金額。我們的目標是將這些資料分成兩個不同的資料欄:幣別和金額

Gemini 發現「價格」欄有幾項建議。

  1. 找出類似下列內容的建議:

說明:「這個運算式會從指定欄位中移除開頭的『USD 』」

REGEXP_REPLACE(Price,` `r'^USD\s',` `r'')
  1. 選取「預覽」

c9327cfbd32247d6.png

  1. 選取「套用」

接著,針對「Price」資料欄,將資料類型從 STRING 轉換為 NUMERIC

  1. 找出類似下列內容的建議:

說明:「將『價格』欄從字串類型轉換為 float64」

SAFE_CAST(Price AS float64)
  1. 選取「套用」。

現在步驟清單中應該會顯示三個已套用的步驟。

d3359af47dce0c15.png

7. 處理產品欄

產品欄包含產品名稱和類別,並以直立線 (|) 分隔。

雖然我們還是可以使用自然語言,但現在來探索 Gemini 的另一項強大功能。

清理產品名稱

  1. 選取產品項目的類別部分 (包括 | 字元),然後刪除。

5171d598a8cb3a75.png

Gemini 會智慧辨識這個模式,並建議套用至整個資料欄的轉換。

  1. 選取「編輯」。

b36cac918b4f30e9.png

Gemini 的建議非常準確:移除「|」字元後的所有內容,有效分離產品名稱。

但這次我們不想覆寫原始資料。

  1. 在目標欄下拉式選單中,選取「建立新欄」。
  2. 將名稱設為 ProductName

bda19e0e5e536ccd.png

  1. 預覽變更,確認一切正常。
  2. 套用轉換。

擷取產品類別

我們會以自然語言指示 Gemini 擷取「產品」欄中管道符號 (|) 後方的字詞。系統會將擷取的值覆寫到現有的「產品」欄。

  1. 按一下 Add Step 新增轉換步驟。

77944047e698494c.png

  1. 從下拉式選單中選取 Transformation
  2. 在自然語言提示欄位中,輸入「extract the word after the pipe (|) in the Product column.」(擷取「產品」欄位中管道符號 (|) 後方的字詞),然後按下 Return 鍵生成 SQL。

82efc2447a3210bd.png

  1. 將目標資料欄保留為「產品」。
  2. 按一下 [套用]。

轉換後應會得到下列結果。

d741c66d9e0e8e00.png

8. 彙整資料以豐富內容

您通常會想從其他來源取得資訊,以擴充資料。在我們的範例中,我們會將產品資料與第三方表格中的擴充產品屬性 stg_extended_product 聯結。這個表格包含品牌和推出日期等詳細資料。

  1. 按一下 Add Step
  2. 選取「Join
  3. 瀏覽至 stg_extended_product 資料表。

dca14451c3fbc7f0.png

Gemini in BigQuery 會自動為我們選取 productid 聯結鍵,並由於鍵名相同,因此會限定左側和右側。

注意:請確認說明欄位顯示「Join by productid」(依產品 ID 加入)。如果包含其他彙整鍵,請將說明欄位覆寫為「Join by productid」,然後選取說明欄位中的生成按鈕,使用以下條件重新生成彙整運算式 L.

productid

= R.

productid4d6dbfea28772f34.png

  1. 視需要選取「預覽」,預覽結果。
  2. 按一下 [Apply]

清除擴充屬性

雖然聯結成功,但擴充屬性資料需要清理。「LaunchDate」欄的日期格式不一致,且「Brand」欄中含有部分遺漏值。

首先,請處理 LaunchDate 欄。

f9b570d7c2d3a98d.png

建立任何轉換前,請先查看 Gemini 的建議。

  1. 按一下「LaunchDate」欄名稱。您應該會看到類似下圖的建議。

62b6e6027a46ba75.png

  1. 如果看到包含下列 SQL 的最佳化建議,請套用該建議並略過後續步驟。
COALESCE(SAFE.PARSE_DATE('%Y-%m-%d',
LaunchDate),SAFE.PARSE_DATE('%Y/%m/%d', LaunchDate))
  1. 如果沒有看到與上述 SQL 相符的建議,請按一下 Add Step
  2. 選取 Transformation
  3. 在 SQL 欄位中輸入下列內容:
COALESCE(SAFE.PARSE_DATE('%Y-%m-%d',
LaunchDate),SAFE.PARSE_DATE('%Y/%m/%d', LaunchDate))
  1. Target Columns 設為 LaunchDate
  2. 按一下 [Apply]

LaunchDate 資料欄現在的日期格式一致。

ccf34aa05754a834.png

9. 新增目的地資料表

資料集現在已清理完畢,可載入資料倉儲的維度資料表。

  1. 按一下 [ADD STEP]
  2. 選取 Destination
  3. 填入必要參數:資料集:bq_data_preparation_demo 資料表:DimProduct
  4. 按一下 [Save]

79fdc3666a3a21b9.png

我們現在已使用「資料」和「結構定義」分頁。此外,BigQuery 資料準備還提供「圖表」檢視畫面,以視覺化方式顯示管道中的轉換步驟順序。

95e64d8152228f7b.png

10. 附錄 A:處理「製造商」欄並建立錯誤資料表

我們也發現「Manufacturer」欄中的值為空值。針對這些記錄,我們想實作資料品質檢查,並將記錄移至錯誤資料表以供進一步審查。

建立錯誤表格

  1. 按一下「stg_product data preparation」標題旁的 More 按鈕。
  2. 在「Setting」部分下方,選取「Error Table」。
  3. 勾選「Enable error table」方塊,並按照下列方式設定:
  • 資料集:選取 bq_data_preparation_demo
  • 資料表:輸入 err_dataprep
  • 在「Define duration for keeping errors」下方,選取「30 days (default)
  1. 按一下 [Save]

adb5722f05c1b205.png

在「製造商」欄中設定驗證

  1. 選取「製造商」欄。
  2. Gemini 可能已找出相關轉換。找出只保留「製造商」欄位不為空的資料列的最佳化建議。SQL 查詢會類似於:
Manufacturer IS NOT NULL

2. 點選這項建議的「編輯」按鈕,即可查看建議。

4749b551a03d8193.png

  1. 如果未勾選「驗證失敗的資料列移至錯誤表格」選項,請勾選該選項
  2. 按一下 [Apply]

您隨時可以點選「已套用的步驟」按鈕,查看、修改或刪除已套用的轉換。

15df6caacbdd6a69.png

清除多餘的 ProductID_1 欄

現在可以刪除 ProductID_1 欄,因為這個欄與已聯結資料表中的 ProductID 重複。

  1. 前往「Schema」分頁
  2. 按一下「ProductID_1」欄旁邊的 3 點圖示。
  3. 按一下 Drop

現在我們準備執行資料準備工作,並驗證整個管道。對結果感到滿意後,我們就能安排這項工作自動執行。

  1. 離開資料準備檢視畫面之前,請先儲存準備作業。stg_product data preparation」標題旁應該會顯示 Save 按鈕。按一下按鈕即可儲存。

11. 清除環境

  • 刪除 stg_product data preparation
  • 刪除 bq data preparation demo 資料集

12. 恭喜

恭喜您完成本程式碼研究室。

涵蓋內容

  • 設定資料準備作業
  • 開啟表格及瀏覽資料準備作業
  • 分割含有數值和單位描述元資料的欄
  • 標準化日期格式
  • 執行資料準備作業