本文提供一些範例,說明如何查詢已匯出至 BigQuery 並儲存其中的 Cloud Billing 資料。
如要進一步瞭解如何將帳單資料匯出至 BigQuery,請參閱總覽和限制。
從帳單報表生成 SQL 查詢
如要快速編寫 SQL 查詢,在 BigQuery 中傳回與帳單報表結果相同的結果,可以使用 Google Cloud 控制台的「帳單報表」中的「產生查詢」功能。
指定要用於查詢的資料表名稱
在這些範例中,如要在 BigQuery 中查詢匯出的 Cloud Billing 資料,您需要在 FROM
子句中指定資料表名稱的完整路徑。資料表名稱由以半形句號分隔的三個值決定:
project-ID.dataset_name.BQ_table_name
project-ID
是Google Cloud 您設定的專案 ID,其中包含 BigQuery 資料集。dataset_name
是您設定的 BigQuery 資料集名稱,其中包含匯出的 Cloud Billing 資料 BigQuery 資料表。BQ_table_name
是BigQuery 資料表的名稱,其中包含您要查詢的匯出 Cloud Billing 資料。系統會根據您啟用的匯出類型,自動為包含匯出 Cloud Billing 資料的 BigQuery 資料表指派名稱:
舉例來說,假設您有一個設定為匯出 詳細用量費用資料的 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 資料類型分類的查詢範例
本節提供標準使用費用資料、詳細使用費用資料和定價資料的查詢範例。
如果您選擇匯出詳細使用費用資料,除了詳細使用費用查詢範例,您也可以使用標準使用費用查詢範例。
標準使用費用資料 | 詳細的使用費資料 | 價格資料 |
---|---|---|
標準使用費用查詢範例 | 使用費用詳細資料查詢範例 | 價格資料查詢範例 |
標準使用費用查詢範例
本節提供範例,說明如何查詢匯出至 BigQuery 的 Cloud Billing 標準使用費用資料。
這些查詢範例也適用於匯出至 BigQuery 的詳細使用費用資料,但不會擷取詳細使用費用匯出選項提供的任何資源層級資訊。
範例標準費用查詢中使用的常見值
本節的查詢範例會使用下列「資料表名稱」值:
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)。
- 每個應用程式都有兩個環境 (開發和正式)。
- dev 環境提供每個應用程式 1 個小型執行個體。
- prod 環境在美洲和亞洲各提供 1 個小型執行個體。
- 每個執行個體都已依應用程式和環境加上標籤。
- 您有一個沒有標籤的執行個體,用於實驗。
總費用為 $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 的標準資料提供的查詢範例,也適用於匯出的詳細資料。標準查詢範例不會擷取任何資源層級資訊,這些資訊是透過詳細使用費用匯出選項提供。建立詳細資料的查詢時,您可以使用標準查詢範例做為範本、更新「資料表名稱」,並新增詳細用量成本結構定義中提供的任何欄位。
如要進一步瞭解匯出詳細資料的規定和限制,請參閱「詳細用量費用資料的結構定義」。
範例詳細費用查詢中使用的常見值
本節的查詢範例會使用下列「資料表名稱」值:
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 |
按月結單月份依據費用類型傳回各項資源的詳細資料
此查詢會顯示每個月的每個 cost_type
resource.name
總計。費用類型包括定期費用、稅金、調整項和捨入錯誤。與資源層級項目無關的費用,都會在當月匯總到「名稱」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 匯出報表中篩選 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 - Requests)
取得特定 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 的產品分類
這個範例示範如何查詢特定 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-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 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-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 | 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 |
將價格資料與詳細用量費用資料合併
這項查詢會顯示如何加入價格和費用資料匯出項目,以便查看與費用一致的詳細價格資訊。您可以設定這項查詢,從詳細用量費用資料 (如 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 | 美元 |
相關主題
與匯出的 Cloud Billing 資料相關的主題
Google Cloud 控制台提供的費用和價格報表
- 查看 Cloud Billing 報表和費用趨勢
- 查看及下載月結單或對帳單的費用明細
- 查看及下載 Google 雲端服務的價格
- 透過費用明細報表瞭解節約效益
- 分析承諾使用折扣的效益
- 查看費用和付款記錄