本文提供匯出至 BigQuery 各個資料表的 Cloud Billing 標準使用費用資料結構定義參考資訊。
標準使用費用資料的結構定義
在您的 BigQuery 資料集中,標準 Google Cloud用量成本資料會載入至名為「gcp_billing_export_v1_<BILLING_ACCOUNT_ID>
」的資料表。
以下資訊說明匯出至 BigQuery 的 Google Cloud 標準使用費用資料結構定義。 結構定義包含標準的 Cloud Billing 帳戶費用用量資訊,例如帳戶 ID、月結單日期、服務、SKU、專案、標籤、位置、費用、用量、抵免額、調整項和幣別。
在 BigQuery 中使用標準使用費用資料時,請注意以下事項:
- 標準 Cloud Billing 資料匯出的資料表結構定義可能會隨時間變更,例如在標準匯出中新增欄位時。為避免日後結構定義變更影響查詢,建議您使用 BigQuery 檢視畫面來正規化資料,讓資料表向查詢呈現相同的結構定義,而不是依賴直接參照匯出欄的查詢。進一步瞭解這項限制。
- 選取或建立 BigQuery 資料集做為標準用量費用資料時,您可以選取任何支援與 Cloud Billing 資料搭配使用的資料集位置。
- 在 Cloud Billing 中首次啟用標準使用費用資料匯出功能時,如果選取的資料集已設定為使用多區域位置 (歐盟或美國),系統會從上個月初開始,提供 Cloud Billing 資料。系統會按照時間先後順序匯出資料,首次回填匯出資料時,系統可能需要最多五天才能完成回溯匯出 Cloud Billing 資料,之後您才會開始看到最新的用量資料。
- 如果您啟用標準使用費用資料匯出功能,並選取設定為使用支援區域位置的資料集,系統就會從您啟用匯出功能的當天起,提供 Cloud Billing 資料。
- 如果您啟用、停用,然後重新啟用標準使用費用資料匯出功能,則在明確停用資料匯出功能的期間,可能無法取得 Cloud Billing 資料。
- 進一步瞭解資料載入 BigQuery 資料表的頻率。
- 標準使用費用資料不包含任何資源層級的費用資料,例如產生服務用量的虛擬機器或 SSD。如果您想將資源層級的費用資料匯出至 BigQuery 進行分析,請考慮啟用詳細用量費用資料匯出功能。匯出的使用費用詳細資料包含標準使用費用資料的所有欄位和資訊。
- 請參閱其他限制,瞭解可能影響帳單資料匯出至 BigQuery 的因素,例如已啟用客戶自行管理的加密金鑰 (CMEK) 的資料集。
欄位 | 類型 | 說明 |
---|---|---|
billing_account_id |
字串 | 與用量相關聯的 Cloud Billing 帳戶 ID。 經銷商:如果是 Cloud Billing子帳戶產生的用量費用,這是子帳戶的 ID,而非上層經銷商 Cloud Billing 帳戶的 ID。 |
invoice.month |
字串 | 月結單的年度和月份 (YYYYMM),此月結單內含費用明細項目。例如:「201901」等於 2019 年 1 月。 您可以使用這個欄位來取得月結單上的費用總額。請參閱「 將 Cloud Billing 資料匯出至 BigQuery 查詢的範例」。 |
invoice.publisher_type |
字串 | 指出與交易相關聯的發布商。這個欄位支援將直接向 Google (第一方) 進行的交易,以及向合作夥伴 (第三方) 進行的交易,分別開立發票,同時也會指出交易可能適用的法規。 可能的值如下:
|
cost_type |
字串 | 這個明細項目代表的費用類型包括:一般、稅金、調整項或捨入錯誤。 |
service.id |
字串 | 與用量相關聯的服務 ID。 |
service.description |
字串 | 回報 Cloud Billing 資料的 Google Cloud 服務。 |
sku.id |
字串 | 服務所用資源的 ID。如需完整 SKU 清單,請參閱 Google Cloud SKU。 |
sku.description |
字串 | 服務所用資源類型的說明。比方說,Cloud Storage 使用的資源類型為「美國地區的標準儲存空間」。 |
usage_start_time |
時間戳記 | 以小時為單位使用期 (用於計算指定費用) 的開始時間。所有服務的使用情形和費用會以精算到小時的單位顯示,這表示執行時間長的服務使用情形會橫跨多個小時。 詳情請參閱 BigQuery 說明文件的 時間戳記資料類型一節,另請參閱 匯出的資料與月結單之間的差異。 |
usage_end_time |
時間戳記 | 以小時為單位使用期 (用於計算指定費用) 的結束時間。所有服務的使用情形和費用會以精算到小時的單位顯示,這表示執行時間長的服務使用情形會橫跨多個小時。 詳情請參閱 BigQuery 說明文件的 時間戳記資料類型一節,另請參閱 匯出的資料與月結單之間的差異。 |
project |
結構 | project 包含描述 Cloud Billing 專案的欄位,例如 ID、編號、名稱、ancestory_numbers 和標籤。
|
project.id |
字串 | 產生 Cloud Billing 資料的 Google Cloud 專案 ID。 |
project.number |
字串 | Google Cloud 專案 (用於產生 Cloud Billing 資料) 的專屬匿名 ID。此為內部產生的 ID。在支援案件和其他客戶通訊中,Google 會以這個專案編號指稱您的專案。 |
project.name |
字串 | 產生 Cloud Billing 資料的 Google Cloud 專案名稱。 |
project.ancestry_numbers |
字串 | 指定 project.id 所識別之專案的資源階層中的祖系 (例如:my-project-123)。例如:/ParentOrgNumber/ParentFolderNumber/。進一步瞭解 資源階層。 |
project.ancestors | 結構 |
這個欄位會說明費用明細項目的資源階層結構和值,包括專案、資料夾和機構。祖先會從節點到根節點排序 (專案、資料夾,然後是機構)。 |
project.ancestors.resource_name | 字串 | 每個祖先的
相對資源名稱,格式為「resourceType/resourceNumber」。使用 project.ancestors.resource_name 可更全面地瞭解 project.ancestry_numbers 。 |
project.ancestors.display_name | 字串 | 您在控制台中為資源建立的名稱。 |
project.labels.key | 字串 | 如果有標籤,則此欄顯示的是在產生用量的 Google Cloud 專案中,標籤鍵/值組合的「鍵」。如要進一步瞭解如何使用標籤,請參閱使用標籤。 |
project.labels.value |
字串 | 如果有標籤,則此欄顯示的是在產生用量的 Google Cloud 專案中,標籤鍵/值組合的「值」。如要進一步瞭解如何使用標籤,請參閱使用標籤。 |
labels.key |
字串 | 如果有標籤,則此欄顯示的是在產生用量的 Google Cloud 資源中,標籤鍵/值組合的「鍵」。如要進一步瞭解如何使用標籤,請參閱使用標籤。 |
labels.value |
字串 | 如果有標籤,則此欄顯示的是在產生用量的 Google Cloud 資源中,標籤鍵/值組合的「值」。如要進一步瞭解如何使用標籤,請參閱使用標籤一文。 |
system_labels.key |
字串 | 如果有系統標籤,則此欄顯示的是在產生用量的資源中,系統產生的標籤鍵/值組的「鍵」。另請參閱 可用的系統標籤。 |
system_labels.value |
字串 | 如果有系統標籤,則此欄顯示的是在產生用量的資源中,系統產生的標籤鍵/值組的「值」。另請參閱 可用的系統標籤。 |
location.location |
字串 | 多區域、國家/地區、區域或可用區層級的使用位置;或以 global 表示
不具特定位置的資源。詳情請參閱「
地理位置與區域」和「
Google Cloud 位置」。
|
location.country |
字串 | 當 location.location 是國家、地區或區域時,此欄位是用量所在的國家/地區,例如 US 。詳情請參閱「
地理位置與區域」和「
Google Cloud 位置」。
|
location.region |
字串 | 當 location.location 是區域或地帶時,此欄位是用量所在的區域,例如 us-central1 。詳情請參閱「
地理位置與區域」和「
Google Cloud 位置」。
|
location.zone |
字串 | 當 location.location 是區域時,此欄位是用量所在的區域,例如 us-central1-a 。
詳情請參閱「
地理位置與區域」和「
Google Cloud 位置」。
|
cost |
浮點值 | 適用使用模式的費用,包括與 Cloud Billing 帳戶連結合約中反映的任何議定折扣 (如適用)。 |
currency |
字串 | 帳單採用的幣別。詳情請參閱 用當地貨幣支付帳單和付款一文。 |
currency_conversion_rate |
浮點值 | 美元兌當地貨幣的匯率。也就是說,cost ÷ currency_conversion_rate 可得出以美元計價的費用。 |
usage.amount |
浮點值 | 使用的 usage.unit 數量。 |
usage.unit |
字串 | 資源用量的基本測量單位,例如標準儲存空間的基本單位為「位元組-秒」。 |
usage.amount_in_pricing_units
|
浮點值 | 使用的 usage.pricing_unit 數量。 |
usage.pricing_unit
|
字串 | 資源用量的測量單位 (以 Cloud Billing Catalog API 為依據)。 |
credits |
結構 | credits 中的欄位會說明與 Google Cloud 和 Google 地圖平台 SKU 相關聯的抵免額結構體和值。 |
credits.id |
字串 | 如果有的話,則表示抵免額與產品 SKU 相關聯。
credits.id 值可以是英數字元的專屬 ID (例如「12-b34-c56-d78」) 或抵免額類型說明 (例如「承諾使用折扣:CPU」)。如果 |
credits.full_name |
字串 | 與產品 SKU 相關聯的抵免額名稱。此名稱會以使用者可理解的方式說明英數字元的 credits.id 。例如「免費試用抵免額」或「支出型承諾使用折扣」。
|
credits.type |
字串 | 這個欄位會說明 credits.id 的用途或來源。
抵免額類型包括:
|
credits.name |
字串 | Cloud Billing 帳戶套用的抵免額相關說明。 |
credits.amount |
浮點值 | 帳單帳戶套用的抵免額金額。 |
adjustment_info |
結構 | adjustment_info 中的欄位會針對與 Cloud Billing 帳戶相關聯的費用明細項目調整項,說明其結構體和值。
只有在費用明細項目因修改 Cloud Billing 而產生時,系統才會顯示 |
adjustment_info.id |
字串 | 如果有的話,表示調整項與費用明細項目相關聯。adjustment_info.id 是與問題相關聯的所有調整項的專屬 ID。 |
adjustment_info.description |
字串 | 調整項的說明及其原因。 |
adjustment_info.type |
字串 | 調整項類型。 類型包括:
|
adjustment_info.mode |
字串 | 調整項的核發方式。 模式包括:
|
export_time |
時間戳記 | 與附加 Cloud Billing 資料相關聯的處理時間。
每次執行新的匯出作業後,這個值一定會增加。 請另行參閱下方 匯出的資料與月結單之間的差異一節。 |
tags |
結構 | 描述標記的欄位,例如鍵、值和命名空間。 |
tags.key |
字串 | 與這個特定代碼相關聯的金鑰簡短名稱或顯示名稱。 |
tags.value |
字串 | 附加至 |
tags.inherited |
布林值 | 指出標記繫結是否為沿用 (「標記沿用」= True),或直接/非沿用 (「標記沿用」= False)。您可以 在資源階層中,為父項資源建立標記繫結。 |
tags.namespace |
字串 | 代表定義標記鍵和值的資源階層。命名空間可與標記鍵和標記值簡稱合併,為標記鍵或標記值建立全域不重複的完整名稱。 |
cost_at_list |
浮點值 | 根據預設用量模式計算的定價費用。 |
transaction_type |
字串 | 賣方的交易類型。交易類型可能為下列其中一種:
|
seller_name |
字串 | 賣家的法定名稱。 |
price |
結構 | 這些欄位說明與用量收費相關的結構和值。 |
price.list_price |
數字 | 依預設耗用模式計算的 SKU 定價。 |
price.effective_price_default |
數字 | 根據預設消耗模型計算的 SKU 價格,包括與 Cloud Billing 帳戶連結的合約中反映的任何議定折扣 (如適用)。 |
price.list_price_consumption_model |
數字 | 適用消耗量模式的 SKU 定價,不含與 Cloud Billing 帳戶連結合約中自訂價格反映的任何議定折扣 (如適用)。 |
price.effective_price |
數字 | 根據適用的消耗量模式計算的 SKU 價格,包括與 Cloud Billing 帳戶連結的合約中反映的任何議定折扣 (如適用)。 |
price.tier_start_amount |
數字 | SKU 價格級別的單位數量下限。詳情請參閱「關於價格等級」。 |
price.unit |
字串 | 指定價格和測量資源用量的使用量單位。 |
price.pricing_unit_quantity |
數字 | SKU 價格級別的單位數量下限。詳情請參閱「關於價格等級」。 |
cost_at_effective_price_default |
數字 | 根據預設使用模式計算的費用,包括與 Cloud Billing 帳戶連結的合約中反映的任何議定折扣 (如適用)。 |
cost_at_list_consumption_model |
數字 | 適用使用模式的費用,不含與 Cloud Billing 帳戶連結合約中自訂價格反映的任何議定折扣 (如適用)。 |
consumption_model |
結構 | 描述適用消費模式的欄位。 |
consumption_model.id |
字串 | 消費模式的 ID。 |
consumption_model.description |
字串 | 消費模式的說明。 |
瞭解標準和詳細使用費用資料
以下各節說明匯出至 BigQuery 的標準和詳細使用費用資料。
關於標籤
特定標籤的費用資料只會顯示標籤套用至資源後的用量。舉例來說,如果您在 2024 年 1 月 15 日將 environment:dev
標籤新增至 Compute Engine VM,則 environment:dev
的任何分析只會納入該 VM 自 1 月 15 日起的用量。
視各個服務提供標籤資料的時間而定,系統可能會在不同時間為不同服務填入資料。
可用系統標籤
產生用量的資源具有重要的中繼資料,這些中繼資料的鍵/值組合即是系統標籤。以下系統標籤會自動加到適用的用量上。
system_labels.key |
範例 system_labels.value |
說明 |
---|---|---|
compute.googleapis.com/machine_spec |
n1-standard-1、custom-2-2048 | 虛擬機器的設定。詳情請參閱 機器類型。 |
compute.googleapis.com/cores |
對於 n1-standard-4,此為 4;對於 custom-2-2048,此為 2 | 虛擬機器可用的 vCPU 數目。 |
compute.googleapis.com/memory |
對於 n1-standard-4,此為 15360 (即 15 GB * 1024 MB/GB);對於 custom-2-2048,此為 2048 | 虛擬機器可用的記憶體量 (MB)。 |
compute.googleapis.com/is_unused_reservation |
true; false | 指出透過區域預留項目預留但未使用的用量。 |
storage.googleapis.com/object_state |
live;noncurrent; soft_deleted; multipart | 收費儲存空間物件的狀態。 |
匯出的資料與月結單之間的差異
Google Cloud 產品會依不同時間間隔,將用量和費用資料回報給 Cloud Billing 程序。因此,您可能需要等待一段時間,才能在 Cloud Billing 中查看服務的用量和費用。 Google Cloud 費用通常會在一天內提供,但有時可能需要超過 24 小時。
在月底時,延遲回報的用量可能不會包含在當月的月結單中,而是計入下個月的月結單。
使用時間戳記欄位查詢費用時,傳回的資料可能會包含近期使用量,而這類使用量原本不會列入相同使用月份的月結單。因此,傳回的 Cloud Billing 資料可能不會直接對應到該月結單。
時間戳記欄位包括:
usage_start_time
usage_end_time
export_time
如要傳回與月結單直接對應的 Cloud Billing 資料,請查詢 invoice.month
,
而非時間戳記欄位。
稅金
自 2020 年 9 月 1 日起,用量費用資料會顯示各專案的稅金負擔,而非單一明細項目。如果查詢或視覺化圖表會用到稅務資料,您可能需要更新查詢,才能反映這些變更。
舉例來說,如果費用是在 9 月 1 日前記錄,您的用量費用資料會類似於下列範例,其中顯示的總稅金負債為 $10 美元。
billing_account_id |
project.id |
cost_type |
cost |
---|---|---|---|
123456-ABCDEF-123456 | example-project | 一般 | $60 美元 |
123456-ABCDEF-123456 | test-project | 一般 | $40 美元 |
123456-ABCDEF-123456 | [empty] | 稅金 | $10 美元 |
9 月 1 日後記錄的費用中,有 $6 美元是 example-project
的費用,有 $4 美元是 test-project
的費用:
billing_account_id |
project.id |
cost_type |
cost |
---|---|---|---|
123456-ABCDEF-123456 | example-project | 一般 | $60 美元 |
123456-ABCDEF-123456 | test-project | 一般 | $40 美元 |
123456-ABCDEF-123456 | example-project | 稅金 | $6 |
123456-ABCDEF-123456 | test-project | 稅金 | $4 美元 |
錯誤和調整
如果 Cloud Billing 資料發生錯誤或需要調整,系統會附加修正資料。這些調整項可分為兩類:帳單修改或更正。
帳單修改
帳單異動會顯示為獨立的明細項目。如果您收到帳單異動通知,Cloud Billing 匯出至 BigQuery 的資料中會新增一行,顯示異動內容。顯示的調整項對應於控制台「帳單」專區 Google Cloud 「文件」區域中的月結單、貸項憑單和借項憑單文件。
如要進一步瞭解帳單修改和套用方式,請參閱「瞭解備忘錄和調整項」。
修正
修正內容會以新資料的形式顯示,抵銷來源 SKU 的錯誤資料。在某些情況下,系統會以新資料取代錯誤的費用。帳單資料匯出作業中的所有資料欄都會與原始資料相符,但下列資料欄除外:
cost
credit
usage.amount
export_time
舉例來說,假設您在 1 月 1 日使用 SKU A
,費用為 $10 美元。在 2 月初發出的 1 月月結單中,您會看到 SKU A
的 $10 美元費用。不過,在 2 月 2 日, Google Cloud 針對 SKU A
核發了更正單,將使用費用調降至 $5 美元。2 月的月結單 (3 月初發放) 會新增兩項明細:
- 1 月 1 日的使用費 -$10 美元 (抵銷原始費用)
- 1 月 1 日的使用費為 $5 美元 (說明預計收取的費用)
這些新項目在帳單資料匯出作業中會顯示 adjustment_info
欄。系統不會調整顯示超額費用的 1 月原始月結單。您可以查看按 usage_start_time
分類的費用,並依 Day
分組,藉此在匯出的帳單資料中驗證費用。在這些檢視畫面中,系統會累計任何修正或延遲營利的使用費用,您不必擔心任何暫時不正確的資料。
如要查看更詳細的修正資訊,請查看月結單月份的所有費用,並找出使用日期在月結單月份之前的費用。這些費用是修正或延遲營利的使用情形所致。
下列程式碼範例說明如何建立基本查詢,傳回修正或延遲營利用量的總費用:
SELECT
SUM(cost)
+ SUM(IFNULL((SELECT SUM(c.amount)
FROM UNNEST(credits) c), 0))
AS total
FROM `project.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE
invoice.month = '202311' AND
DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2023-11-01';
如需查詢範例,瞭解如何依服務細分月結單費用,並找出使用日期在月結單月份「之前」的費用,請參閱「Cloud Billing 資料匯出的查詢範例」一文中的「查詢費用詳細資料,依指定月結單月份的服務查看修正或延遲營利的使用情況」。
自訂價格合約中的促銷抵免額
如果您有自訂價格合約,可能會收到促銷抵免額,可用於 Google Cloud 。舉例來說,您可能會收到 $1,000 美元,用於 Compute Engine 資源。促銷抵免額通常視為一種付款方式。如有未使用的促銷抵免額,系統會自動用來折抵費用總額。
合約條款會說明促銷抵免額適用於以 SKU 定價計算的費用,還是淨價 (折扣後)。
如果促銷抵免額適用於定價計算的費用,則在「費用表」報表中,會顯示名為「Invoice
」的服務和名為「Contract billing adjustment
」的 SKU。這個 SKU 會調整抵免額,以便用於定價費用。如要查看調整適用的用量,請查詢 system.labels
欄。system.labels.key
中的鍵為 cloud-invoice.googleapis.com/sku_id
,而 system.labels.value
中的值則包含抵免額和調整項套用的 SKU ID。
關於代碼
標記 是以鍵/值組合形式呈現的資源,可直接或透過繼承附加至資源。您可以使用標記執行退款、稽核和其他費用分配分析。您也可以使用標記並依據條件強制執行政策,精細控管資源階層結構。
標記具有完善的權限模型,可支援繼承、集中管理、命名標準化和政策引擎整合,而 標籤是獨立工具,可讓您註解資源。
資源、專案、資料夾和機構的 BigQuery 匯出資料中會顯示標記資料。
可用的標記
資源、專案、資料夾和機構的「標準費用」和「詳細費用」匯出內容,會包含標籤資料的下列欄位:標籤鍵、標籤值、標籤繼承和標籤命名空間。
Cloud Billing 資料匯出功能支援下列資源的資源層級標記:
- AlloyDB for PostgreSQL 叢集、執行個體和備份
- Artifact Registry 存放區
- Bigtable 執行個體
- Cloud Run 服務和工作
- Cloud Storage 值區
- Compute Engine 執行個體
- Memorystore for Redis 執行個體
- Secret Manager 全域和區域性密鑰
- Spanner 執行個體
- Firestore 資料庫
代碼限制
- 標記最多可能需要一小時才會匯出至 BigQuery。如果標記是在一小時內新增或移除,或是資源存在時間未滿一小時,可能不會顯示在匯出檔案中。
標準使用費用查詢範例
本節提供範例,說明如何查詢匯出至 BigQuery 的 Cloud Billing 標準使用費用資料。
指定要用於查詢的資料表名稱
在這些範例中,如要在 BigQuery 中查詢 Cloud Billing 資料,您需要在 FROM
子句中指定資料表名稱。系統會使用下列三個值判斷資料表名稱:project.dataset.BQ_table_name
。
project
是Google Cloud 您設定的專案 ID,其中包含 BigQuery 資料集。dataset
是您設定的 BigQuery 資料集名稱,其中包含匯出的 Cloud Billing 資料 BigQuery 資料表。BQ_table_name
是BigQuery 資料表的名稱,其中包含您要查詢的匯出 Cloud Billing 資料。有三種 BigQuery 資料表包含 Cloud Billing 資料:
範例標準費用查詢中使用的常見值
本節的查詢範例會使用下列「資料表名稱」值:
project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX
這些查詢範例也適用於匯出至 BigQuery 的詳細使用費用資料,但不會擷取詳細使用費用匯出選項提供的任何資源層級資訊。
傳回月結單上的總費用
下列查詢示範透過匯出帳單資料查看費用和抵免額值的兩種方法。
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 * 1000000 AS int64)) + SUM(IFNULL((SELECT SUM(CAST(c.amount * 1000000 as int64)) FROM UNNEST(credits) c), 0))) / 1000000 AS total_exact FROM `project.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 * 1000000 AS int64)) + SUM(IFNULL((SELECT SUM(CAST(c.amount * 1000000 as int64)) FROM UNNEST(credits) c), 0))) / 1000000 AS total_exact FROM `project.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.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.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.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: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.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: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.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.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` LEFT JOIN UNNEST(credits) AS credits WHERE LOWER(credits.name) LIKE "committed use 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.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.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.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.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.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` WHERE invoice.month = "202006" GROUP BY 1, 2 ORDER BY 1;
舊版 SQL
TO_JSON_STRING not supported.
列 | 名稱 | 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 |
相關主題
與匯出的 Cloud Billing 資料相關的主題
Google Cloud 控制台提供的費用和價格報表
- 查看 Cloud Billing 報表和費用趨勢
- 查看及下載月結單或對帳單的費用明細
- 查看及下載 Google 雲端服務的價格
- 透過費用明細報表瞭解節約效益
- 分析承諾使用折扣的效益
- 查看費用和付款記錄