標準資料匯出作業的結構

本文提供匯出至 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 (第一方) 進行的交易,以及向合作夥伴 (第三方) 進行的交易,分別開立發票,同時也會指出交易可能適用的法規。

可能的值如下:
  • GOOGLE:由 Google Cloud進行的第一方未受監管交易。
  • PARTNER:合作夥伴的第三方交易,無論是否受監管。
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.id 欄位為空白,則產品 SKU 與抵免額沒有關聯。

credits.full_name 字串 與產品 SKU 相關聯的抵免額名稱。此名稱會以使用者可理解的方式說明英數字元的 credits.id。例如「免費試用抵免額或「支出型承諾使用折扣

credits.full_name 值只會顯示在有英數字元 credits.id 的 SKU 中,如果 credits.id 值是抵免額類型的說明 (例如「承諾使用折扣:CPU),則 credits.full_name 欄位為空白。

credits.type 字串 這個欄位會說明 credits.id 的用途或來源。 抵免額類型包括:
  • COMMITTED_USAGE_DISCOUNT: 針對 Compute Engine 所購買的資源型承諾使用合約,以享有 VM 用量的大幅折扣價。
  • COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE: 針對服務所購買的支出型承諾使用合約,條件是您承諾支付最低費用。
  • DISCOUNT:折扣抵免額類型用於達到合約支出門檻後獲得的抵免額。請注意,在 Cloud 控制台的 Cloud Billing 報表中,折扣抵免額類型會列為「支出型折扣 (合約)」。 Google Cloud
  • FREE_TIER:部分服務提供 免費資源 (用量最多可達指定上限)。對於這些服務,系統會套用抵免額,以便實作免費方案。
  • PROMOTION:促銷抵免額類型包括 Google Cloud 免費試用和行銷廣告活動抵免額,或是可使用 Google Cloud的其他公益計畫。如果有的話,系統會將促銷抵免額視為付款方式,並自動套用來減少總帳單金額。
  • RESELLER_MARGIN:如果您是經銷商,「經銷商利潤」抵免額類型代表所有符合資格的明細項目獲得的經銷商計畫折扣。
  • SUBSCRIPTION_BENEFIT:透過購買長期訂閱服務以享有折扣而獲得的抵免額。
  • SUSTAINED_USAGE_DISCOUNT:續用折扣抵免額類型是一種自動折扣。如果您在收費當月執行特定 Compute Engine 資源的時間達到一定比例,就能享有這項折扣。
credits.name 字串 Cloud Billing 帳戶套用的抵免額相關說明。
credits.amount 浮點值 帳單帳戶套用的抵免額金額。
adjustment_info 結構 adjustment_info 中的欄位會針對與 Cloud Billing 帳戶相關聯的費用明細項目調整項,說明其結構體和值。

只有在費用明細項目因修改 Cloud Billing 而產生時,系統才會顯示 adjustment_info 值。修改情形可能基於更正或未更正的因素而發生。adjustment_info 類型包含調整項的詳細資料 (不論是基於更正錯誤還是其他因素而核發都一樣)。

adjustment_info.id 字串 如果有的話,表示調整項與費用明細項目相關聯。adjustment_info.id 是與問題相關聯的所有調整項的專屬 ID。
adjustment_info.description 字串 調整項的說明及其原因。
adjustment_info.type 字串

調整項類型。

類型包括:

  • USAGE_CORRECTION:因回報用量有誤而做的更正。
  • PRICE_CORRECTION:因定價規則有誤而做的更正。
  • METADATA_CORRECTION:修正中繼資料而不變更費用的更正。
  • GOODWILL:基於商譽核發給客戶的抵免額。
  • SALES_BASED_GOODWILL:根據部分合約內容,基於商譽核發給客戶的抵免額。
  • SLA_VIOLATION:因違反服務等級目標 (SLO) 而核發給客戶的抵免額。
  • BALANCE_TRANSFER:將資金從一個付款帳戶轉移至其他帳戶的調整項。
  • ACCOUNT_CLOSURE:將已關閉帳戶的餘額歸零的調整項。
  • GENERAL_ADJUSTMENT:修改一般帳單帳戶。
adjustment_info.mode 字串

調整項的核發方式。

模式包括:

  • PARTIAL_CORRECTION:部分否定原始用量和費用的更正。
  • COMPLETE_NEGATION_WITH_REMONETIZATION:完全否定原始用量和費用的更正,並以更新的用量和費用核發更正後的明細項目。
  • COMPLETE_NEGATION:完全否定原始用量和費用的更正,不再利用額外用量重新營利。
  • MANUAL_ADJUSTMENT:手動分配到費用和用量的調整項。
export_time 時間戳記 與附加 Cloud Billing 資料相關聯的處理時間。 每次執行新的匯出作業後,這個值一定會增加。
請另行參閱下方 匯出的資料與月結單之間的差異一節。
tags 結構

描述標記的欄位,例如鍵、值和命名空間。

tags.key 字串

與這個特定代碼相關聯的金鑰簡短名稱或顯示名稱。

tags.value 字串

附加至 tags.key 的資源。在任何時間點,特定鍵的資源只能附加一個值。

tags.inherited 布林值

指出標記繫結是否為沿用 (「標記沿用」= True),或直接/非沿用 (「標記沿用」= False)。您可以 在資源階層中為父項資源建立標記繫結。

tags.namespace 字串

代表定義標記鍵和值的資源階層。命名空間可與標記鍵和標記值簡稱合併,為標記鍵或標記值建立全域不重複的完整名稱。

cost_at_list 浮點值

根據預設用量模式計算的定價費用。

transaction_type 字串

賣方的交易類型。交易類型可能為下列其中一種:

  • GOOGLE = 1:由 Google Cloud銷售的服務。
  • THIRD_PARTY_RESELLER = 2:由 Google Cloud轉售的第三方服務。
  • THIRD_PARTY_AGENCY = 3:合作夥伴銷售的第三方服務,由 Google Cloud 擔任代理商。
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;noncurrentsoft_deletedmultipart 收費儲存空間物件的狀態。

匯出的資料與月結單之間的差異

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

  • projectGoogle Cloud 您設定的專案 ID,其中包含 BigQuery 資料集。
  • dataset 是您設定的 BigQuery 資料集名稱,其中包含匯出的 Cloud Billing 資料 BigQuery 資料表。
  • BQ_table_nameBigQuery 資料表的名稱,其中包含您要查詢的匯出 Cloud Billing 資料。有三種 BigQuery 資料表包含 Cloud Billing 資料:
    • 標準用量成本資料表: 在 BigQuery 資料集中,這個資料表名為 gcp_billing_export_v1_<BILLING_ACCOUNT_ID>
    • 詳細用量成本表: 在 BigQuery 資料集中,這個資料表名為 gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>
    • 價格表: 在 BigQuery 資料集中,這個資料表名為 cloud_pricing_export

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

本節的查詢範例會使用下列「資料表名稱」值: 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

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