程式碼研究室簡介
1. 簡介
試想,如果您不必是程式設計專家,也能更快速、更有效率地準備資料進行分析,那該有多好!有了 BigQuery 資料準備功能,這一切都將成為現實。這項強大的功能可簡化資料攝入、轉換和清理作業,讓貴機構的所有資料專家都能進行資料準備作業。
準備好揭開產品資料中的秘密了嗎?
必要條件
- 具備 Google Cloud 控制台的基本知識
- 對 SQL 有基本瞭解
課程內容
- 本影片將以時尚美容產業的實際範例,說明 BigQuery 資料準備工具如何清理原始資料,並將其轉換為可做為行動依據的商業智慧。
- 如何執行及排定清理資料的資料準備作業
軟硬體需求
- Google Cloud 帳戶和 Google Cloud 專案
- 網路瀏覽器,例如 Chrome
2. 基本設定和需求
自助式環境設定
- 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果您還沒有 Gmail 或 Google Workspace 帳戶,請務必建立帳戶。
- 「Project name」是這個專案參與者的顯示名稱。這是 Google API 不會使用的字元字串。您隨時可以更新。
- 專案 ID 在所有 Google Cloud 專案中都是不重複的值,且無法變更 (設定後即無法變更)。Cloud 控制台會自動產生專屬字串,您通常不需要特別在意。在大多數程式碼研究室中,您都需要參照專案 ID (通常會以
PROJECT_ID
表示)。如果您不喜歡系統產生的 ID,可以隨機產生另一個 ID。或者,您也可以自行嘗試,看看是否可用。在這個步驟完成後就無法變更,且會在專案期間維持不變。 - 提醒您,有些 API 會使用第三個值「專案編號」。如要進一步瞭解這三個值,請參閱說明文件。
- 接下來,您需要在 Cloud 控制台中啟用帳單功能,才能使用 Cloud 資源/API。執行這個程式碼研究室不會產生太多費用,甚至可能完全不產生費用。如要關閉資源,避免在本教學課程結束後繼續產生費用,您可以刪除建立的資源或專案。Google Cloud 新使用者可申請 $300 美元的免費試用期。
3. 事前準備
啟用 API
如要在 BigQuery 中使用 Gemini,請啟用 Gemini for Google Cloud API。通常由具備 serviceusage.services.enable
IAM 權限的服務管理員或專案擁有者執行這個步驟。
- 如要啟用 Gemini for Google Cloud API,請前往 Google Cloud Marketplace 中的 Gemini for Google Cloud 頁面。前往 Gemini 版 Google Cloud
- 在專案選擇器中選取專案。
- 點選「Enable」(啟用)。頁面會更新,並顯示「已啟用」狀態。所有具備必要 IAM 權限的使用者,現在都能在所選 Google Cloud 專案中使用 Gemini in BigQuery。
設定角色和權限,以便進行資料準備作業
- 在「IAM 與管理」中選取「IAM」
- 選取使用者,然後按一下鉛筆圖示,即可「編輯擁有者」
如要使用 BigQuery 資料準備功能,您必須具備下列角色和權限:
- BigQuery 資料編輯者 (roles/bigquery.dataEditor)
- 服務使用情形消費者 (roles/serviceusage.serviceUsageConsumer)
4. 在 BigQuery Analytics Hub 中尋找並訂閱「bq data preparation demo」項目
本教學課程會使用 bq data preparation demo
資料集。這是我們要讀取的 BigQuery Analytics Hub 中連結的資料集。
資料準備作業絕不會寫回來源,因此我們會請您定義要寫入的目的資料表。我們在本練習中使用的資料表只有 1,000 列,以便降低成本,但資料準備作業會在 BigQuery 上執行,並隨著資料量增加而擴大規模。
如要尋找及訂閱已連結的資料集,請按照下列步驟操作:
- 存取 Analytics Hub:前往 Google Cloud 控制台,然後前往 BigQuery。
- 在 BigQuery 導覽選單的「治理」下方,選取「數據分析中心」。
- 搜尋項目:在 Analytics Hub UI 中,按一下「搜尋項目」。
- 在搜尋列中輸入
bq data preparation demo
,然後按下 Enter 鍵。
- 訂閱商家資訊:在搜尋結果中選取
bq data preparation demo
商家資訊。 - 在商家資訊詳細資料頁面中,按一下「訂閱」按鈕。
- 查看任何確認對話方塊,並視需要更新專案/資料集。預設值應正確無誤。
- 在 BigQuery 中存取資料集:成功訂閱後,清單中的資料集就會連結至您的 BigQuery 專案。
返回 BigQuery Studio。
5. 探索資料並啟動資料準備作業
- 找出資料集和資料表:在「Explorer」面板中選取專案,然後找出
bq data preparation demo
清單中包含的資料集。選取stg_product
資料表。 - 在資料準備中開啟:按一下資料表名稱旁的三個垂直點,然後選取
Open in Data Preparation
。
系統會在資料準備介面中開啟資料表,讓您開始轉換資料。
如您在下方資料預覽中看到的,我們有幾項資料挑戰需要解決,包括:
- 價格欄包含金額和幣別,因此難以進行分析。
- 產品欄會混合產品名稱和類別 (以管道符號 | 分隔)。
Gemini 會立即分析資料,並建議您進行幾項轉換作業。在這個範例中,我們看到多項建議。在後續步驟中,我們會套用所需的設定。
6. 處理價格欄
我們來處理「價格」欄。如先前所述,這項屬性包含貨幣和金額。我們的目標是將這些資料分割成兩個不同的資料欄:貨幣和金額。
Gemini 針對「價格」欄提出了幾項最佳化建議。
- 找出類似下列內容的建議:
說明:「這個運算式會從指定欄位移除開頭的 ‘USD '」
REGEXP_REPLACE(Price,` `r'^USD\s',` `r'')
- 選取「預覽」
- 選取「套用」
接著,針對「Price」欄,讓我們將資料類型從 STRING 轉換為 NUMERIC。
- 找出類似下列內容的建議:
說明:「將『Price』欄從字串類型轉換為 float64」
SAFE_CAST(Price AS float64)
- 選取「套用」。
您現在應該會在步驟清單中看到三個已套用的步驟。
7. 處理產品欄
產品欄包含產品名稱和類別,兩者以管道符號 (|) 分隔。
我們可以再次使用自然語言,來探索 Gemini 的另一項強大功能。
清理產品名稱
- 選取產品項目的類別部分 (包含
|
字元) 並刪除。
Gemini 會聰明地辨識這類模式,並建議套用至整個資料欄的轉換作業。
- 選取「編輯」。
Gemini 的建議非常實用:它會移除「|」字元後面的所有內容,有效隔離產品名稱。
但這次我們不想覆寫原始資料。
- 在目標欄下拉式選單中,選取「建立新欄」。
- 將名稱設為 ProductName。
- 預覽變更內容,確認一切正常。
- 套用轉換。
擷取產品類別
我們會使用自然語言指示 Gemini 擷取「產品」欄中的垂直線 (|) 後面的字詞。這個擷取的值會覆寫至現有的「Product」欄。
- 按一下
Add Step
新增轉換步驟。
- 在下拉式選單中選取
Transformation
- 在自然語言提示欄位中輸入「在產品欄中擷取管道符號 (|) 後面的字詞」,然後按下 Enter 鍵即可產生 SQL。
- 將「目標欄」保留為「產品」。
- 按一下 [套用]。
轉換作業應會產生下列結果。
8. 彙整資料以豐富資料
您通常會想使用其他來源的資訊來豐富資料。在本例中,我們會將產品資料與第三方資料表中的擴充產品屬性 stg_extended_product
建立聯結。這個表格包含品牌和推出日期等詳細資料。
- 按一下
Add Step
- 選取「
Join
」 - 瀏覽
stg_extended_product
資料表。
Gemini in BigQuery 會自動為我們挑選 productid 彙整鍵,並驗證左側和右側的鍵名是否相同。
注意:請確認說明欄位顯示「Join by productid」。如果包含其他彙整鍵,請覆寫說明欄位為「Join by productid'」,然後選取說明欄位中的產生按鈕,以以下條件重新產生彙整運算式 L。
productid
= R.
productid
。
- 視需要選取「預覽」,即可預覽結果。
- 按一下 [
Apply
]。
清理延伸屬性
雖然彙整成功,但需要清理擴充屬性資料。LaunchDate
欄的日期格式不一致,而 Brand
欄則含有部分遺漏的值。
我們先從 LaunchDate
欄開始著手。
建立任何轉換作業前,請先查看 Gemini 的建議。
- 按一下「
LaunchDate
」欄名稱。您應該會看到一些類似下圖的建議。
- 如果您看到含有下列 SQL 的最佳化建議,請套用最佳化建議,並略過後續步驟。
COALESCE(SAFE.PARSE_DATE('%Y-%m-%d',
LaunchDate),SAFE.PARSE_DATE('%Y/%m/%d', LaunchDate))
- 如果沒有看到與上述 SQL 相符的最佳化建議,請按一下
Add Step
。 - 選取
Transformation
。 - 在 SQL 欄位中輸入以下內容:
COALESCE(SAFE.PARSE_DATE('%Y-%m-%d',
LaunchDate),SAFE.PARSE_DATE('%Y/%m/%d', LaunchDate))
- 將
Target Columns
設為LaunchDate
。 - 按一下 [
Apply
]。
LaunchDate 欄現在採用一致的日期格式。
9. 新增目的地資料表
資料集現在已完成清理,可以載入至資料倉儲中的維度表。
- 按一下 [
ADD STEP
]。 - 選取
Destination
。 - 填入必要參數:資料集:
bq_data_preparation_demo
資料表:DimProduct
- 按一下 [
Save
]。
我們現在已使用「資料」和「結構定義」分頁。除了這些功能之外,BigQuery 資料準備工具還提供「圖表」檢視畫面,以視覺化方式顯示管道中的轉換步驟序列。
10. 獎勵 A:處理「製造商」欄並建立錯誤表
我們也發現「Manufacturer
」欄中有空白值。針對這些記錄,我們想實施資料品質檢查,並將這些記錄移至錯誤表格,以利進一步審查。
建立錯誤表格
- 按一下
stg_product data preparation
標題旁的More
按鈕。 - 在「
Setting
」部分下方,選取「Error Table
」。 - 勾選
Enable error table
方塊,然後按照下列步驟設定:
- 資料集:選取
bq_data_preparation_demo
- 表格:輸入
err_dataprep
- 在「
Define duration for keeping errors
」下方,選取「30 days (default)
」
- 按一下 [
Save
]。
設定「製造商」欄的驗證機制
- 選取「製造商」欄。
- Gemini 很可能已找出相關轉換。找出只保留「Manufacturer」欄位非空白的資料列的最佳化建議。其中的 SQL 會類似於以下內容:
Manufacturer IS NOT NULL
2. 按一下這項建議的「編輯」按鈕,查看相關資訊。
- 勾選「驗證失敗的資料列移至錯誤表格」選項 (如果未勾選)
- 按一下 [
Apply
]。
您隨時可以點選「已套用步驟」按鈕,查看、修改或刪除已套用的轉換。
清理多餘的 ProductID_1 欄
我們現在可以刪除 ProductID_1 欄,因為這個欄重複了已彙整資料表中的 ProductID。
- 前往「
Schema
」分頁 - 按一下
ProductID_1
欄旁的 3 點圖示。 - 按一下
Drop
。
我們現在可以執行資料準備工作,並驗證整個管道。當您對結果感到滿意時,就可以安排工作自動執行。
- 離開資料準備檢視畫面前,請先儲存準備作業。您應該會在
stg_product data preparation
標題旁看到Save
按鈕。按一下按鈕即可儲存。
11. 清理環境
- 刪除
stg_product data preparation
- 刪除
bq data preparation demo
資料集