Cloud Billing 資料匯出的查詢範例

本文提供一些範例,說明如何查詢已匯出至 BigQuery 並儲存其中的 Cloud Billing 資料。

如要進一步瞭解如何將帳單資料匯出至 BigQuery,請參閱總覽和限制。

根據帳單報表生成 SQL 查詢

如要快速編寫 SQL 查詢,在 BigQuery 中傳回與帳單報表相同的結果,可以使用 Google Cloud 控制台帳單報表中的「Generate query」(生成查詢) 功能。

指定要用於查詢的資料表名稱

在這些範例中,如要在 BigQuery 查詢匯出的 Cloud Billing 資料,您必須在 FROM 子句中指定資料表名稱的完整路徑。資料表名稱由三個值組成,並以點號分隔:

project-ID.dataset_name.BQ_table_name

舉例來說,假設您有一個 Cloud Billing 帳戶,設定為匯出 詳細用量費用資料,而帳單匯出設定的元件如下:

  • project-ID:my-billing-project
  • dataset_name:my_billing_dataset
  • BQ_table_name:gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>
  • BILLING-ACCOUNT-ID:010101-F0FFF0-10X10X - 這是 Cloud Billing 帳戶的 ID,其中包含您要匯出的帳單資料。瞭解如何查看帳單帳戶 ID。

根據範例值,您應編寫 FROM 子句,如下所示:

my-billing-project.my_billing_dataset.gcp_billing_export_resource_v1_010101-F0FFF0-10X10X

Cloud Billing 資料類型的查詢範例

FOCUS 費用資料

如需使用 SQL 對 FOCUS 帳單資料匯出執行查詢的提示和指南,請參閱 FinOps 基金會網站上的 FOCUS 用途範例:

FOCUS 1.2 版用途   |   FOCUS 1.1 版用途   |   FOCUS 1.0 版用途

標準使用費用、詳細使用費用和定價資料

本節提供標準使用費用資料、詳細使用費用資料和定價資料的查詢範例。

如果您選擇匯出詳細用量費用資料,除了詳細用量費用查詢範例,您也可以使用標準用量費用查詢範例。

標準使用費資料 詳細的使用費資料 定價資料
標準用量費用查詢範例 詳細使用費查詢範例 定價資料查詢範例

標準用量費用查詢範例

本節提供範例,說明如何查詢匯出至 BigQuery 的 Cloud Billing 標準用量費用資料。

這些查詢範例也適用於匯出至 BigQuery 的詳細使用費用資料,但不會擷取詳細使用費用匯出選項提供的任何資源層級資訊。

標準費用查詢範例中使用的常見值

本節的查詢範例使用下列「Table name」(資料表名稱) 值: project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX

傳回月結單上的總費用

下列查詢示範透過匯出帳單資料查看費用和抵免額值的兩種方法。

  • total 欄位會直接加總浮點費用和抵免額值,這可能會導致浮點捨入錯誤。
  • total_exact 欄位會先將費用和抵免額值轉換為微單位,再進行加總,然後在加總後轉換回美元,避免浮點捨入誤差。

範例 1:每張月結單的所有費用總和

此查詢會顯示每個月的月結單總計,做為定期費用、稅金、調整項和捨入錯誤的加總。

標準 SQL

SELECT
  invoice.month,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0)))
    AS total_exact
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
GROUP BY 1
ORDER BY 1 ASC
;

舉例來說,上述查詢的結果可能如下:

列 月 總計 total_exact
1 201901 $1005.004832999999984 美元 $1005.00 美元
2 201902 $992.3101739999999717 美元 $992.31 美元
3 201903 $1220.761089999999642 美元 $1220.76 美元

範例 2:按月結單月份依據費用類型傳回詳細資料

這項查詢會顯示每個月各cost_type的總計。費用類型包括定期費用、稅金、調整項和捨入錯誤。

標準 SQL

SELECT
  invoice.month,
  cost_type,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM   UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0)))
    AS total_exact
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
GROUP BY 1, 2
ORDER BY 1 ASC, 2 ASC
;

舉例來說,上述查詢的結果可能如下:

列 月 cost_type 總計 total_exact
1 201901 regular $1000.501209987994782 美元 $1000.50 美元
2 201901 rounding_error –$0.500489920049387 美元 –$0.50 美元
3 201901 tax $10.000329958477891 美元 $10.00 美元
4 201901 adjustment –$5.002572999387045 美元 –$5.00 美元

有標籤的查詢範例

以下範例說明其他使用標籤查詢資料的方法。

本節範例以下列假設為前提:

  • 您有兩個應用程式 (grapefruit-squeezer 和 chocolate-masher)。
  • 每個應用程式都有兩個環境 (開發和正式環境)。
  • 開發環境中,每個應用程式都有一個小型執行個體。
  • 正式環境在美洲和亞洲各有一個小型執行個體。
  • 每個執行個體都已依應用程式和環境加上標籤。
  • 您有一個用於實驗的執行個體,沒有任何標籤。

帳單總金額為 $24 美元,明細如下:

執行個體 標籤 總費用
在美洲地區執行且包含 1 個 vCPU 的小型執行個體 無 $4 美元
在美洲地區執行且包含 1 個 vCPU 的小型執行個體 app: chocolate-masher
environment: dev
$2 美元
在美洲地區執行且包含 1 個 vCPU 的小型執行個體 app: grapefruit-squeezer
environment: dev
$3 美元
在美洲地區執行且包含 1 個 vCPU 的小型執行個體 app: chocolate-masher
environment: prod
$3.25 美元
在亞洲地區執行且包含 1 個 vCPU 的小型執行個體 app: chocolate-masher
environment: prod
$3.75 美元
在美洲地區執行且包含 1 個 vCPU 的小型執行個體 app: grapefruit-squeezer
environment: prod
$3.50 美元
在亞洲地區執行且包含 1 個 vCPU 的小型執行個體 app: grapefruit-squeezer
environment: prod
$4.50 美元

查詢每個資料列,不分組

如要查看這些費用的最精細檢視畫面,請查詢每個資料列,而不進行分組。假設除了標籤和 SKU 說明以外的所有欄位 (專案、服務等等) 都相同。

標準 SQL

SELECT
  sku.description,
  TO_JSON_STRING(labels) as labels,
 cost as cost
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`;

舊版 SQL

TO_JSON_STRING not supported.
資料列 sku.description 標籤 費用
1 在美洲地區執行且包含 1 個 vCPU 的小型執行個體 [] $4 美元
2 在美洲地區執行且包含 1 個 vCPU 的小型執行個體 [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] $2 美元
3 在美洲地區執行且包含 1 個 vCPU 的小型執行個體 [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] $3 美元
4 在美洲地區執行且包含 1 個 vCPU 的小型執行個體 [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] $3.25 美元
5 在亞洲地區執行且包含 1 個 vCPU 的小型執行個體 [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] $3.75 美元
6 在美洲地區執行且包含 1 個 vCPU 的小型執行個體 [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] $3.50 美元
7 在亞洲地區執行且包含 1 個 vCPU 的小型執行個體 [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] $4.50 美元
總計 $24 美元

以 JSON 字串格式依標籤對應分組

這是依各標籤組合細分費用的基本方法。

標準 SQL

SELECT
  TO_JSON_STRING(labels) as labels,
  sum(cost) as cost
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
GROUP BY labels;

舊版 SQL

TO_JSON_STRING not supported.
資料列 標籤 費用
1 [] $4 美元
2 [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] $2 美元
3 [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] $3 美元
4 [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] $7 美元
5 [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] $8 美元
總計 $24 美元

依特定鍵的標籤值分組

依特定標籤鍵的值細分費用,是一種常見的做法。使用 LEFT JOIN 並將鍵篩選器放在 JOIN 條件 (而非 WHERE) 中,即可納入不含這個鍵的費用,進而取得完整的費用檢視畫面。

標準 SQL

SELECT
  labels.value as environment,
  SUM(cost) as cost
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
LEFT JOIN UNNEST(labels) as labels
  ON labels.key = "environment"
GROUP BY environment;

舊版 SQL

SELECT
  labels.value as environment,
  SUM(cost) as cost
FROM [project-ID:dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX]
WHERE labels.key = "environment" OR labels.key IS NULL
GROUP BY environment;
資料列 環境 費用
1 prod $15 美元
2 dev $5 美元
3 空值 $4 美元
總計 $24

依鍵/值組合分組

解讀或匯出這類結果時請謹慎小心。這裡的個別資料列會顯示有效的總和,不會重複計算,但不應與其他資料列合併 (除非索引鍵相同,或您確定索引鍵絕不會設定在同一資源上)。

標準 SQL

SELECT
  labels.key as key,
  labels.value as value,
  SUM(cost) as cost
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
LEFT JOIN UNNEST(labels) as labels
GROUP BY key, value;

舊版 SQL

SELECT
  labels.key as key,
  labels.value as value,
  SUM(cost)
FROM [project-ID:dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX]
GROUP BY key, value;
資料列 鍵 值 費用
1 null 空值 $4 美元
2 app chocolate-masher $9 美元
3 app grapefruit-squeezer $11 美元
4 environment dev $5 美元
5 environment prod $15 美元
總計 $44 美元

請注意,總和會大於您的帳單金額。

承諾使用折扣查詢

下列查詢示範如何查看匯出帳單資料中,與承諾使用折扣相關的費用和抵免額。如要瞭解承諾使用費用和抵免額如何歸因於 Cloud Billing 帳戶和專案,請參閱「承諾使用折扣歸因」。

查看承諾使用費用

如要在帳單資料匯出作業中查看承諾使用折扣的承諾使用合約費用,請使用下列查詢範例。

標準 SQL

SELECT
    invoice.month AS invoice_month,
    SUM(cost) as commitment_fees
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE LOWER(sku.description) LIKE "commitment%"
GROUP BY 1

查看承諾使用合約抵免額

如要在帳單資料匯出中查看承諾使用折扣抵免額,請使用下列查詢範例。

標準 SQL

SELECT
    invoice.month AS invoice_month,
    SUM(credits.amount) as CUD_credits
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
LEFT JOIN UNNEST(credits) AS credits
WHERE credits.type = "COMMITTED_USAGE_DISCOUNT"
GROUP BY 1

使用資源階層篩選器查看祖系

您可以使用資源階層篩選器,依專案、資料夾和組織等階層元素匯總費用。這些查詢範例說明如何加總依資源階層元素篩選的費用,以及顯示專案上階。

範例 1:依資源名稱篩選

這個範例示範如何透過查詢,依專案歷來記錄將費用分組,並篩選出僅在指定階層元素下產生的費用 (以相對資源名稱識別)。

字串方法

SELECT
    invoice.month AS invoice_month,
    TO_JSON_STRING(project.ancestors) as ancestors,
    SUM(cost)
        + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0))
        AS net_cost
  FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq
  WHERE TO_JSON_STRING(project.ancestors) like "%resource_name\":\"folders/1234"
  GROUP BY invoice_month, ancestors
  ORDER BY invoice_month, ancestors

UNNEST 方法

SELECT
    invoice.month AS invoice_month,
    TO_JSON_STRING(project.ancestors) as ancestors,
    SUM(cost)
        + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0))
        AS net_cost
  FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq, UNNEST(project.ancestors) as ancestor
  WHERE ancestor.resource_name = "folders/1234"
  GROUP BY invoice_month, ancestors
  ORDER BY invoice_month, ancestors

範例 2:依顯示名稱篩選

這個範例示範如何透過查詢,依專案上層結構將費用分組,並篩選出僅在指定階層元素下產生的費用,該元素由使用者提供的顯示名稱識別。

字串比對方法

SELECT
    invoice.month AS invoice_month,
    TO_JSON_STRING(project.ancestors) as ancestors,
    SUM(cost)
        + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0))
        AS net_cost
  FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq
  WHERE TO_JSON_STRING(project.ancestors) like "%display_name\":\"MyFolderName%"
  GROUP BY invoice_month, ancestors
  ORDER BY invoice_month, ancestors

UNNEST 方法

SELECT
    invoice.month AS invoice_month,
    TO_JSON_STRING(project.ancestors) as ancestors,
    SUM(cost)
        + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0))
        AS net_cost
  FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq, UNNEST(project.ancestors) as ancestor
  WHERE ancestor.display_name = "MyFolderName"
  GROUP BY invoice_month, ancestors
  ORDER BY invoice_month, ancestors

含有標記的查詢範例

以下範例說明如何使用標記查詢資料。

使用標記依月結單月份計算費用

下列查詢示範如何使用 cost_center 標記,依月結單月份傳回費用。

SELECT
  invoice.month AS invoice_month,
  tag.value AS cost_center,
  ROUND((SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM (CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0))), 2)
    AS net_cost
FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`, UNNEST(tags) AS tag
WHERE tag.key = "cost_center" AND tag.namespace = "821092389413"
GROUP BY invoice.month, tag.value
ORDER BY invoice.month, tag.value;

舉例來說,上述查詢的結果可能如下:

列 invoice_month cost_center net_cost
1 202208 android_mobile_apps 9.93
2 202208 ios_mobile_apps 9.93
3 202209 android_mobile_apps 25.42
4 202209 ios_mobile_apps 25.4
5 202209 個人化 16.08

查看未標記資源的費用

這項查詢會顯示未標記資源的帳單總額,並依帳單月份分組。

SELECT
 invoice.month AS invoice_month,
 ROUND((SUM(CAST(cost AS NUMERIC))
   + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                 FROM UNNEST(credits) AS c), 0))), 2)
   AS net_cost
FROM
 `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE "color" NOT IN (SELECT key FROM UNNEST(tags))
GROUP BY invoice_month
ORDER BY invoice_month;

舉例來說,上述查詢的結果可能如下:

列 invoice_month net_cost
1 202202 0
2 202203 16.81
3 202204 54.09
4 202205 55.82
5 202206 54.09
6 202207 55.83
7 202208 31.49

其他查詢範例

依專案查詢指定月結單月份的費用和抵免額

這項查詢指定了 2020 年 6 月這個帳單月份 (格式為 YYYYMM),因此會傳回依專案分組的費用和抵免額,並顯示專案標籤。

標準 SQL

SELECT
  project.name,
  TO_JSON_STRING(project.labels) as project_labels,
  sum(cost) as total_cost,
  SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) as total_credits
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE invoice.month = "202006"
GROUP BY 1, 2
ORDER BY 1;
列 名稱 project_labels total_cost total_credits
1 CTG - Dev [{"key":"ctg_p_env","value":"dev"}] 79.140979 -4.763796
2 CTG - Prod [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"eng"}] 32.466272 -3.073356
3 CTG - Sandbox [{"key":"ctg_p_env","value":"dev"}] 0 0
4 CTG - Storage [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"data"}] 7.645793 -0.003761

查詢費用,查看指定月結單月份的更正或延遲營利使用情形

只要提供特定月結單月份,並依使用日期在月結單月份「之前」的日期篩選,這項簡化查詢就會傳回更正或延遲營利使用情形 (應列於先前月結單的費用) 的費用總額。

標準 SQL

SELECT
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
      FROM   UNNEST(credits) c), 0))
    AS total
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE
  invoice.month = '202403' AND
    DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2024-03-01';

舉例來說,上述查詢的結果可能如下:

列 總計
1 3.531752

查詢費用明細,查看特定月結單月份的修正項目,或各項服務的延遲計費使用情形

這個範例示範如何查詢月結單費用,並傳回依服務細分的費用,其中使用日期是在月結單月份之前。這項查詢會傳回各項服務的費用和抵免額總計,用於更正或延遲計費的用量 (應計入先前月結單的費用)。

在這個查詢範例中,WHERE 子句會篩選出應付憑據月份為 2024 年 3 月 (格式為 YYYYMM) 的所有費用,然後進一步精簡結果,只傳回使用日期早於 2024 年 3 月 1 日的應付憑據月份費用。

SELECT
  DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) AS `Day`,
  service.description AS `Service Description`,
  SUM(CAST(cost_at_list AS NUMERIC)) AS `List cost`,
  SUM(CAST(cost AS NUMERIC)) - SUM(CAST(cost_at_list AS NUMERIC)) AS `Negotiated savings`,
  SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('SUSTAINED_USAGE_DISCOUNT', 'DISCOUNT', 'SPENDING_BASED_DISCOUNT', 'COMMITTED_USAGE_DISCOUNT', 'FREE_TIER', 'COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE', 'SUBSCRIPTION_BENEFIT', 'RESELLER_MARGIN')), 0)) AS `Discounts`,
  SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('CREDIT_TYPE_UNSPECIFIED', 'PROMOTION')), 0)) AS `Promotions and others`,
  SUM(CAST(cost_at_list AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('SUSTAINED_USAGE_DISCOUNT', 'DISCOUNT', 'SPENDING_BASED_DISCOUNT', 'COMMITTED_USAGE_DISCOUNT', 'FREE_TIER', 'COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE', 'SUBSCRIPTION_BENEFIT', 'RESELLER_MARGIN')), 0)) + SUM(CAST(cost AS NUMERIC)) - SUM(CAST(cost_at_list AS NUMERIC))+ SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('CREDIT_TYPE_UNSPECIFIED', 'PROMOTION')), 0)) AS `Subtotal`
FROM
  `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE
  invoice.month = '202403' AND
  DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2024-03-01'
GROUP BY
  Day,
  service.description
ORDER BY
  Day DESC,
  Subtotal DESC;

舉例來說,上述查詢的結果可能如下:

列 天 服務說明 定價費用 議定的折扣優惠 折扣 促銷和其他抵免額 小計
1 2024-02-29 Compute Engine 4.39916 0 -1.00916 0 3.39000
2 2024-02-29 支援 0.131969 0 0 0 0.131969
3 2024-02-29 BigQuery 0.005502 0 0 0 0.005502
4 2024-02-29 網路 0.010972 0 -0.006691 0 0.004281

使用費詳細資料查詢範例

本節提供範例,說明如何查詢匯出至 BigQuery 的 Cloud Billing 詳細用量費用資料。

由於詳細使用費用結構定義包含標準使用費用結構定義的所有欄位,因此針對匯出至 BigQuery 的標準資料提供的查詢範例,也適用於匯出的詳細資料。標準查詢範例並非用於擷取詳細使用費用匯出選項提供的任何資源層級資訊。為「詳細」資料建立查詢時,您可以使用「標準」查詢範例做為範本、更新資料表名稱,並新增「詳細」使用費用結構定義中可用的任何欄位。

如要進一步瞭解匯出「詳細」資料的其他規定和限制,請參閱「詳細用量費用資料的結構定義」。

詳細費用查詢範例中使用的常見值

本節的查詢範例使用下列「Table name」(資料表名稱) 值: project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX

傳回月結單上的資源層級費用

下列查詢示範兩種方法,說明如何使用匯出的帳單資料,查看應付憑據上的資源層級費用和抵免額值。

  • total 欄位會直接加總浮點費用和抵免額值,這可能會導致浮點捨入錯誤。
  • total_exact 欄位會先將費用和抵免額值轉換為微單位,再進行加總,然後在加總後轉換回美元,避免浮點捨入誤差。

每份帳單中各項資源的費用總和

這項查詢會顯示每個月各resource.name的帳單總額,當中包含定期費用、稅金、調整項和捨入錯誤。與資源層級項目無關的任何費用,都會匯總到當月的名稱 null。

標準 SQL

SELECT
  invoice.month,
  resource.name,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0)))
    AS total_exact
FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
GROUP BY 1, 2
ORDER BY 1 ASC, 2 ASC
;

舉例來說,上述查詢的結果可能如下:

列 月 名稱 總計 total_exact
1 201901 null $1005.004832999999984 美元 $1005.00 美元
2 201901 backend1 $781.8499760000028 $781.85
3 201902 null $953.0034923645475983 $953.03
4 201902 backend1 $992.3101739999999717 美元 $992.31 美元
5 201902 bitnami-launchpad-wordpress-1-wordpress $1.2817819999999998 $1.28

依每個資源的費用類型傳回詳細資料 (按應付憑據月份)

這項查詢會顯示每個月各 resource.name 的各 cost_type 總計。費用類型包括定期費用、稅金、調整項和捨入錯誤。與資源層級項目無關的任何費用,都會匯總到當月的名稱 null。

標準 SQL

SELECT
  invoice.month,
  cost_type,
  resource.name,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM   UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0)))
    AS total_exact
FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
GROUP BY 1, 2, 3
ORDER BY 1 ASC, 2 ASC, 3 ASC
;

舉例來說,上述查詢的結果可能如下:

列 月 cost_type 名稱 總計 total_exact
1 201901 regular null $1000.501209987994782 美元 $1000.50 美元
2 201901 rounding_error null –$0.500489920049387 美元 –$0.50 美元
3 201901 tax null $10.000329958477891 美元 $10.00 美元
4 201901 adjustment null –$5.002572999387045 美元 –$5.00 美元
5 201901 regular backend1 $410.998795012082947 $411.00
2 201901 rounding_error backend1 -$0.2404900489920378 -$0.24
3 201901 tax backend1 $4.105840329977189 $4.11

取得 Google Kubernetes Engine (GKE) 叢集費用明細

本節提供範例,說明如何在 BigQuery Export 匯出報表中篩選 GKE 叢集費用。如要進一步瞭解 GKE 叢集費用,請參閱「查看叢集費用明細」。

篩選 GKE 費用

下列查詢範例說明如何依叢集名稱、命名空間和標籤,篩選及分組支援資源類型的 GKE 費用。

扣除抵免額前的 GKE 叢集費用

SELECT
  SUM(cost) AS cost_before_credits,
  labels.value AS cluster_name
FROM  `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
LEFT JOIN UNNEST(labels) as labels
  ON labels.key = "goog-k8s-cluster-name"
GROUP BY labels.value
;

扣除抵免額後的 GKE 費用 (依命名空間區分)

SELECT
  labels.value as namespace,
  SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS cost_after_credits,
FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
LEFT JOIN UNNEST(labels) as labels
  ON labels.key = "k8s-namespace"
GROUP BY namespace
;

依 SKU 列出的 GKE 費用

SELECT
  project.id AS project_id,
  labels.value AS cluster_name,
  sku.id AS sku_id,
  sku.description AS sku_description,
  SUM(cost) AS cost
FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
JOIN UNNEST(labels) AS labels
  ON labels.key = "goog-k8s-cluster-name"
GROUP BY
  cluster_name, project_id, sku_description, sku_id
;

定價資料查詢範例

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

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

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

  • 資料表名稱:project-ID.dataset.cloud_pricing_export
  • SKU ID:2DA5-55D3-E679 (Cloud Run - 要求)

取得特定 SKU 的定價

以下範例示範基本查詢,可傳回指定 SKU 每個定價級別的 list_price。

標準 SQL

SELECT sku.id,  sku.description, list_price.*
FROM `project-ID.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-ID.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 project-ID.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 `project-ID.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。
  • 地理分類是套用至 SKU 的地理中繼資料,由類型和區域值組成。

取得 SKU 的產品分類

以下範例示範如何查詢指定 SKU 的 product_taxonomy 清單,其中 SKU ID = 2DA5-55D3-E679 (Cloud Run - 要求)。

標準 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-ID.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-ID.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 輸出 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-ID.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 區域 us-east4 GCP
            運算
            GCE
            隨選 VM
            記憶體:每 GB
2 C3B9-E891-85ED 在維吉尼亞州執行的單一租戶執行個體 RAM 6F81-5844-456A Compute Engine 區域 us-east4 GCP
            運算
            GCE
            隨選 VM
            記憶體:每 GB
3 6E2A-DCD9-87ED 在維吉尼亞州執行的 N1 預先定義執行個體 RAM 6F81-5844-456A Compute Engine 區域 us-east4 GCP
            運算
            GCE
            隨選 VM
            記憶體:每 GB

彙整定價資料和詳細用量費用資料

這項查詢會顯示如何彙整價格和費用資料匯出作業,以便查看與費用一致的詳細定價資訊。您可以設定這項查詢,從詳細用量費用資料 (Exports) 提取匯出的資料,並將用量費用資料與匯出的定價資料 (Prices) 彙整。

使用詳細用量費用資料表名稱提取 Exports 資料: gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>

使用定價資料表名稱,取得 Prices 資料: project-ID.dataset.cloud_pricing_export

WITH
  Exports AS (
    SELECT *
    FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
  ),
  Prices AS (
    SELECT *
    FROM `project-ID.dataset.cloud_pricing_export`
  )
SELECT
  Exports.sku.description AS sku_description,
  Exports.cost,
  Exports.usage,
  FlattenedPrices.pricing_unit_description,
  FlattenedPrices.account_currency_amount,
  FlattenedPrices.account_currency_code,
FROM Exports
JOIN (SELECT * FROM Prices CROSS JOIN UNNEST(Prices.list_price.tiered_rates)) AS FlattenedPrices
  ON
    Exports.sku.id = FlattenedPrices.sku.id
    AND Exports.price.tier_start_amount = FlattenedPrices.start_usage_amount
WHERE
  DATE(Exports.export_time) = '2023-06-30'
  AND DATE(FlattenedPrices.export_time) = '2023-06-30'
  AND cost > 0
LIMIT 1000

舉例來說,上述查詢的結果可能如下:

sku_description 費用 用量 pricing_unit_description account_currency_amount account_currency_code
Balanced PD 容量 0.001345 { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } GiB 月數 0.1 美元
Balanced PD 容量 0.001344 { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } GiB 月數 0.1 美元
Balanced PD 容量 0.001346 { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } GiB 月數 0.1 美元

使用系統標籤查詢

Google Cloud 預留項目的系統標籤可讓您更清楚瞭解預留項目用量。您可以追蹤哪些執行個體正在使用哪些預留項目,並直接在 BigQuery 中分析已用和未用容量的相關費用。

這些範例使用兩個系統標籤:

  • compute.googleapis.com/reservation_name
  • compute.googleapis.com/reservation_project_id

這些標籤會出現在 Cloud Billing 記錄中,包括使用預留項目的執行個體,以及預留項目中未使用的部分。

下列範例說明如何查詢 BigQuery 帳單匯出資料,使用系統標籤分析預留項目用量。

事前準備

如要使用系統標籤進行查詢,您必須啟用 Cloud Billing 匯出至 BigQuery 的功能,特別是詳細用量費用資料匯出功能。這項匯出作業包含資源層級資訊 (包括系統標籤),可讓您查看新的預留項目標籤。

如要設定或驗證 BigQuery Export,請參閱下列說明文件:

  1. 將帳單資料匯出至 BigQuery 的總覽
  2. 設定將帳單資料匯出至 BigQuery
  3. 瞭解詳細資料匯出結構定義

確認 BigQuery 資料集已設為接收詳細匯出資料。資料表名稱通常會採用 gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID> 格式。

查看特定執行個體的用量

這項查詢可讓您檢查特定執行個體是否在特定期間內使用預留項目,如果是,則會顯示該預留項目。


SELECT
  t.usage_start_time,
  sl_reservation.value AS reservation_name,
  t.sku.description AS sku_description,
  SUM(t.usage.amount) AS total_usage_amount
FROM
  project-ID.dataset.gcp_billing_export_resource_v1_X AS t
  LEFT JOIN
  UNNEST(t.system_labels) AS sl_reservation
  ON sl_reservation.key = 'compute.googleapis.com/reservation_name'
WHERE
  t.service.id = '6F81-5844-456A' AND DATE(TIMESTAMP_TRUNC(t._PARTITIONTIME, DAY)) = '2025-09-16' AND t.sku.description LIKE '%Core%' AND
  t.resource.name LIKE '%tc-billing-case1-instance-1757983787%'
GROUP BY t.usage_start_time, reservation_name, t.sku.description
ORDER BY t.usage_start_time, reservation_name, t.sku.description;

結果範例:

usage_start_time reservation_name sku_description total_usage_amount
2025-09-16 00:00:00.000000 UTC 在美洲執行的 E2 執行個體核心 597
2025-09-16 01:00:00.000000 UTC 在美洲執行的 E2 執行個體核心 3009
2025-09-16 01:00:00.000000 UTC tc-billing-case1-res0-1757983787 在美洲執行的 E2 執行個體核心 591
2025-09-16 02:00:00.000000 UTC 在美洲執行的 E2 執行個體核心 10
2025-09-16 02:00:00.000000 UTC tc-billing-case1-res0-1757983787 在美洲執行的 E2 執行個體核心 3054
2025-09-16 02:00:00.000000 UTC tc-billing-case1-res1-1757983787 在美洲執行的 E2 執行個體核心 37

注意:

  • SKU 篩選:將 SKU 限制為 CPU 核心,可更清楚地分配資源。您可以調整這項設定,改為預留其他資源,例如 RAM、LocalSSD、TPU 或 GPU。
  • 隨選用量:如果 reservation_name 和 reservation_project_id 皆為空值,則執行個體會使用隨選資源。

如果有多個資料列的 reservation_name 和 reservation_project_id 不同,但對應到特定時間範圍內的特定執行個體,表示該執行個體耗用的預留項目在該期間內有所變更。用量部分會詳細列出用量。

分析特定預留項目的用量分布

這項查詢可協助您瞭解特定共用預留項目的用量分布情形,顯示可使用該預留項目的不同Google Cloud 專案中,已使用和未使用的容量。


SELECT
  t.project.id AS consumer_project_id,
  t.sku.description AS sku_description,
  CASE
    WHEN t.resource.global_name NOT LIKE '%instances/%' THEN 'Unused Capacity'
    WHEN t.resource.name IS NOT NULL AND t.resource.name != '' THEN 'Instance Usage'
    ELSE 'Other Reservation Cost'
  END AS usage_category,
  SUM(t.usage.amount) AS total_usage_amount,
  t.usage.unit AS usage_unit,
  SUM(t.cost) AS total_cost_usd
FROM
  project-ID.dataset.gcp_billing_export_resource_v1_X AS t
  LEFT JOIN
  UNNEST(t.system_labels) AS sl_reservation
  ON sl_reservation.key = 'compute.googleapis.com/reservation_name'
  LEFT JOIN
  UNNEST(t.system_labels) AS sl_project_id
  ON sl_project_id.key = 'compute.googleapis.com/reservation_project_id'
WHERE
  t.service.id = '6F81-5844-456A' AND DATE(TIMESTAMP_TRUNC(t._PARTITIONTIME, DAY)) = '2025-09-16' AND t.sku.description LIKE '%Core%' AND
  sl_reservation.value LIKE '%tc-billing-case2-res-1757983801%'
GROUP BY consumer_project_id, t.sku.description, usage_category,
  usage_unit
ORDER BY consumer_project_id, usage_category;

結果範例:

consumer_project_id sku_description usage_category total_usage_amount usage_unit total_cost_usd
disco-sector-292704 在美洲執行的 E2 執行個體核心 執行個體用量 14551 秒 0.088158
flash-freehold-292704 在美洲執行的 E2 執行個體核心 執行個體用量 7347 秒 0.044512
united-sandbox-303721 在美洲執行的 E2 執行個體核心 未使用的容量 7936 秒 0.04808

列出使用預留項目的所有執行個體

同樣地,我們也可以編寫查詢,瞭解在特定時間範圍內,有哪些執行個體 (包括第一方執行個體) 耗用了特定預留項目。


SELECT
  t.usage_start_time,
  t.usage_end_time,
  t.project.id AS consumer_project_id,
  t.resource.name AS instance_name,
  t.usage.amount AS usage_amount
FROM
  project-ID.dataset.gcp_billing_export_resource_v1_X AS t
  LEFT JOIN
  UNNEST(t.system_labels) AS sl_reservation
  ON sl_reservation.key = 'compute.googleapis.com/reservation_name'
WHERE
  t.service.id = '6F81-5844-456A' AND DATE(TIMESTAMP_TRUNC(t._PARTITIONTIME, DAY)) = '2025-09-16' AND t.sku.description LIKE '%Core%' AND
  sl_reservation.value LIKE '%tc-billing-case2-res-1757983801%' AND t.resource.global_name NOT LIKE '%allocation/%' AND
  t.resource.name IS NOT NULL AND t.resource.name != ''
ORDER BY t.usage_start_time, t.project.id, t.resource.name;

結果範例:

usage_start_time usage_end_time consumer_project_id instance_name usage_amount
2025-09-16 00:00:00.000000 UTC 2025-09-16 01:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins0-1757983801 552
2025-09-16 00:00:00.000000 UTC 2025-09-16 01:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins1-1757983801 533
2025-09-16 00:00:00.000000 UTC 2025-09-16 01:00:00.000000 UTC flash-freehold-292704 projects/978655420110/instances/tc-billing-case2-ins2-1757983801 517 名
2025-09-16 01:00:00.000000 UTC 2025-09-16 02:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins0-1757983801 3600
2025-09-16 01:00:00.000000 UTC 2025-09-16 02:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins1-1757983801 3600
2025-09-16 01:00:00.000000 UTC 2025-09-16 02:00:00.000000 UTC flash-freehold-292704 projects/978655420110/instances/tc-billing-case2-ins2-1757983801 3600
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins0-1757983801 3022
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins0-1757983801 79
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins1-1757983801 79
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins1-1757983801 3086
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC flash-freehold-292704 projects/978655420110/instances/tc-billing-case2-ins2-1757983801 3151
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC flash-freehold-292704 projects/978655420110/instances/tc-billing-case2-ins2-1757983801 79

使用 BigQuery 分析 Vertex AI 預留項目用量

如要分析 Vertex AI 等第一方 (1P) 產品,如何在執行 Vertex AI 工作的專案中,使用共用預留項目,請在 BigQuery 中使用下列系統標籤:

  • compute.googleapis.com/reservation_name
  • compute.googleapis.com/reservation_project_id

如要進一步瞭解如何在 Vertex AI 中與第一方 (1P) 產品共用預留項目,請參閱下列內容:

下列查詢範例說明如何使用這些標籤,詳細瞭解預留項目用量、監控執行個體如何耗用這些預留項目,以及執行深入的費用分析。

列出在 Vertex AI 中使用第一方產品預留項目的 SKU 類型

如果您建立預留項目,並與 Vertex AI 共用,用於訓練工作,下列查詢會傳回當前日期的 SKU 類型清單。


SELECT DISTINCT
  t.sku.description AS sku_description
FROM
  project-ID.dataset.gcp_billing_export_resource_v1_X AS t
LEFT JOIN
  UNNEST(t.system_labels) AS sl_reservation
  ON sl_reservation.key = 'compute.googleapis.com/reservation_name'
WHERE
  TRUE
  AND t.service.id = '6F81-5844-456A'
  AND DATE(t.usage_start_time) = CURRENT_DATE()
  AND EXISTS(
    SELECT 1
    FROM UNNEST(t.Tags) AS tag
    WHERE
      tag.key = 'gcp-product'
      AND tag.value = 'vertex_ai'
      AND tag.inherited = TRUE
  )
  AND sl_reservation.value = 'RESERVATION_NAME'
  AND t.resource.name IS NOT NULL
  AND t.resource.name != ''
ORDER BY sku_description ASC;

結果範例

結果顯示,訓練工作使用 Vertex AI 服務中的三種 SKU 類型。

sku_description
在美洲執行的 N1 預先定義執行個體核心
在美洲執行的 N1 預先定義執行個體 RAM
在美洲執行的 Nvidia Tesla T4 GPU

在 Vertex AI 中,依預留項目分析第一方產品的 SKU 統計資料

下列查詢可協助您瞭解當月第一方 (1P) 產品預留項目的執行個體分布情形,以及相關用量費用。


SELECT
  t.sku.description AS sku_description,
  t.usage_start_time AS usage_start_time,
  t.usage_end_time AS usage_end_time,
  SUM(t.usage.amount) AS total_usage_amount
FROM
  project-ID.dataset.gcp_billing_export_resource_v1_X AS t
LEFT JOIN
  UNNEST(t.system_labels) AS sl_reservation
  ON sl_reservation.key = 'compute.googleapis.com/reservation_name'
LEFT JOIN
  UNNEST(t.system_labels) AS sl_project_id
  ON sl_project_id.key = 'compute.googleapis.com/reservation_project_id'
WHERE
  TRUE
  AND t.service.id = '6F81-5844-456A'
  AND t.invoice.month = '202602'
  AND EXISTS(
    SELECT 1
    FROM UNNEST(t.Tags) AS tag
    WHERE
      tag.key = 'gcp-product'
      AND tag.value = 'vertex_ai'
      AND tag.inherited = TRUE
  )
  AND sl_reservation.value = 'RESERVATION_NAME'
  AND sl_project_id.value = 'PROJECT_ID'
  AND t.resource.name IS NOT NULL
  AND t.resource.name != ''
GROUP BY sku_description, usage_start_time, usage_end_time;

結果範例

下列輸出內容顯示 SKU 如何使用預留項目,並提供對應使用費用的明細。

sku_description usage_start_time usage_end_time total_usage_amount
在美洲執行的 N1 預先定義執行個體核心 2026-02-10 05:00:00.000000 UTC 2026-02-10 06:00:00.000000 UTC 5040
在美洲執行的 N1 預先定義執行個體 RAM 2026-02-10 05:00:00.000000 UTC 2026-02-10 06:00:00.000000 UTC 20293720473600
在美洲執行的 Nvidia Tesla T4 GPU 2026-02-10 05:00:00.000000 UTC 2026-02-10 06:00:00.000000 UTC 1260
在美洲執行的 N1 預先定義執行個體核心 2026-02-10 04:00:00.000000 UTC 2026-02-10 05:00:00.000000 UTC 14400
在美洲執行的 N1 預先定義執行個體 RAM 2026-02-10 04:00:00.000000 UTC 2026-02-10 05:00:00.000000 UTC 57982058496000
在美洲執行的 Nvidia Tesla T4 GPU 2026-02-10 04:00:00.000000 UTC 2026-02-10 05:00:00.000000 UTC 3600

分析共用專案中 Vertex AI 的預留項目用量

如果您使用的預留項目,是由多個執行 Vertex AI 工作的擁有者專案共用,則可使用下列查詢,依個別專案分析及細分用量費用。


SELECT
  t.project.id AS consumer_project_id,
  t.sku.description AS sku_description,
  t.usage.unit AS usage_unit,
  SUM(t.usage.amount) AS total_usage_amount
FROM
  project-ID.dataset.gcp_billing_export_resource_v1_X AS t
LEFT JOIN
  UNNEST(t.system_labels) AS sl_reservation
  ON sl_reservation.key = 'compute.googleapis.com/reservation_name'
LEFT JOIN
  UNNEST(t.system_labels) AS sl_project_id
  ON sl_project_id.key = 'compute.googleapis.com/reservation_project_id'
WHERE
  TRUE
  AND t.service.id = '6F81-5844-456A'
  AND EXISTS(
    SELECT 1
    FROM UNNEST(t.Tags) AS tag
    WHERE
      tag.key = 'gcp-product'
      AND tag.value = 'vertex_ai'
      AND tag.inherited = TRUE
  )
  AND sl_reservation.value = 'RESERVATION_NAME'
  AND sl_project_id.value = 'PROJECT_ID'
GROUP BY
  consumer_project_id, sku_description, usage_unit
ORDER BY consumer_project_id, sku_description, usage_unit;

結果範例

下列輸出內容顯示使用預留項目時,各項專案在總用量費用中的占比。

consumer_project_id sku_description usage_unit total_usage_amount
project1 在美洲執行的 N1 預先定義執行個體核心 秒 4221572
project1 在美洲執行的 N1 預先定義執行個體 RAM 位元組秒 16998309356466500
project1 在美洲執行的 Nvidia Tesla T4 GPU 秒 1057391
project2 在美洲執行的 N1 預先定義執行個體核心 秒 3996192
project2 在美洲執行的 N1 預先定義執行個體 RAM 位元組秒 16009292257431300
project2 在美洲執行的 Nvidia Tesla T4 GPU 秒 993985