使用 BigQuery 查詢及分析 Bigtable 資料
BigQuery 是代管的資料倉儲,可協助您使用 SQL 查詢查詢及分析 Bigtable 資料。BigQuery 適合資料分析師、資料工程師、資料科學家,或任何想使用 Bigtable 資料回答業務問題的人。
BigQuery 可讓您從 BigQuery 查詢 Bigtable 資料。如要將 Bigtable 資料加入 BigQuery 資料表,這項功能就非常實用。
本文將概述如何使用 BigQuery 查詢 Bigtable 資料。閱讀本頁面之前,請先熟悉 Bigtable 總覽和 BigQuery 總覽。
如果資料表每列都有相同的資料欄系列和資料欄限定符,就非常適合使用 BigQuery 查詢 Bigtable 資料表。
建立外部資料表
您或貴機構的管理員必須先建立外部資料表,才能查詢 Bigtable 資料。外部資料表是 BigQuery 資料表,其中包含指向 Bigtable 資料表的指標中繼資料,您會將查詢傳送至該資料表。如要進一步瞭解外部資料表,請參閱「外部資料來源簡介」。
您必須在與 Bigtable 資料表相同的區域中建立外部資料表。舉例來說,如果資料表位於叢集位於 europe-central2-a
(華沙)、europe-west1-c
(比利時) 和 asia-east1-a
(東京的執行個體中,您就必須在華沙、比利時或東京建立外部資料表。
建議設定
建立外部資料表時,建議您遵循下列最佳做法:
如要避免影響應用程式服務流量,請在使用 BigQuery 外部資料表讀取 Bigtable 資料時,使用 Data Boost 無伺服器運算。使用 Data Boost 執行臨時查詢時,成本效益特別高。如要使用 Data Boost,請在建立外部資料表定義時指定 Data Boost 應用程式設定檔。如要進一步瞭解 Data Boost,請參閱 Bigtable Data Boost 總覽。
在大多數情況下,建立外部資料表時,請將
readRowkeyAsString
和ignoreUnspecifiedColumnFamilies
設為 true。如果
ignoreUnspecifiedColumnFamilies
為 true,當您建立的資料表定義只包含資料欄系列中的部分資料欄時,只有選取的資料欄會升級為外部資料表中的資料欄。未選取資料欄中的資料會歸類在一般column
資料欄下方。
如要建立外部資料表,請按照「建立 Bigtable 外部資料表」一文中的說明操作。
查詢外部資料表中的資料
建立 Bigtable 資料表的外部資料表後,您可以使用下列其中一種方法,對該資料表傳送 SQL 查詢:
- 使用指令列的
bq
BigQuery CLI - 呼叫 BigQuery API
- 任何 BigQuery 用戶端程式庫
如要瞭解如何撰寫及執行查詢,請參閱「執行查詢」。如需 Bigtable 專屬的操作說明 (包括必要權限和程式碼範例),請參閱「查詢 Bigtable 資料」。
已排定的查詢
如果您想定期將 Bigtable 資料匯入 BigQuery,排程查詢就非常實用。如果使用案例需要您建構資料管道,並將資料串流至 BigQuery,這些函式也很有幫助。如需管理排定查詢的相關操作說明,請參閱「排定查詢」。
完整資料表掃描
如果您使用 Data Boost 讀取資料,就不必避免掃描整個資料表。不過,如果您使用佈建的節點進行運算,則需要這麼做。與直接將讀取要求傳送至 Bigtable 資料表類似,當您查詢資料表的外部資料表,且未使用 Data Boost 時,通常會想避免完整掃描資料表。全資料表掃描會提高 CPU 使用率,且比選擇性查詢耗時許多。這類查詢也需要更多 BigQuery 處理量。
如果查詢涉及所有資料列,就會觸發完整資料表掃描。另一方面,如果您限制查詢並要求一系列資料列或指定不連續的資料列,系統就不會掃描整個資料表。以下是 GoogleSQL 語法中限制查詢的範例:
WHERE rowkey = "abc123"
WHERE rowkey BETWEEN "abc123" PRECEDING AND "abc999" FOLLOWING
WHERE rowkey > 999999
(如果您將資料列索引鍵讀取為字串)
彙整
如果您打算使用聯結,一併分析 Bigtable 資料表資料和其他來源的資料,請建立子查詢,從 Bigtable 擷取相關欄位,以供聯結使用。如要瞭解更多資料表聯結最佳做法,請參閱「最佳化查詢運算」。
費用
建立及查詢外部資料表時,系統會向您收取 BigQuery 費用,以及處理流量所需的 Bigtable 節點數增加費用。由於外部資料表與 Bigtable 資料表位於相同區域,因此不會產生網路費用。
如果您通常會在正常上班時間執行查詢,建議啟用 Bigtable 自動調度功能,讓節點數量在需要時增加,並在工作完成時減少。如果您執行的排定查詢沒有明確期限,自動調度也是有效的策略。
如要進一步控管費用,請避免完整掃描資料表。
如要進一步瞭解如何最佳化 BigQuery 費用,請參閱「預估及控管費用」。
限制
請注意以下限制:
- 如果查詢結果包含具有巢狀類型的序列化資料 (例如通訊協定緩衝區 (protobuf) 和 Avro 格式),則在 Google Cloud 控制台中可能會無法正確顯示或難以閱讀。
後續步驟
- 瞭解外部資料表和聯合查詢之間的差異。
- 建立 Bigtable 外部資料表。
- 查詢儲存在外部資料表中的 Bigtable 資料。
- 將資料從 BigQuery 匯出至 Bigtable。
- 使用 Bigtable 和 BigQuery 建構即時分析資料庫