匯出價格資料的結構

本文提供匯出至 BigQuery 各資料表的 Cloud Billing 定價資料結構定義參考資訊。

價格資料的結構定義

在您的 BigQuery 資料集中,Cloud Billing 帳戶價格資料會載入至名為 cloud_pricing_export 的資料表。

以下資訊說明匯出至 BigQuery 的 Cloud Billing 帳戶定價資料結構定義。

欄位 類型 說明
export_time 時間戳記 與附加 Cloud Billing 資料相關聯的處理時間。 每次執行新的匯出作業後,這個值一定會增加。
pricing_as_of_time 時間戳記 系統每天會產生一次適用於 Cloud Billing 帳戶的價格資料,以便匯出至 BigQuery。這是產生價格資料的每日時間戳記。
billing_account_id 字串 與價格相關聯的 Cloud Billing 帳戶 ID。
billing_account_name 字串

與價格相關聯的 Cloud Billing 帳戶名稱。

business_entity_name 字串 提供 SKU 的服務所屬 Google 服務系列名稱。值包括 GCP (Google Cloud) 或 Maps (Google 地圖平台)。
service.id 字串 回報 Cloud Billing 資料的 Google Cloud 服務或 Google 地圖平台 API ID。例如「6F81-5844-456A」
service.description 字串 回報 Cloud Billing 資料的 Google Cloud 服務或 Google 地圖平台 API 說明。例如「Compute Engine」
sku.id 字串 服務所用資源 SKU 的專屬 ID。 例如「2E27-4F75-95CD」。如需完整 SKU 清單,請參閱 Google Cloud SKU
sku.description 字串 服務使用的資源 SKU 的說明,例如「在美洲執行的 N1 預先定義執行個體核心」
sku.destination_migration_mappings 字串陣列 這個 SKU 要遷移的目的地 SKU 名稱。
product_taxonomy 字串陣列 套用至 SKU 的產品類別清單,例如「無伺服器」、「Cloud Run」、「TaskQueue」、「VM On Demand」、「Cores: Per Core」等。
geo_taxonomy 結構 適用於 SKU 的地理中繼資料,例如區域和多區域 (如 us-east4歐盟)。
geo_taxonomy.type 字串 與 SKU 相關聯的地理中繼資料類型。 有效值如下:
  • GLOBAL」沒有任何區域
  • REGIONAL:有一個區域
  • MULTI_REGION:有兩個以上的區域
geo_taxonomy.regions 字串陣列 與 SKU 相關聯的 Google Cloud 區域。 例如 Europe-west2US

「地區」是特定的地理位置,例如倫敦。 「多地區」是指包含兩個及以上地理位置的大型地理區域,例如美國。

pricing_unit 字串 使用量的計價單位簡寫 (例如 GiBy.mo)。
pricing_unit_description 字串 使用者可理解的使用量單位說明 (例如 GiB 月)。
account_currency_code 字串 Cloud Billing 帳戶設定的作業貨幣,使用 ISO 4217 定義的三碼貨幣代碼。 詳情請參閱 用當地貨幣支付帳單和自動付款
currency_conversion_rate 字串 美元兌 Cloud Billing 帳戶設定的當地貨幣匯率。如果 Cloud Billing 帳戶的幣別為美元,匯率預設為 1.0。

如果您的 Cloud 帳單費用是以美元以外的貨幣計費,可以使用以下公式將用量費用換算為美元: cost ÷ currency_conversion_rate = 美元計價的用量費用。

Google 以使用者所在地的貨幣收費時,會按照主要金融機構所公布的匯率,把定價換算成當地幣值的價格。包括以非美元幣別結帳時收取的任何附加費。我們將使用 pricing_as_of_time當天生效的匯率。

list_price 結構

Google Cloud 或 Google 地圖平台 SKU 的定價 和 SKU 定價層級,自 pricing_as_of_time起生效。

list_price 包含的欄位會說明定價的結構體和值,包括:

如要查看定價,請前往 list_price.tiered_rates.usd_amount

系統會為所有顧客產生並匯出定價資料。如果您的 Cloud Billing 帳戶採用自訂合約價格,系統也會匯出 帳單帳戶專屬的價格資料。

billing_account_price 結構

如果您有合約價格,這是與 Cloud Billing 帳戶連結的合約中,自訂 SKU 的價格。

billing_account_price 中的欄位會說明 Google Cloud和 Google 地圖平台 SKU,以及 SKU 定價層級 的自訂合約價格結構體和值。billing_account_price包含:

如要查看合約價格 (適用於您的 Cloud Billing 帳戶),請前往 billing_account_price.tiered_rates.usd_amount

price_info 結構 合約價格的背景資訊。
price_info.price_reason 字串

合約價格來源的背景資訊。

原因包括:

  • DEFAULT_PRICE:預設價格為 SKU 目前的定價。
  • FIXED_PRICE:SKU 的固定價格,適用於合約協議的條款期間。
  • FIXED_DISCOUNT:折扣百分比,以固定日期的定價為基準。
  • FLOATING_DISCOUNT:目前定價的折扣百分比 (並非以特定日期的定價為準)。
  • MIGRATED_PRICE:這適用於從其他 SKU 移轉的價格。
  • MERGED_PRICE:從多個來源合併後得出的 SKU 價格。舉例來說,合併層級後,每個層級可來自不同來源,並提供不同類型的折扣。
  • LIST_PRICE_AS_CEILING:這是選用合約功能,適用於 2022 年 3 月 21 日後的新合約。啟用後,如果目前定價低於自訂固定價格,系統會使用定價 (DEFAULT_PRICE) 做為 SKU 價格。適用於合約中的所有固定價格 SKU,包括 FIXED_PRICE、FIXED_DISCOUNT、MIGRATED_PRICE 和 MERGED_PRICE。
  • CONTRACTED_PRICE_PROTECTION:這適用於合約中受價格保障的 SKU。這個屬性很少使用。
price_info.discount_percent 數字 如果合約價格是計入折扣百分比 (FIXED_DISCOUNTFLOATING_DISCOUNT) 的計算結果,系統就會採用該折扣百分比。
price_info.discount_percent_fixed_date 日期 如果合約價格設為在特定日期套用折扣百分比 (FIXED_DISCOUNT),系統就會採用該日期。
price_info.discount_migrated_from 字串 如果是從其他 SKU 遷移的合約價格折扣 (MIGRATED_PRICE),這是折扣的來源 SKU。有時,當 SKU 分成兩個時,折扣會從舊 SKU 移轉至新 SKU。
aggregation_info 結構 代表單一 SKU 的 價格級別的匯總層級和間隔。
aggregation_info.aggregation_level 字串 使用量加總計算費用時的層級,適用於 定價層級

等級包括:

  • ACCOUNT:表示 SKU 採用多層級定價;系統會彙整單一 Cloud Billing 帳戶中所有專案的用量,以計算定價層級。
  • PROJECT:表示 SKU 採用分級定價,且各級別的 SKU 用量會依專案匯總。
  • UNKNOWN_AGGREGATION_LEVEL:表示單一級別定價的 SKU;這是非分級定價 SKU 的預設值。
aggregation_info.aggregation_interval 字串 使用量加總計算 價格層級費用的間隔單位。

間隔包括:

  • ONE_DAY:表示 SKU 採用分級定價,且系統每天會彙整各價格級別的 SKU 用量。
  • ONE_MONTH:表示 SKU 採用多層級定價;系統每月會彙整各定價層級的 SKU 用量。
  • UNKNOWN_AGGREGATION_INTERVAL:表示單一級別定價的 SKU;這是非分級定價 SKU 的預設值。
tiered_rates 字串陣列 定價層級的相關資訊,包括 SKU 的美元價格,以及 Cloud Billing 帳戶設定使用的 幣別價格。

部分 SKU 只有一個價格級別。如果 SKU 有多個價格級別,每個價格級別會顯示在不同的資料列中。您可以使用 tiered_rates.start_usage_amount 識別具有多個定價層級的 SKU。

tiered_rates.pricing_unit_quantity 浮點值 SKU 的價格級別單位數量。舉例來說,假設級別價格為每 1,000,000 個位元組 $1 美元,這個資料欄就會顯示「1,000,000」。
tiered_rates.start_usage_amount 浮點值 特定 價格級別的計費單位數量下限。舉例來說,如果 SKU 有三個價格級別 (0 到 100 個單位、101 到 1000 個單位,以及 1001 個以上單位),就會顯示三列價格,且 [tiered_rates].start_usage_amount 值分別為 0、101 和 1001。
tiered_rates.usd_amount 數字 SKU 的價格 (以美元計價)。
tiered_rates.account_currency_amount 數字 SKU 的層級價格從美元換算為 Cloud Billing 帳戶設定使用的貨幣,換算時會使用 currency_conversion_rate

轉換後的價格是使用下列公式計算而得: tiered_rates.usd_amount * currency_conversion_rate = tiered_rates.account_currency_amount

Google 以使用者所在地的貨幣收費時,會按照主要金融機構所公布的匯率,把定價換算成當地幣值的價格。包括以非美元幣別結帳時收取的任何附加費。我們將使用 pricing_as_of_time當天生效的匯率。

關於價格級別

SKU 價格是按價格級別提供。價格層級會根據不同層級提供定價結構。部分 SKU 只有一個價格級別,其他則有多個價格級別。採用多層級定價的 SKU 範例如下:

  • 提供免費用量方案的 SKU。例如:前 1,000 個單位免費。1001 個以上:每個 $1 美元。
  • 如果用量超過級別上限,每單位價格就會降低的 SKU。例如:1 到 100 個單位的價格為每個 $5 美元,101 到 1, 000 個單位的價格為每個 $4 美元,1, 001 個以上單位的價格為每個 $3 美元。

多層級定價注意事項:

  • 系統會根據 SKU 的aggregation_interval (每日或每月) 將層級用量計數器重設為零。

    • 每日 SKU 每天會在美國和加拿大太平洋時間 (UTC-8 或 UTC-7) 凌晨 12 點重設。
    • 每月 SKU 會在每個曆月的第一天 (例如 1 月、2 月等) 美國和加拿大太平洋時間 (UTC-8 或 UTC-7) 凌晨 12 點重設為零。
  • 各個 Cloud Billing 帳戶的層級是獨立運作,不會跨多個 Cloud Billing 帳戶彙整,即使專案位於同一機構或屬於同一法律實體也是如此。

  • 各層級的運作方式會因 SKU 而異:單一 SKU 的用量只會影響該 SKU 的價格。沒有任何 SKU 的用量會影響其他 SKU 的分層價格。

  • 定價的 SKU 價格級別可能與合約價格的價格級別不完全一致。這種情況很少見。

  • 如果 SKU 有多個價格級別,價目表會為每個 SKU 級別價格列出不同的資料列。您可以使用 tiered_rates.start_usage_amount 識別具有多個價格層級的 SKU。

  • 視查詢的編寫方式而定,您可以將 SKU 價格層級傳回為巢狀或非巢狀資料。如要進一步瞭解巢狀和非巢狀資料,請參閱 下列範例

價格資料查詢範例

本節提供範例,說明如何查詢匯出至 BigQuery 的 Cloud Billing 定價資料。

本節提供不同範例,說明如何查詢匯出至 BigQuery 的 Cloud Billing 定價資料

範例定價查詢中使用的常見值

本節的查詢範例使用下列值:

  • 資料表名稱project.dataset.cloud_pricing_export
  • SKU ID2DA5-55D3-E679 (Cloud Run - Requests)

取得特定 SKU 的定價

這個範例示範如何查詢指定 SKU 的每個定價級別list_price

標準 SQL

SELECT sku.id,  sku.description, list_price.*
FROM `project.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

_PARTITIONTIME 是 BigQuery 自動產生的欄位,代表資料所屬的日期。您可以改用 Cloud Billing 匯出功能明確產生的欄位,例如 pricing_as_of_time_PARTITIONTIME

以下是設為使用 pricing_as_of_time 欄位的相同查詢:

SELECT sku.id,  sku.description, list_price.*
FROM `project.dataset.cloud_pricing_export`
WHERE DATE(pricing_as_of_time) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查詢結果

id 說明 pricing_unit aggregation_info.
aggregation_level
aggregation_info.
aggregation_interval
tiered_rates.
pricing_unit_quantity
tiered_rates.
start_usage_amount
tiered_rates.
usd_amount
tiered_rates.
account_currency_amount
1 2DA5-55D3-E679 要求 COUNT ACCOUNT 每月 1000000 0 0 0
          1000000 2000000 0.4 0.4

取得特定 SKU 的定價,並加入服務說明

本節的兩個範例會示範查詢,傳回指定 SKU 的每個價格層級 list_price,並包含 SKU 說明和服務說明。

  • 範例 1 會為每個資料列傳回一個 SKU,並以巢狀資料的形式顯示價格級別。
  • 範例 2 說明如何取消巢狀結構資料,為每個定價層級的每個 SKU 傳回一列。

範例 1:傳回巢狀資料

這個範例會查詢單一 SKU,以傳回 list_price 資料。這個 SKU 有多個價格級別。定價欄位值會顯示在 SKU ID 資料列下方的個別資料列中。

標準 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       list_price.*
FROM my-billing-admin-project.my_billing_dataset.cloud_pricing_export
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查詢結果:

sku_id sku_description service_id service_description aggregation_info.
aggregation_level
aggregation_info.
aggregation_interval
tiered_rates.
pricing_unit_quantity
tiered_rates.
start_usage_amount
tiered_rates.
usd_amount
tiered_rates.
account_currency_amount
1 2DA5-55D3-E679 要求 152E-C115-5142 Cloud Run ACCOUNT 每月 1000000 0 0 0
            1000000 2000000 0.4 0.4

範例 2:傳回與相同資料表聯結的未巢狀資料

這個範例會查詢單一 SKU,並傳回 list price。SKU 有多個價格級別。這項查詢示範如何使用 UNNEST 運算子tiered_rates 陣列扁平化,並將欄位與相同資料表彙整,為每個價格層級產生一個資料列。

標準 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       tier.*
FROM `my-billing-admin-project.my_billing_dataset.cloud_pricing_export` as sku_pricing, UNNEST (sku_pricing.list_price.tiered_rates) as tier
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查詢結果:

sku_id sku_description service_id service_description pricing_unit_quantity start_usage_amount usd_amount account_currency_amount
1 2DA5-55D3-E679 要求 152E-C115-5142 Cloud Run 1000000.0 0.0 0.0 0.0
2 2DA5-55D3-E679 要求 152E-C115-5142 Cloud Run 1000000.0 2000000.0 0.4 0.4

使用產品分類和地理分類查詢 SKU

  • 產品分類是適用於 SKU 的產品類別清單,例如「無伺服器」、「Cloud Run」或「VM On Demand」
  • 地理分類是適用於 SKU 的地理中繼資料,包含類型和區域值。

取得 SKU 的產品分類

這個範例示範如何查詢特定 SKU 的 product_taxonomy 清單,其中 SKU ID = 2DA5-55D3-E679 (Cloud Run - Requests)。

標準 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       product_taxonomy
FROM `project.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查詢結果:

sku_id sku_description service_id service_description product_taxonomy
1 2DA5-55D3-E679 要求 152E-C115-5142 Cloud Run GCP
        無伺服器
        Cloud Run
        其他

取得特定產品分類的所有 SKU

這個範例示範如何查詢符合指定 product_taxonomy 的所有 SKU。在本查詢中,我們會將 Serverless 指定為 product taxonomy 值。

標準 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       product_taxonomy
FROM `project.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
     AND "Serverless" in UNNEST(product_taxonomy)
LIMIT 10
;

查詢結果:

sku_id sku_description service_id service_description product_taxonomy
1 0160-BD7B-4C40 Cloud Tasks 網路區域內輸出 F3A6-D7B7-9BDA Cloud Tasks GCP
        無伺服器
        Cloud Tasks
        其他
2 FE08-0A74-7AFD Cloud Tasks GOOGLE-API Egress F3A6-D7B7-9BDA Cloud Tasks GCP
        無伺服器
        Cloud Tasks
        其他
3 A81A-32A2-B46D 工作佇列儲存空間 (鹽湖城) F17B-412E-CB64 App Engine GCP
        無伺服器
        GAE
        其他
        TaskQueue

取得特定地理區域分類和產品分類的所有 SKU

這個範例會示範如何查詢,傳回符合指定geo_taxonomy區域和指定product_taxonomy的所有 SKU,其中 region = us-east4,且 product_taxonomy = VMs On Demand

標準 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       geo_taxonomy,
       product_taxonomy
FROM `project.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND "VMs On Demand" in UNNEST(product_taxonomy)
      AND geo_taxonomy.type = "REGIONAL"
      AND "us-east4" in UNNEST (geo_taxonomy.regions)
;

查詢結果:

sku_id sku_description service_id service_description geo_taxonomy.type geo_taxonomy.regions product_taxonomy
1 9174-81EE-425B 在維吉尼亞州執行的單一用戶群執行個體 RAM 單一用戶群附加費 6F81-5844-456A Compute Engine REGIONAL us-east4 GCP
            運算
            GCE
            隨選 VM
            記憶體:每 GB
2 C3B9-E891-85ED 在維吉尼亞州執行的專屬租戶執行個體 RAM 6F81-5844-456A Compute Engine REGIONAL us-east4 GCP
            運算
            GCE
            隨選 VM
            記憶體:每 GB
3 6E2A-DCD9-87ED 在維吉尼亞州執行的 N1 預先定義執行個體 RAM 6F81-5844-456A Compute Engine REGIONAL us-east4 GCP
            運算
            GCE
            隨選 VM
            記憶體:每 GB

傳回具有多個價格級別的 SKU 定價

您可依資料表名稱查詢 BigQuery 資料。查詢 FROM 子句中使用的資料表名稱是根據下列三個值決定:project.dataset.BQ_table_name

這些範例中使用的常見值:

  • 資料表名稱project.dataset.cloud_pricing_export
  • SKU ID2DA5-55D3-E679 (Cloud Run - Requests)

範例 1:傳回巢狀資料

這個範例會查詢單一 SKU,以傳回 list_price 資料。這個 SKU 有多個價格級別。定價欄位值會顯示在 SKU ID 資料列下方的個別資料列中。

標準 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       list_price.*
FROM my-billing-admin-project.my_billing_dataset.cloud_pricing_export
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查詢結果:

sku_id sku_description service_id service_description aggregation_info.
aggregation_level
aggregation_info.
aggregation_interval
tiered_rates.
pricing_unit_quantity
tiered_rates.
start_usage_amount
tiered_rates.
usd_amount
tiered_rates.
account_currency_amount
1 2DA5-55D3-E679 要求 152E-C115-5142 Cloud Run ACCOUNT 每月 1000000 0 0 0
            1000000 2000000 0.4 0.4

範例 2:傳回與相同資料表聯結的未巢狀資料

這個範例會查詢單一 SKU,並傳回 list price。SKU 有多個價格級別。這項查詢示範如何使用 UNNEST 運算子tiered_rates 陣列扁平化,並將欄位與相同資料表聯結,產生每個價格層級各一列的結果。

標準 SQL

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       tier.*
FROM `my-billing-admin-project.my_billing_dataset.cloud_pricing_export` as sku_pricing, UNNEST (sku_pricing.list_price.tiered_rates) as tier
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

查詢結果:

sku_id sku_description service_id service_description pricing_unit_quantity start_usage_amount usd_amount account_currency_amount
1 2DA5-55D3-E679 要求 152E-C115-5142 Cloud Run 1000000.0 0.0 0.0 0.0
2 2DA5-55D3-E679 要求 152E-C115-5142 Cloud Run 1000000.0 2000000.0 0.4 0.4

Google Cloud 控制台提供的費用和價格報表