叢集資料表簡介

本文件提供 BigQuery 資料表叢集處理支援總覽。

總覽

在 BigQuery 中建立叢集化資料表時,資料表資料會依照資料表結構定義中的一或多個資料欄內容進行自動編排。您指定的資料欄會用來將相關資料放在相同位置。使用多個資料欄為資料表組成叢集時,您指定的資料欄的順序非常重要。指定的資料欄順序決定了資料的排列順序。

叢集可以提升某幾種查詢的效能,例如使用篩選子句的查詢,以及匯總資料的查詢。當查詢工作或載入工作將資料寫入叢集處理過的資料表時,BigQuery 會使用叢集化資料欄裡的值排序資料,將資料分到 BigQuery 儲存空間中的多個區塊。當提交的查詢含有根據叢集化資料欄篩選資料的子句時,BigQuery 會使用排序過的區塊,不會掃描不需要的資料。

同樣地,當您所提交的查詢,其會根據叢集化資料欄中的值匯總資料時,因為排序過的區塊會把有類似值的資料列放在同一位置,也就能享受更好的效能。

使用叢集處理的時機

目前 BigQuery 支援對分區處理過的資料表建立叢集,使用時機如下:

  • 資料已使用 date 或 timestamp 資料欄分區。
  • 您通常會在查詢中,對特定資料欄使用篩選或匯總。

擷取時間分區資料表和使用 DATETIMESTAMP 資料欄分區的資料表都支援資料表叢集。非分區資料表目前不支援建立叢集。

同時使用叢集和分區處理時,可依 date 或 timestamp 資料欄將資料分區,然後將叢集建立到另外一組資料欄。在此情況下,各分區中的資料是根據叢集處理過的資料欄值,建立叢集。根據所掃描分區,分區處理提供了一種準確預估查詢費用的方式。

為已分區資料表建立叢集

依 date 或 timestamp 資料欄分區的資料表中,每個分區都包含一天的資料。儲存資料時,BigQuery 會確保同個區塊中的所有資料都屬於同個分區。即使進行任何會修改已分區資料表的作業 (查詢工作、資料操縱語言 (DML) 陳述式、資料定義語言 (DDL) 陳述式、載入工作和複製工作),已分區資料表仍會保留這些屬性。而這必須要 BigQuery 維護比未分區資料表還多的中繼資料。隨著分區數量的增加,中繼資料的負擔也會增加。

雖然必須維護更多的中繼資料,但確保資料全面分區可讓 BigQuery 在執行查詢之前更準確地預估查詢將處理的位元組數,計算出最終費用的上限。

在經過叢集處理的資料表中,BigQuery 會根據叢集化的資料欄值自動排序資料,將資料分到理想大小的儲存區塊中。您可以建立經過叢集和分區處理的資料表,以獲得更精細的排序結果。叢集處理過的資料表,在每個會修改此資料表的作業脈絡中會保留排序屬性。因此,BigQuery 可能無法準確預估查詢將處理的位元組數或查詢費用。在執行查詢的過程中排除資料區塊時,BigQuery 會盡量減少查詢費用。

隨著越來越多的作業對資料表進行修改,維持排序的資料會越來越少,資料表只剩一部分資料有排序。在部分排序的資料表中,相較於完全排序的資料表,使用叢集化資料欄的查詢,可能需要掃描更多的區塊。您可以執行 SELECT * 查詢來選取並覆寫資料表 (或其中任何一個特定分區),以對整個資料表中的資料重新建立叢集。此外,資料表中的每個部分都可以使用 DML MERGE 陳述式重新建立叢集。

經過叢集處理的資料表配額和限制

當您使用叢集化資料表功能搭配分區處理過的資料表時,請遵守分區資料表的限制

配額和限制也適用於各種可以在叢集資料表執行的工作,包括:

如要深入瞭解所有配額和限制,請參閱配額與限制一文。

叢集資料表定價

在 BigQuery 中建立及使用經過叢集處理的資料表時,系統會依據資料表中儲存的資料量,以及您對資料所執行的查詢來計算費用:

許多叢集資料表作業都是免費的,包括將資料載入叢集資料表、複製資料表和分區,以及匯出資料。雖然這些作業都是免費的,但仍受限於 BigQuery 的配額與限制。如需所有免費作業的相關資訊,請參閱定價頁面上的免費作業項目一節。

有關詳細的叢集資料表價格範例,請參閱定價頁面。

開發中的功能

下列功能正在開發中,目前未在測試版中提供:

  • 針對叢集非分區資料表的支援

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁