Google PDE: BigQuery 分析與倉儲工程 — 學習指南

屬於 Google Professional Data Engineer — 學習指南. 使用經過驗證的解答練習: Google 考試中心, 或參加限時模擬考試: ExamRoll.io.

總覽

BigQuery 是一個無伺服器、以欄為基礎 (columnar) 的大規模平行處理 (MPP) 分析倉儲,它將儲存與運算分離,提供近乎無限的擴展性、ANSI SQL 及整合式治理。在 BigQuery 上進行倉儲工程,需要在結構設計(分區、分群、反正規化與正規化、巢狀記錄)、擷取模式(批次載入、串流、Storage Write API)以及工作負載管理(隨選與容量型版本及預留)之間取得平衡。強大的安全性(授權檢視、資料列/資料欄層級政策、政策標籤)與成本控制及效能工具並存,以最小化掃描的位元組數並降低延遲。本節涵蓋了您在生產環境中必須預期的核心設計、操作與故障模式。

儲存與語意:資料集、資料表、檢視與資料湖存取

查詢最佳化與工作負載管理

undefined

擷取、聯合查詢與復原

undefined

安全性、治理與成本控管

實務問題情境

NovaCare Health 經營一個區域性的遠距醫療平台。最初的單一資料表 patient_and_visit 設計支援了試點計畫,但在規模擴大 100 倍後,報告開始逾時,串流 upsert 操作出現重複資料,且合作夥伴要求嚴格的資料隔離。

解決方法:

  1. 重新設計結構描述與佈局

    • 建立正規化的核心資料表:patients(patient_id, demographics, updated_at)visits(visit_id, patient_id, visit_ts, metrics, updated_at)
    • visits 設為以 DATE(visit_ts) 分割的資料表,並以 patient_idvisit_id 進行叢集化。將小型的參考維度反正規化到 visits 表中,以加快儀表板速度。
    • 理由:正規化可避免在單一熱點資料表上進行昂貴的自我 join 和大量的資料列更新。分割可修剪歷史資料的掃描;叢集化則將 patient_id 上的 join 和篩選操作集中存放,減少 shuffle。
  2. 使用 Storage Write API 擷取資料並強制執行冪等性

    • 使用 Dataflow pipeline 來解析傳入的事件、進行驗證,並使用具冪等性的偏移量(offset)寫入 Storage Write API 中的具名串流。
    • 將格式錯誤的事件路由到一個 dead-letter BigQuery 資料表以進行分類處理。
    • 理由:相較於傳統的串流方式,Storage Write API 提供更高的吞吐量、更低的延遲和更好的重複資料刪除保證。Dead-lettering 機制保留了對合作夥伴資料品質問題的可見性。
  3. 在查詢中設計以確保資料新鮮度與重複資料刪除

    • 對於互動式分析,在查詢最新分割區之前,加入一個短的浮水印(例如,觀察到的可用性時間的 2 倍);或使用 _PARTITIONDATE 篩選 partition_date <= CURRENT_DATE() 以排除正在傳輸中的資料列。
    • 在需要容忍上游重試的檢視中,使用 ROW_NUMBER() OVER (PARTITION BY visit_id ORDER BY event_ts DESC) = 1
    • 理由:串流在短時間內是最終一致的。浮水印和基於視窗的重複資料刪除可保護儀表板免受暫時性資料缺口和重複資料的影響。
  4. 使用具體化檢視加速常見的彙總操作

    • visits 資料表上建立與分割區對齊的 MV,用於按 DATE(visit_ts) 和病患群組分類的每日 KPI。確保述詞與重寫相容。
    • 理由:MV 減少了重複性報告的延遲和掃描位元組數;BigQuery 會自動重寫查詢以透明地使用 MV。
  5. 強制執行租戶隔離與細緻的安全性控制

    • 將每個合作夥伴放置在專屬的資料集中。將最低權限的資料集角色授予合作夥伴群組。
    • 發布授權檢視以進行共享的、跨合作夥伴的基準比較,而不洩露原始資料表。
    • 對 PII 資料欄應用政策標籤,並在 visits 資料表上新增資料列存取政策,以根據 partner_id 限制內部多租戶分析的存取。
    • 理由:每個租戶一個資料集的區隔方式,加上授權檢視和政策標籤,可在啟用受管理的共享同時,強制執行最低權限原則。
  6. 使用版本、預留和自動擴展來管理工作負載

    • 購買 BigQuery 版本的容量,並建立兩個 reservations:etl(用於 Dataflow sinks、排程轉換)和 bi(用於 ad hoc/報表)。相應地分配專案,並啟用自動擴展以應對尖峰負載。
    • 將 ELT 查詢排程為具有明確 SLA 的批次作業;為互動式專案設定 maximum_bytes_billed
    • 理由:分開的 reservations 可防止 ETL 佔用 BI 的資源。自動擴展可在不超額配置的情況下應對突發性負載。
  7. 治理成本並觀察使用情況

    • 在共享檢視中要求對 visit_ts 進行篩選;拒絕 SELECT *。使用 INFORMATION_SCHEMA.JOBS 來偵測未被修剪的掃描和傾斜的 join。
    • 將 BigQuery 稽核日誌匯出到 Pub/Sub,並使用日誌接收器篩選 visits 上的 insert jobs,以觸發對意外流量激增的監控警報。
    • 理由:位元組修剪和資料欄投影可控制成本;稽核日誌可近乎即時地呈現存取模式和異常情況。
  8. 規劃復原與資料回填

    • 啟用符合合規性和時間旅行需求的預設資料表過期政策。對於大型編輯,可建立快照,執行變更,並在必要時快速回復。使用資料表複本進行開發/測試的假設分析,而無需複製儲存空間。
    • 理由:快照和複本提供了快速、節省空間的安全網;時間旅行則涵蓋了小規模的修正性還原。
  9. 整合倉儲內機器學習

    • 將工程化的特徵儲存在分割資料表中,並訓練 BigQuery ML 分類模型以預測再入院風險。對於託管在 Vertex AI 上的外部模型,可建立遠端模型並將預測結果快取在叢集化資料表中,以實現低延遲的 join。
    • 理由:將 ML 靠近資料可減少資料移動和治理的複雜性;快取遠端推論的結果可分攤延遲和成本。

透過此設計,NovaCare 在 100 倍負載下實現了可預測的效能、強大的租戶隔離和受控的成本,同時保留了低延遲分析和可重現的復原能力。


資料儲存、資料湖與檔案格式 · 所有領域 · 使用 Dataflow 與 Apache Beam 進行串流處理

練習這些題目 → · 在 ExamRoll.io 上限時練習 →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

通過考試 →

瀏覽 Google →

Related guides

一站式存取

一份訂閱。所有考試。

每個方案都可無限存取答案搜尋、練習測驗、AI 解釋和完整的資源庫 — 支援 20 多種語言。

每月
24.87
Just €0.83/day
包含所有內容:
  • 無限答案搜尋
  • 無限練習測驗
  • AI 驅動的解釋
  • 完整資源庫
  • 20 多種語言
  • 每週內容更新
  • 獎勵與推薦
  • 優先支援
開始免費試用

無需信用卡*

最佳價值
12 個月
179.87
Just €0.49/daySave 40%
包含所有內容:
  • 無限答案搜尋
  • 無限練習測驗
  • AI 驅動的解釋
  • 完整資源庫
  • 20 多種語言
  • 每週內容更新
  • 獎勵與推薦
  • 優先支援
開始免費試用

無需信用卡*

✓ 包含免費方案 · ✓ 隨時取消 · ✓ 所有方案解鎖完整產品