BigQuery 計價方式

如要瞭解 BigQuery 的價格資訊,請參閱本頁面。

如果使用 BigQuery ML,請參閱 BigQuery ML 的價格頁面。

如果使用 BigQuery 資料移轉服務,請參閱 BigQuery 資料移轉服務的價格頁面。

總覽

BigQuery 提供可彈性調整的價格方案,能滿足各式各樣的技術和預算需求。

儲存空間費用取決於儲存在 BigQuery 的資料量,可分為以下兩種費用:

  • 動態儲存月費 - 採計您過去 90 天內修改過的資料表或分區中儲存的資料量。
  • 長期儲存月費 - 採計您過去 90 天內未修改過的資料表或分區中儲存的資料量 (費用較低)。

查詢費用則有兩種計費模式可以選擇:

  • 以量計價 - 這是最具彈性的選項。以量計價的價格取決於您執行的每個查詢所處理的資料量。
  • 固定費率 - 這個計價選項提供可預測的費用金額,最適合預算固定的客戶。採用固定費率的客戶可購買查詢處理作業的專屬資源,無須支付個別查詢的費用。

如需進一步瞭解儲存空間和查詢的計價方式,請參閱 Google Cloud Platform SKU 頁面。請注意,以量計價的查詢價格是指 SKU 頁面上的分析價格。

價格摘要

下表大致列出 BigQuery 的計價方式,這些作業適用 BigQuery 的使用配額與限制

美國 (多地區) 歐盟 (多地區) 洛杉磯 (us-west2) 蒙特婁 (northamerica-northeast1) 北維吉尼亞州 (us-east4) 聖保羅 (southamerica-east1) 芬蘭 (europe-north1) 倫敦 (europe-west2) 蘇黎世 (europe-west6) 香港 (asia-east2) 孟買 (asia-south1) 台灣 (asia-east1) 東京 (asia-northeast1) 新加坡 (asia-southeast1) 雪梨 (australia-southeast1)
按月計費
作業 價格 說明
動態儲存 每個月前 10 GB 免費,詳情請參閱儲存空間定價一節。
長期儲存 每個月前 10 GB 免費,詳情請參閱儲存空間定價一節。
BigQuery Storage API BigQuery Storage API 並未包含在免費方案中。
串流資料插入 您必須為成功插入的資料列付費,每個資料列採計的最低資料量為 1 KB。詳情請參閱串流資料的價格一節。
查詢 (以量計價) 每個月前 1 TB 免費,詳情請參閱以量計價一節。
查詢 (每月固定費率) 您可以購買額外的運算單元 (以 500 個運算單元為單位遞增)。詳情請參閱每月固定費率的定價方案。
查詢 (每年固定費率) 您可以購買額外的運算單元 (以 500 個運算單元為單位遞增)。系統會按月向您收取費用。詳情請參閱每年固定費率的定價方案。

如果您使用美元以外的貨幣付費,系統將按照 Cloud Platform SKU 頁面上列出的相應貨幣價格來計費。

計費方式

您建立的每項專案都會連結至一個帳單帳戶,在專案中執行 BigQuery 工作 (例如查詢工作) 產生的所有費用都會計入該帳單帳戶,即使您是與機構外的人員共用專案資源也一樣。此外,BigQuery 儲存空間的相關費用也會計入與您專案相連結的帳單帳戶中。

如何解讀帳單資料

您可以使用 GCP 主控台的 Cloud 帳單報表頁面查看 BigQuery 的費用和趨勢。如果您想知道如何透過報表解讀自己的帳單資料,請參閱使用帳單報表查看費用趨勢一文。

想瞭解如何透過 BigQuery 分析帳單資料,請參閱 Cloud Billing 說明文件中的將帳單資料匯出至 BigQuery

免費作業項目

下表列出在各個位置皆可免費使用的 BigQuery 作業項目,這些作業適用 BigQuery 的使用配額與限制

作業 說明
載入資料

您從 Cloud Storage 將資料載入至 BigQuery 時,無須支付載入作業的費用,但須支付在 Cloud Storage 中儲存資料的費用。詳情請參閱 Cloud Storage 定價頁面上的資料儲存一節。資料載入至 BigQuery 後,將適用 BigQuery 的儲存空間定價。詳情請參閱將資料載入至 BigQuery 一文。

您在 BigQuery 中建立資料集時,必須為資料選擇儲存位置。如果您選擇 US,就能從任何其他地區的 Cloud Storage 值區將資料載入至資料集中的資料表。另外,從其他地區將資料載入至 US 資料集時,您目前無須支付任何網際網路輸出費用。

如果您是選擇 US 以外的位置,則必須採用下列方式:

  • 從該地區的 Cloud Storage 值區中載入資料 (值區可以是多地區值區,也可以是與資料集位於同一地區的單一地區值區)
  • 將資料複製到該地區的值區

當您將資料從一個 Cloud Storage 地區複製到另一個 Cloud Storage 地區時,將適用 Cloud Storage 的網路價格

複製資料 複製資料表無須付費,但儲存新的資料表和您所複製的資料表則須付費。詳情請參閱複製現有資料表的相關說明。
匯出資料 您從 BigQuery 將資料匯出至 Cloud Storage 時,無須支付匯出作業的費用,但須支付在 Cloud Storage 中儲存資料的費用。詳情請參閱 Cloud Storage 定價頁面上的資料儲存一節,以及從 BigQuery 匯出資料的相關說明。
刪除資料集 刪除資料集無須付費。
刪除資料表、檢視表和分區 刪除資料表、檢視表或個別資料表分區都不必付費。
中繼資料作業 您無須支付 list、get、patch、update 及 delete 的呼叫費用,其中包含但不限於以下項目:列出資料集、更新資料集的存取權控制清單,以及更新資料表的說明。
讀取虛擬資料欄 您可以免費查詢下列虛擬資料欄的內容:

_TABLE_SUFFIX:在查詢萬用字元資料表時,或是在標準 SQL 資料表中達到修飾符語意時使用
_PARTITIONDATE:在查詢擷取時間分區資料表時使用
_PARTITIONTIME:在查詢擷取時間分區資料表時使用
_FILE_NAME:在查詢以外部資料來源為基礎的資料表時使用
讀取中繼資料表 您可以免費查詢下列中繼資料表的內容:

__PARTITIONS_SUMMARY__ - 在取得分區資料表或擷取時間分區資料表中的分區相關中繼資料時使用
__TABLES_SUMMARY__ - 在取得資料集中的資料表和檢視表相關中繼資料時使用

永久免費的用量限制

Google Cloud Platform 免費方案中,BigQuery 為部分資源提供一定額度的免費用量。在免費試用期間或試用期結束後,您在相關用量限制內皆可免費使用特定資源。免費試用期過後,如果您超過用量限制,系統就會根據本頁列出的價格向您收取費用。

資源 每月免費用量限制 說明
儲存空間 每個月的前 10 GB 免費。 BigQuery ML 模型和儲存在 BigQuery 中的訓練資料包含在 BigQuery 儲存空間的免費方案中。
查詢 (分析) 每個月處理的前 1 TB 查詢資料免費。 使用 BigQuery ML 預測、檢查與評估函式的查詢包含在 BigQuery 分析的免費方案中,但內含 CREATE MODEL 陳述式的 BigQuery ML 查詢除外。
偏好每個月支付固定費用的高用量客戶也可選擇 BigQuery 固定費率
BigQuery ML CREATE MODEL 查詢 每月由包含 CREATE MODEL 陳述式的查詢所處理的前 10 GB 資料免費。 BigQuery ML CREATE MODEL 查詢與 BigQuery 分析的免費用量無關。

查詢的價格

查詢的價格是指執行 SQL 指令、使用者定義函式,以及符合資格的資料操縱語言 (DML)資料定義語言 (DDL) 陳述式所產生的費用。

BigQuery 提供兩種計費模式:

  • 以量計價是具備彈性與效率的計費模式。系統僅會根據您執行的查詢向您收取費用。
  • 固定費率採用每月收取固定費用的計費模式,您可事先知道自己須負擔多少費用。

根據預設,系統會按照以量計價的模式向您收取費用。您可以選擇符合自身需求的計費模式。您也可以針對不同的專案與位置,自由搭配這兩種計費模式。

以量計價

在以量計價的模式中,BigQuery 會根據「系統處理的位元組數」(也就是系統讀取的位元組數) 這項指標來收取執行查詢作業的費用。無論資料是儲存在 BigQuery 或 Cloud Storage、Google 雲端硬碟、Cloud BigTable 等外部資料來源,您都必須為系統處理的位元組數支付費用。費用完全取決於用量。

以量計價模式的查詢價格如下:

美國 (多地區) 歐盟 (多地區) 洛杉磯 (us-west2) 蒙特婁 (northamerica-northeast1) 北維吉尼亞州 (us-east4) 聖保羅 (southamerica-east1) 芬蘭 (europe-north1) 倫敦 (europe-west2) 蘇黎世 (europe-west6) 香港 (asia-east2) 孟買 (asia-south1) 台灣 (asia-east1) 東京 (asia-northeast1) 新加坡 (asia-southeast1) 雪梨 (australia-southeast1)
按月計費
作業 價格 說明
查詢 (以量計價) 每個月前 1 TB 免費。 偏好支付定額月費的高用量客戶也可以選擇採用固定費率

如果您使用美元以外的貨幣付費,系統將按照 Cloud Platform SKU 頁面上列出的相應貨幣價格來計費。

請留意下列查詢費用相關事項:

  • BigQuery 採用資料欄式資料結構。系統會根據您所選資料欄中處理完畢的總資料量向您收取費用,每個資料欄中的總資料量則是按照資料欄中資料的類型計算。如要進一步瞭解資料量的計算方式,請參閱資料量的計算方式一節。
  • 如果查詢作業傳回錯誤訊息或是從快取中擷取結果,則您無須付費。
  • 資料量會四捨五入至最接近的 MB 數。針對查詢所參照的每個資料表,系統處理的資料量基本額度為 10 MB,每項查詢作業處理的資料量基本額度也同樣是 10 MB。
  • 即便您取消正在執行的查詢工作,該項作業還是可能產生費用,且價格最高等同於完整執行作業須支付的全額費用。
  • 當您執行查詢時,系統會根據您選取的資料欄中處理的資料量向您收取費用,即使您已明確為結果設定 LIMIT 也是如此。
  • 將資料表分區分群有助於降低查詢所處理的資料量。為達到最佳做法的成效,請儘可能採用分區和分群的做法。
  • 以量計價的查詢價格是指 Google Cloud Platform SKU 頁面上所列的分析價格。

在以量計價模式下控制查詢成本

BigQuery 提供成本管理功能,可讓您將查詢的成本控制在一定額度內。您可以設定下列項目:

固定費率

偏好每個月支付固定查詢作業費用的客戶可以選用 BigQuery 提供的固定費率計價方式,而不必根據系統實際處理的資料量 (以 TB 為單位) 來付費。

註冊固定費率的定價方案時,您購買的查詢處理作業專用資料量是以 BigQuery 運算單元為計算單位。系統處理所有位元組所產生的費用都會包含在您每個月支付的固定費用中。如果您的查詢超出固定費率提供的資料量,查詢會按比例調節執行速度,以更慢的速度執行,直到您有更多固定費率資源可用為止。

固定費率計價方式:

  • 適用於查詢費用,包括 DML 和 DDL 陳述式。
  • 不適用於儲存空間費用。如需儲存空間費用的詳細資訊,請參閱儲存空間定價一節。
  • 僅適用於地區性資源的購買。在特定地區購買的固定費率資料量無法用於其他地區。
  • 允許客戶聯絡 Google Cloud Platform 支援來提高每項專案的並行配額。
  • 提供月約方案和年約方案。

固定費率定價方案的詳細資料

如果註冊固定費率定價方案:

  • 月約方案自確認購買日期算起 30 天內無法取消,亦無法降級。

    前 30 天過後,即可隨時取消或降級。如果選擇取消或降級,系統會根據每月費率的每秒價格,按使用比例向您收取費用。

    例如:

    • 您無法在第 29 天取消。
    • 如果您在進入第 31 天的第一秒鐘取消,系統會向您收取 30 天又 1 秒的費用。
    • 如果您在第三個月的月中取消,系統會根據每月費率向您收取 50% 的該月費用。
  • 年約方案在一年的效期內無法取消,亦無法降級。

    在合約日期屆滿周年之前,您可以選擇續約一年,或選擇在一年期滿後改用每月固定費率方案。如果改用每月費率的方案,您可以隨時取消方案。系統會根據每月費率的每秒價格,按使用比例向您收取費用。

    例如:

    • 如果選擇在合約日期屆滿周年後續約一年,即會展開新的年約,系統會繼續向您收取年約方案的費用。
    • 如果在合約日期屆滿周年後不再續約,則可隨時取消方案。系統會根據每月費率的每秒價格,按使用比例向您收取費用。
  • 如要購買額外的 BigQuery 運算單元,您必須簽署新方案。

  • 購買的固定費率定價方案僅適用於特定 BigQuery 位置
    您在購買固定費率定價方案時,可以按照位置指定運算單元的分配方式。如要在多個位置使用運算單元,您必須在各個位置購買運算單元。
  • 固定費率與以量計價的定價方案可搭配使用
    專案可採用固定費率或以量計價的定價方案。如果您在某位置擁有多個專案,則可以選擇哪些專案要採用固定費率,哪些專案要採用以量計價。
  • 如要停用固定費率的定價方案,您必須取消方案或將方案降級。

每月固定費率的定價方案

註冊固定費率的定價方案時,您購買的資料量是以 BigQuery 運算單元為單位進行計算。下表提供依您購買的每月固定費率方案所分配的運算單元數資訊。

美國 (多地區) 歐盟 (多地區) 洛杉磯 (us-west2) 蒙特婁 (northamerica-northeast1) 北維吉尼亞州 (us-east4) 聖保羅 (southamerica-east1) 芬蘭 (europe-north1) 倫敦 (europe-west2) 蘇黎世 (europe-west6) 香港 (asia-east2) 孟買 (asia-south1) 台灣 (asia-east1) 東京 (asia-northeast1) 新加坡 (asia-southeast1) 雪梨 (australia-southeast1)
按月計費
每月費用 運算單元數量
500

如果您使用美元以外的貨幣付費,系統將按照 Cloud Platform SKU 頁面上列出的相應貨幣價格來計費。

每年固定費率的定價方案

註冊固定費率的定價方案時,您購買的資料量是以 BigQuery 運算單元為單位進行計算。下表提供依您購買的每年固定費率方案所分配的運算單元數資訊。註冊每年固定費率的方案時,系統會按月向您收取費用。

美國 (多地區) 歐盟 (多地區) 洛杉磯 (us-west2) 蒙特婁 (northamerica-northeast1) 北維吉尼亞州 (us-east4) 聖保羅 (southamerica-east1) 芬蘭 (europe-north1) 倫敦 (europe-west2) 蘇黎世 (europe-west6) 香港 (asia-east2) 孟買 (asia-south1) 台灣 (asia-east1) 東京 (asia-northeast1) 新加坡 (asia-southeast1) 雪梨 (australia-southeast1)
按月計費
每月費用 運算單元數量
500

如果您使用美元以外的貨幣付費,系統將按照 Cloud Platform SKU 頁面上列出的相應貨幣價格來計費。

透過月約方案與年約方案購買運算單元的服務目前仍為 Alpha 版。如欲使用 Alpha 版,請填寫這份表單

對於偏好續用現行固定費率方案的客戶,一切收費如常進行。如要續用目前的固定費率方案,請洽詢您的業務代表

儲存空間定價

您的資料載入至 BigQuery 後,您就必須支付儲存資料的費用。系統會根據資料表中儲存的資料量 (在未經壓縮的狀態下) 計算儲存空間費用。

資料量是以個別資料欄中的資料類型做為計算依據。如要深入瞭解資料量的計算方式,請參閱資料量的計算方式一節。

動態儲存

動態儲存的價格如下:

美國 (多地區) 歐盟 (多地區) 洛杉磯 (us-west2) 蒙特婁 (northamerica-northeast1) 北維吉尼亞州 (us-east4) 聖保羅 (southamerica-east1) 芬蘭 (europe-north1) 倫敦 (europe-west2) 蘇黎世 (europe-west6) 香港 (asia-east2) 孟買 (asia-south1) 台灣 (asia-east1) 東京 (asia-northeast1) 新加坡 (asia-southeast1) 雪梨 (australia-southeast1)
按月計費
儲存空間類型 價格 說明
動態儲存 每個月前 10 GB 免費。

如果您使用美元以外的貨幣付費,系統將按照 Cloud Platform SKU 頁面上列出的相應貨幣價格來計費。

儲存空間價格是以每秒每 MB 按比例計算。以下舉例說明儲存空間的使用方式和您必須支付的費用:

  • 半個月 100 MB,您必須支付 $0.001 美元 (十分之一美分)
  • 半個月 500 GB,您必須支付 $5 美元
  • 一個月 1 TB,您必須支付 $20 美元

長期儲存

如果資料表連續 90 天都未經編輯,系統會自動將儲存空間價格調降約 50%。資料表經系統歸類至長期儲存模式後,效能、耐用性和可用性都不會下降,其他功能也不會受損,因此請您放心。

長期儲存的費用如下:

美國 (多地區) 歐盟 (多地區) 洛杉磯 (us-west2) 蒙特婁 (northamerica-northeast1) 北維吉尼亞州 (us-east4) 聖保羅 (southamerica-east1) 芬蘭 (europe-north1) 倫敦 (europe-west2) 蘇黎世 (europe-west6) 香港 (asia-east2) 孟買 (asia-south1) 台灣 (asia-east1) 東京 (asia-northeast1) 新加坡 (asia-southeast1) 雪梨 (australia-southeast1)
按月計費
儲存空間類型 價格 說明
長期儲存 每個月前 10 GB 免費。

資料表經過編輯之後,就會恢復為標準儲存價格,先前累計的 90 天閒置期也會歸零並重新開始計算。任何修改資料表的動作都會讓計時器歸零,包括:

動作 說明
將資料載入至資料表 將資料附加至目的地資料表或覆寫目的地資料表的任何載入或查詢作業。
將資料複製到資料表 將資料附加至目的地資料表或覆寫目的地資料表的任何複製作業。
將查詢結果寫入資料表 將資料附加至目的地資料表或覆寫目的地資料表的任何查詢作業。
使用資料操縱語言 (DML) 使用 DML 陳述式來修改資料表中的資料。
使用資料定義語言 (DDL) 使用「CREATE OR REPLACE TABLE」DDL 陳述式 來替換資料表。
將資料串流至資料表 使用 tabledata.insertAll API 呼叫來擷取資料。

其他作業均不會導致系統重設計時器,這些作業包括:

  • 查詢資料表
  • 建立可查詢資料表的檢視工作
  • 從資料表中匯出資料
  • 將資料表複製到另一個目的地資料表
  • 修補或更新資料表資源

在判斷特定資料是否適用長期儲存價格時,系統會將分區資料表中的每個分區視為獨立的單位。如果某個資料表分區在過去 90 天內未經修改,該分區中的資料使用方式就會被歸類為長期儲存,並以折扣價格計費。

如果資料表在單一帳單週期內達到 90 天的門檻,其儲存空間價格就會按比例計算。

長期儲存價格僅適用於 BigQuery 儲存空間,並不適用於 Cloud BigTable、Cloud Storage 和 Google 雲端硬碟等外部資料來源中儲存的資料。

BigQuery Storage API 計價方式

BigQuery Storage API 的價格取決於在 ReadRows 串流作業執行期間,分配到串流的資料量。費用的計算依據為傳入的資料量,而非傳輸的位元組數。

資料量是以個別資料欄中的資料類型做為計算依據。如要深入瞭解資料量的計算方式,請參閱資料量的計算方式一節。

以量計價

BigQuery Storage API 以量計價的收費方式如下:

美國 (多地區) 歐盟 (多地區) 洛杉磯 (us-west2) 蒙特婁 (northamerica-northeast1) 北維吉尼亞州 (us-east4) 聖保羅 (southamerica-east1) 芬蘭 (europe-north1) 倫敦 (europe-west2) 蘇黎世 (europe-west6) 香港 (asia-east2) 孟買 (asia-south1) 台灣 (asia-east1) 東京 (asia-northeast1) 新加坡 (asia-southeast1) 雪梨 (australia-southeast1)
按月計費
價格 說明
BigQuery Storage API 並未包含在免費方案中。

如果您使用美元以外的貨幣付費,系統將按照 Cloud Platform SKU 頁面上列出的相應貨幣價格來計費。

固定費率

採用固定費率計價方式的客戶目前可以使用 BigQuery Storage API 每月免費讀取最多 300 TB 的資料量。如果超過每月 300 TB 的配額,則會按照以量計價的方式收取讀取資料量的費用。

資料量的計算方式

在您查詢資料或將資料載入至 BigQuery 時,系統會依據該筆資料的大小向您收取費用,資料量的計算方式則視各欄的資料類型大小而定。

您儲存的資料大小與您的查詢作業處理的資料量計算單位為 GB,1 GB 等於 230 個位元組,這種計算單位又稱為 GiB。同理,1 TB 為 240 個位元組,也就是 1024 GB。

BigQuery 的資料類型與大小資訊如下:

資料類型 大小
INT64/INTEGER 8 個位元組
FLOAT64/FLOAT 8 個位元組
NUMERIC 16 個位元組
BOOL/BOOLEAN 1 個位元組
STRING 2 個位元組 + UTF-8 編碼的字串大小
BYTES 2 個位元組 + 值中的位元組數
DATE 8 個位元組
DATETIME 8 個位元組
TIME 8 個位元組
TIMESTAMP 8 個位元組
STRUCT/RECORD 0 個位元組 + 所含欄位的大小
GEOGRAPHY 16 個位元組 + 24 個位元組 * 地理位置類型中的端點數 (您可以使用 ST_NumPoints 函式來確認端點數量)

計算資料大小時,所有資料類型的空值皆為 0 個位元組。

重複欄會以陣列的形式儲存,其資料量大小的計算依據為值的數量。舉例來說,重複 (ARRAY<INT64>) 且包含 4 個項目的整數資料欄 (INT64) 會計為 32 個位元組 (4 個項目 x 8 個位元組)。

串流資料的價格

將資料載入至 BigQuery 為免費服務,但您必須支付一筆小額的串流資料費用。

串流資料插入的價格如下:

美國 (多地區) 歐盟 (多地區) 洛杉磯 (us-west2) 蒙特婁 (northamerica-northeast1) 北維吉尼亞州 (us-east4) 聖保羅 (southamerica-east1) 芬蘭 (europe-north1) 倫敦 (europe-west2) 蘇黎世 (europe-west6) 香港 (asia-east2) 孟買 (asia-south1) 台灣 (asia-east1) 東京 (asia-northeast1) 新加坡 (asia-southeast1) 雪梨 (australia-southeast1)
按月計費
作業 價格 說明
串流資料插入 您必須為成功插入的資料列付費,每個資料列採計的最低資料量為 1 KB。

資料操縱語言 (DML) 的價格

BigQuery 會根據查詢處理的資料量 (以位元組為單位) 來收取執行 DML 查詢作業的費用。

非分區資料表的資料操縱語言定價

如果是非分區資料表,我們會根據以下方式來計算系統所處理的資料量:

DML 陳述式 處理的位元組數
INSERT 系統為從查詢掃描的資料表中參照的所有資料欄處理的總位元組數。
UPDATE 從查詢掃描的資料表中參照的所有資料欄的總位元組數
+ UPDATE 開始執行時更新的資料表中所有資料欄的總位元組數。
DELETE 從查詢掃描的資料表中參照的所有資料欄的總位元組數
+ DELETE 開始執行時修改的資料表中所有資料欄的總位元組數。
MERGE MERGE 陳述式中只有 INSERT 子句,您必須為所有資料欄處理的總位元組付費 (資料欄參照於查詢掃描的所有資料表)。
MERGE 陳述式中有 UPDATEDELETE 子句,您必須為所有資料欄所處理的總位元組付費 (資料欄參照於查詢掃描的來源資料表)。
+ MERGE 開始執行時,目標資料表中所有資料欄的總位元組數。

分區資料表的 DML 價格

如果是分區資料表,我們會根據以下方式來計算系統所處理的資料量:

DML 陳述式 處理的位元組數
INSERT 系統為從查詢掃描的所有分區中參照的所有資料欄處理的總位元組數。
UPDATE 系統為查詢所掃描資料表的所有分區中參照的所有資料欄處理的總位元組數
+ UPDATE 開始執行時,正在更新的資料表所含的已更新或已掃描分區中所有資料欄的總位元組數
DELETE 系統為查詢所掃描資料表的所有分區中參照的所有資料欄處理的總位元組數
+ DELETE 開始執行時,正在修改的資料表所含的已修改或已掃描分區中所有資料欄的總位元組數。
MERGE MERGE 陳述式中只有 INSERT 子句,您必須為所有資料欄處理的總位元組付費 (資料欄參照於查詢掃描的所有分區)。
如果 UPDATE 陳述式中只有 DELETEMERGE 子句,您必須為所有資料欄處理的總位元組付費 (資料欄參照於查詢掃描的來源資料表中涵蓋的所有分區)
+ MERGE 開始執行時,目標資料表中已更新、已刪除或已掃描分區中所有資料欄的總位元組數。

資料定義語言的價格

BigQuery 會根據查詢處理的位元組數來收取執行資料定義語言查詢作業的費用。處理的位元組數將會根據 DDL 陳述式來計算:

DDL 陳述式 處理的位元組數
CREATE TABLE 無。
CREATE TABLE ... AS SELECT ... 系統為從查詢掃描的資料表中參照的所有資料欄處理的總位元組數。
CREATE VIEW 無。
DROP TABLE 無。
DROP VIEW 無。

叢集資料表的價格

您在 BigQuery 中建立及使用分群資料表時,系統會根據儲存在該資料表中的資料量,以及您針對這些資料所執行的查詢計算費用。叢集資料表會修剪資料,如此一來,查詢就不會處理修剪掉的資料,查詢成本也會因而降低。這個過程稱之為區塊修剪。

區塊修剪

BigQuery 根據叢集資料欄的值在叢集資料表中進行資料排序,並將資料組織成區塊。

若您提交叢集資料欄含有篩選器的查詢,BigQuery 會使用叢集資訊有效確定區塊是否包含任何與查詢相關的資料,因而只掃描相關區塊,這樣的過程就稱為區塊修剪。

查詢會基於已處理的位元組數量來收費。若您對叢集資料表執行查詢,且查詢的叢集資料欄含有篩選器,則 BigQuery 會使用篩選器表達式及區塊中繼資料來修剪查詢所掃描的區塊。

系統不會對被修剪掉的區塊進行掃描。只有已掃描的區塊會用以計算查詢所處理的資料位元組數。查詢在叢集資料表中所處理的位元組數,等同於查詢在已掃描區塊中參照的每一個資料欄所讀取的總位元組數。

如果系統在採用了多項篩選器的查詢中多次參照同一個叢集資料表,BigQuery 會針對各項篩選器相應區塊內資料欄的掃描作業向您收取費用。

BigQuery 計費示例

估算查詢費用

如需查詢的計費範例,請參閱估算查詢費用

估算儲存空間費用

如需儲存空間的計費範例,請參閱估算儲存空間費用

非分區資料表的資料操縱語言計費範例

以下範例說明 BigQuery 如何計算修改非分區資料表的 DML 陳述式讀取的位元組數。

範例 1:非分區資料表 (「UPDATE」)

table1 有兩個資料欄:INTEGER 類型的 col1STRING 類型的 col2

UPDATE table1 SET col1 = 1 WHERE col1 = 2;

此範例中處理的位元組數 =

  • col1 中的總位元組數 +
  • col2 中的總位元組數

範例 2:非分區資料表 (「UPDATE」)

table1 有兩個資料欄:INTEGER 類型的 col1STRING 類型的 col2table2 有一個資料欄:INTEGER 類型的 field1

UPDATE table1 SET col1 = 1 WHERE col1 in (SELECT field1 from table2)

此範例中處理的位元組數 =

  • UPDATEtable1.col1 中的總位元組數 +
  • UPDATEtable1.col2 中的總位元組數 +
  • table2.field1 中的總位元組數

分區資料表的資料操縱語言計費範例

以下範例說明 BigQuery 如何計算修改擷取時間和分區資料表的 DML 陳述式讀取的位元組數。如要查看下列範例資料表的 JSON 結構定義表示,請參閱「使用 DML 陳述式更新分區資料表資料」頁面上的範例中使用的資料表

範例 1:擷取時間分區的資料表 (「INSERT」)

mytable2 有兩個資料欄:INTEGER 類型的 idTIMESTAMP 類型的 tsmytable 有兩個資料欄:INTEGER 類型的 field1STRING 類型的 field2

INSERT INTO mytable (_PARTITIONTIME, field1) AS SELECT TIMESTAMP(DATE(ts)), id from mytable2

此範例中處理的位元組數 =

  • mytable2.ts 中的總位元組數 +
  • mytable2.id 中的總位元組數

插入資料列的資料表大小 - mytable - 不會影響查詢的費用。

範例 2:分區的資料表 (「INSERT」)

mytable2 有兩個資料欄:INTEGER 類型的 idTIMESTAMP 類型的 tsmycolumntable 有四個資料欄:INTEGER 類型的 field1STRING 類型的 field2BOOLEAN 類型的 field3TIMESTAMP 類型的 ts

INSERT INTO mycolumntable (ts, field1) AS SELECT ts, id from mytable2

此範例中處理的位元組數 =

  • mytable2.ts 中的總位元組數 +
  • mytable2.id 中的總位元組數

插入資料列的資料表大小 - mycolumntable - 不會影響查詢的費用。

範例 3:擷取時間分區的資料表 (「UPDATE」)

DML 陳述式 1:更新單一分區

mytable2 有兩個資料欄:INTEGER 類型的 idTIMESTAMP 類型的 tsmytable 有兩個資料欄:INTEGER 類型的 field1STRING 類型的 field2

UPDATE project.mydataset.mytable T SET T.field1 = T.field1 + 100 WHERE T._PARTITIONTIME = TIMESTAMP(“2017-05-01”) AND EXISTS (SELECT S.id from project.mydataset.mytable2 S WHERE S.id = T.field1)

此範例中處理的位元組數 =

  • mytable2.id 中的總位元組數 +
  • 「2017-05-01」分區中 mytable.field1 內的總位元組數 +
  • 「2017-05-01」分區中 mytable.field2 內的總位元組數

DML 陳述式 2:根據資料表中的一個分區來更新另一個分區

UPDATE project.mydataset.mytable T SET T._PARTITIONTIME = TIMESTAMP(“2017-06-01”), T.field1 = T.field1 + 100 WHERE T._PARTITIONTIME = TIMESTAMP(“2017-05-01”) AND EXISTS (SELECT 1 from project.mydataset.mytable S WHERE S.field1 = T.field1 AND S._PARTITIONTIME = TIMESTAMP("2017-06-01") )

此範例中處理的位元組數 =

  • 「2017-05-01」分區中 mytable.field1 內的總位元組數 +
  • 「2017-05-01」分區中 mytable.field2 內的總位元組數 +
  • 「2017-06-01」分區中 mytable.field1 內的總位元組數 +
  • 「2017-06-01」分區中 mytable.field2 內的總位元組數

在這種情況下,「UPDATE」陳述式的費用為對應「2017-05-01」和「2017-06-01」的分區中所有欄位大小的總和。

範例 4:分區的資料表 (「UPDATE」)

DML 陳述式 1:更新單一分區

mytable2 有兩個資料欄:INTEGER 類型的 idTIMESTAMP 類型的 tsmycolumntable 有四個資料欄:INTEGER 類型的 field1STRING 類型的 field2BOOLEAN 類型的 field3TIMESTAMP 類型的 ts

UPDATE project.mydataset.mycolumntable T SET T.field1 = T.field1 + 100 WHERE DATE(T.ts) = “2017-05-01” AND EXISTS (SELECT S.id from project.mydataset.mytable2 S WHERE S.id = T.field1)

此範例中處理的位元組數 =

  • mytable2.id 中的總位元組數 +
  • 「2017-05-01」分區中 mycolumntable.field1 內的總位元組數 +
  • 「2017-05-01」分區中 mycolumntable.field2 內的總位元組數 +
  • 「2017-05-01」分區中 mycolumntable.field3 內的總位元組數 +
  • 「2017-05-01」分區中 mycolumntable.ts 內的總位元組數

DML 陳述式 2:根據資料表中的一個分區來更新另一個分區

UPDATE project.mydataset.mycolumntable T SET T.ts = TIMESTAMP(“2017-06-01”), T.field1 = T.field1 + 100 WHERE DATE(T.ts) = “2017-05-01” AND EXISTS (SELECT 1 from project.mydataset.mycolumntable S WHERE S.field1 = T.field1 AND DATE(S.ts) = "2017-06-01")

此範例中處理的位元組數 =

  • 「2017-05-01」分區中 mycolumntable.field1 內的總位元組數 +
  • 「2017-05-01」分區中 mycolumntable.field2 內的總位元組數 +
  • 「2017-05-01」分區中 mycolumntable.field3 內的總位元組數 +
  • 「2017-05-01」分區中 mycolumntable.ts 內的總位元組數 +
  • 「2017-06-01」分區中 mycolumntable.field1 內的總位元組數 +
  • 「2017-06-01」分區中 mycolumntable.field2 內的總位元組數 +
  • 「2017-06-01」分區中 mycolumntable.field3 內的總位元組數 +
  • 「2017-06-01」分區中 mycolumntable.ts 內的總位元組數

在這種情況下,「UPDATE」陳述式的費用為對應「2017-05-01」和「2017-06-01」的分區中所有欄位大小的總和。

範例 5:擷取時間分區的資料表 (「DELETE」)

mytable2 有兩個資料欄:INTEGER 類型的 idTIMESTAMP 類型的 tsmytable 有兩個資料欄:INTEGER 類型的 field1STRING 類型的 field2

DELETE project.mydataset.mytable T WHERE T._PARTITIONTIME = TIMESTAMP(“2017-05-01”) AND EXISTS (SELECT S.id from project.mydataset.mytable2 S WHERE S.id = T.field1)

此範例中處理的位元組數 =

  • mytable2.id 中的總位元組數 +
  • 「2017-05-01」分區中 mytable.field1 內的總位元組數 +
  • 「2017-05-01」分區中 mytable.field2 內的總位元組數

範例 6:分區的資料表 (「DELETE」)

mytable2 有兩個資料欄:INTEGER 類型的 idTIMESTAMP 類型的 tsmycolumntable 有四個資料欄:INTEGER 類型的 field1STRING 類型的 field2BOOLEAN 類型的 field3TIMESTAMP 類型的 ts

DELETE project.mydataset.mycolumntable T WHERE DATE(T.ts) =“2017-05-01” AND EXISTS (SELECT S.id from project.mydataset.mytable2 S WHERE S.id = T.field1)

此範例中處理的位元組數 =

  • mytable2.id 中的總位元組數 +
  • 「2017-05-01」分區中 mycolumntable.field1 內的總位元組數 +
  • 「2017-05-01」分區中 mycolumntable.field2 內的總位元組數 +
  • 「2017-05-01」分區中 mycolumntable.field3 內的總位元組數 +
  • 「2017-05-01」分區中 mycolumntable.ts 內的總位元組數

叢集資料表的計費範例

您有一個名為 ClusteredSalesData 的叢集資料表。該資料表由 timestamp 資料欄分區,並由 customer_id 資料欄建為叢集。資料將分類至以下這組區塊:

分區 ID 區塊 ID 區塊中 customer_id 的下限 區塊中 customer_id 的上限
20160501 B1 10000 19999
20160501 B2 20000 24999
20160502 B1 15000 17999
20160501 B4 22000 2799

您對該資料表進行以下的查詢。查詢包含了 customer_id 資料欄的篩選器。

SELECT
  SUM(totalSale)
FROM
  `mydataset.ClusteredSalesData`
WHERE
  customer_id BETWEEN 20000
  AND 23000
  AND DATE(timestamp) = "2016-05-01"

這項查詢:

  • 在 B2 和 B4 區塊中掃描 timestampcustomer_idtotalSale 資料欄。
  • DATE(timestamp) = "2016-05-01" 篩選器位於 timestamp 分區資料欄,因此修剪 B3 區塊。
  • customer_id BETWEEN 20000 AND 23000 篩選器位於 customer_id 分群資料欄,因此修剪 B1 區塊。
本頁內容對您是否有任何幫助?請提供意見:

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

這個網頁