このドキュメントでは、BigQuery の各テーブルにエクスポートされる Cloud Billing の標準的な使用料金データのスキーマのリファレンス情報を提供します。
標準の使用料金データのスキーマ
BigQuery データセットで、標準の Google Cloud の使用料金データが gcp_billing_export_v1_<BILLING_ACCOUNT_ID>
というデータテーブルに読み込まれます。
以下の情報は、BigQuery にエクスポートされる Google Cloud の標準の使用料金データのスキーマについて説明したものです。このスキーマには、アカウント ID、請求書の日付、サービス、SKU、プロジェクト、ラベル、ロケーション、費用、使用量、クレジット、調整、通貨など、標準の Cloud 請求先アカウントの使用料金情報が含まれます。
BigQuery で標準使用料金データを使用する場合は、次の点に注意してください。
- 標準の使用料金データに BigQuery データセットを選択または作成するときに、Cloud Billing データの使用がサポートされているデータセットのロケーションを選択できます。
- Cloud Billing で標準の使用料金データのエクスポートを初めて有効にする場合、マルチリージョン ロケーション(EU または米国)に構成されたデータセットを選択すると、前月初日からさかのぼって Cloud Billing データを利用できるようになります。データは時系列でエクスポートされます。エクスポートされたデータの最初のバックフィルでは、Cloud Billing データの遡及的なエクスポートが完了して最新の使用状況データが表示されるまでに最大で 5 日ほどかかる場合があります。
- 標準の使用料金データのエクスポートを有効にして、サポートされているリージョン ロケーションを使用するように構成されたデータセットを選択すると、エクスポートを有効にした日付から Cloud Billing データを利用できるようになります。
- 標準の使用料金データのエクスポートを有効して無効にし、その後に再び有効にした場合、明示的に無効にした期間の Cloud Billing データを利用できなくなる可能性があります。
- BigQuery テーブルへのデータの読み込み頻度をご覧ください。
- 標準の使用料金データには、サービス使用料が発生する仮想マシンまたは SSD などのリソースレベルの費用データは含まれません。リソースレベルの費用データを BigQuery にエクスポートして分析する場合は、詳細な使用料金データのエクスポート有効化を検討してください。エクスポートされた詳細な使用料金データには、標準の使用料金データに含まれるすべてのフィールドと情報が含まれます。
- 顧客管理の暗号鍵(CMEK)が有効になっているデータセットなど、BigQuery への課金データのエクスポートに影響する可能性のある他の制限事項をご覧ください。
フィールド | タイプ | 説明 |
---|---|---|
billing_account_id |
文字列 | 使用量が関連付けられている Cloud 請求先アカウント ID 販売パートナー向け: Cloud Billing サブアカウントで生成された使用料金の場合、これはサブアカウントの ID になります。親である販売パートナーの Cloud 請求先アカウントの ID ではありません。 |
invoice.month |
文字列 | 費用項目を含む請求書の年と月(YYYYMM)。たとえば、「201901」は 2019 年 1 月に相当します。 このフィールドを使用して、請求書の合計金額を取得できます。BigQuery への Cloud Billing エクスポートに対するクエリの例をご覧ください。 |
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 のリソースタイプは Standard Storage US です。 |
usage_start_time |
タイムスタンプ | 指定された費用の計算が開始された時間(時間単位)すべてのサービスの使用量と費用は時間単位で表示されます。つまり、長時間実行されるサービスの場合、作業時間が複数の時間単位のウィンドウにまたがります。 詳細については、BigQuery ドキュメントの タイムスタンプ データ型に関する説明をご覧ください。 エクスポートされたデータと請求書の相違もご覧ください。 |
usage_end_time |
タイムスタンプ | 指定された費用の計算が終了した時間(時間単位)。すべてのサービスの使用量と費用は時間単位で表示されます。つまり、長時間実行されるサービスの場合、作業時間が複数の時間単位のウィンドウにまたがります。 詳細については、BigQuery ドキュメントの タイムスタンプ データ型に関する説明をご覧ください。 エクスポートされたデータと請求書の相違もご覧ください。 |
project |
構造体 | project には、ID、番号、名前、祖先の番号、ラベルなど、Cloud Billing プロジェクトを記述するフィールドが含まれます。
|
project.id |
文字列 | Cloud Billing データを生成した Google Cloud プロジェクトの ID。 |
project.number |
文字列 | Cloud Billing データを生成した Google Cloud プロジェクトの一意の識別子(内部で生成されて匿名化される)。サポートケースや他のお客様とのコミュニケーションでは、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 プロジェクトのラベルを構成する Key-Value ペアの Key の部分です。ラベルの使用について詳しくは、ラベルの使用についての記事をご確認ください。 |
project.labels.value |
文字列 | ラベルがある場合、使用量が発生した Google Cloud プロジェクトのラベルを構成する Key-Value ペアの Value の部分です。ラベルの使用について詳しくは、ラベルの使用についての記事をご確認ください。 |
labels.key |
文字列 | ラベルがある場合、使用量が発生した Google Cloud リソースのラベルを構成する Key-Value ペアの Key の部分です。ラベルの使用について詳しくは、ラベルの使用についての記事をご確認ください。 |
labels.value |
文字列 | ラベルがある場合、使用量が発生した Google Cloud リソースのラベルを構成する Key-Value ペアの Value の部分です。ラベルの使用について詳しくは、ラベルの使用についての記事をご確認ください。 |
system_labels.key |
文字列 | システムラベルが存在する場合、使用量が発生したリソースのシステムラベルを構成する Key-Value ペアの Key の部分です。使用可能なシステムラベルもご覧ください。 |
system_labels.value |
文字列 | システムラベルが存在する場合、使用量が発生したリソースのシステムラベルを構成する Key-Value ペアの Value の部分です。使用可能なシステムラベルもご覧ください。 |
location.location |
文字列 | 使用が発生したマルチリージョン、国、リージョンまたはゾーンレベルでのロケーション。
特定のロケーションのないリソースは global です。詳細については、地域とリージョンと Google Cloud のロケーションをご覧ください。 |
location.country |
String | location.location が国、リージョンまたはゾーンの場合、このフィールドは国になります(例: US )。詳細については、地域とリージョンと Google Cloud のロケーションをご覧ください。 |
location.region |
String | location.location がリージョンまたはゾーンの場合、このフィールドは使用量が発生したリージョンになります(例: us-central1 )。詳細については、地域とリージョンと Google Cloud のロケーションをご覧ください。 |
location.zone |
String | location.location がゾーンの場合、このフィールドはゾーンになります(例: us-central1-a )。詳細については、地域とリージョンと Google Cloud のロケーションをご覧ください。 |
cost |
浮動小数点数 | クレジットが適用される前の使用料(小数点以下 6 桁の精度で)。クレジットを含む合計費用を算出するには、credits.amount を費用に追加する必要があります。詳しくは、このクエリ例をご覧ください。 |
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
|
String | Cloud Billing Catalog API によるリソース使用量の測定単位。 |
credits |
構造体 | credits には、Google Cloud と Google Maps Platform の SKU に関連付けられたクレジットの構造と値を記述するフィールドが含まれています。 |
credits.id |
文字列 | 存在する場合は、クレジットが商品の SKU に関連付けられていることを示します。
credits.id 値は英数字の一意の識別子(たとえば、12-b34-c56-d78)とクレジットの種類の説明(確約利用割引 CPU など)のいずれかです。
|
credits.full_name |
String | プロダクトの SKU に関連付けられたクレジットの名前。これは、英数字 credits.id についての人が読める形式の説明です。たとえば、
無料トライアルのクレジットや
費用ベースの確約利用割引などがあります。
|
credits.type |
String | このフィールドは、credits.id の目的または送信元を示します。
以下のようなクレジットの種類があります。
|
credits.name |
String | Cloud 請求先アカウントに適用されたクレジットの説明。 |
credits.amount |
浮動小数点数 | 使用量に適用されるクレジットの金額。 |
adjustment_info |
構造体 | adjustment_info には、Cloud 請求先アカウントに関連付けられた費用項目に対する調整の構造と値を記述するフィールドが含まれています。
|
adjustment_info.id |
文字列 | 表示される場合、費用項目と調整が関連付けられたことを示します。adjustment_info.id は、問題に関連付けられたすべての調整の一意の ID です。 |
adjustment_info.description |
文字列 | 調整と原因の説明。 |
adjustment_info.type |
文字列 | 調整のタイプ。 以下のようなタイプがあります。
|
adjustment_info.mode |
文字列 | 調整を発行する方法。 以下のようなモードがあります。
|
export_time |
タイムスタンプ | Cloud Billing データの追加に関連する処理時間。
これは、新しいエクスポートごとに常に増加します。 以下のエクスポートされたデータと請求書の相違もご覧ください。 |
tags |
構造体 | キー、値、名前空間などのタグを記述するフィールド。 |
tags.key |
String | この特定のタグに関連付けられたキーの略称または表示名。 |
tags.value |
String |
|
tags.inherited |
ブール値 | タグ バインディングが継承されるか(Tags Inherited = True)、直接 / 非継承か(Tags Inherited = False)を示します。リソース階層で、親リソースへのタグ バインディングを作成できます。 |
tags.namespace |
String | タグキーと値を定義するリソース階層を表します。名前空間をタグキーとタグ値の略称と組み合わせることで、タグキーまたはタグ値にグローバルに一意の完全修飾名を作成できます。 |
cost_at_list |
浮動小数点数 | Cloud 請求先アカウントに請求されるすべての項目に関連付けられている正規価格。 |
transaction_type |
文字列 | 販売者のトランザクション タイプ。取引の種類は次のいずれかです。
|
seller_name |
文字列 | 販売者の正式名。 |
使用料金の標準的なデータと詳細データを把握する
以下のセクションでは、BigQuery にエクスポートされる標準と詳細な使用料金データについて説明します。
ラベルについて
特定のラベルの費用データには、ラベルがリソースに適用されてからの使用量のみが表示されます。たとえば、2024 年 1 月 15 日に Compute Engine VM に environment:dev
というラベルを追加した場合、environment:dev
の分析には 1 月 15 日以降の VM の使用量のみが含まれます。
また、各サービスで提供されるタイミングに応じて、サービスごとに異なる時刻のラベルデータが表示されることもあります。
使用可能なシステムラベル
システムラベルは、使用量データを生成したリソースに関する重要なメタデータを含む Key-Value ペアです。以下のシステムラベルが自動的に適用されます。
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×1,024 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 プロセスに使用量データと費用データを報告する間隔はさまざまです。その結果、Google Cloud サービスの使用と、Cloud Billing に表示される使用量との間に遅延が生じる場合があります。通常、費用は 1 日以内に利用可能になりますが、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 | [空白] | 税 | $10 |
9 月 1 日以降に記録された費用については、$10 が example-project
の $6 と test-project
の $4 に分割されます。
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 データにエラーが含まれている場合や調整が必要な場合は、修正データが追加されます。これらの調整は、請求の変更または修正という 2 つのカテゴリのいずれかに分類されます。
お支払い情報の変更
請求の変更は、個別の項目として表示されます。請求の変更を受け取った場合は、BigQuery への Cloud Billing のエクスポートに新しい項目が表示され、変更内容を確認できます。表示される調整は、Google Cloud コンソールの [お支払い] セクションの [ドキュメント] 領域で入手可能な請求書、クレジットメモ、デビットメモのドキュメントに対応しています。
課金の変更とその適用方法について詳しくは、メモと調整についてをご覧ください。
修正
修正は、ソース SKU の誤ったデータを打ち消す新しいデータとして表示されます。場合によっては、誤った請求を置き換える新しいデータが表示されることがあります。課金データのエクスポートの列は、次の列を除き、元のデータと一致します。
cost
credit
usage.amount
export_time
たとえば、1 月 1 日に SKU A
の使用に対して 10 ドルが請求されたとします。1 月分の請求書(2 月上旬に発行)には、SKU A
に対する 10 米ドルの請求が表示されます。ただし、2 月 2 日に Google Cloud は SKU A
に対する修正を発表し、使用料金を 5 ドルに引き下げました。2 月の請求書(3 月上旬に発行)に、次の 2 つの項目が追加されます。
- -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 で使用するプロモーション クレジットが提供されます。たとえば、Compute Engine リソースで使用するための 1,000 ドルを受け取ることができます。通常、プロモーション クレジットは支払い方法とみなされます。プロモーション クレジットが利用可能な場合は、合計請求額の削減に自動的に適用されます。
契約条件により、プロモーション クレジットが SKU の正規価格で計算された費用に適用されるか、正味価格(割引適用後)に適用されるかが指定されます。
プロモーション クレジットが正規価格での計算対象になっている場合、料金明細レポートには、Contract billing adjustment
という SKU の Invoice
というサービスが含まれます。この SKU は、正規価格の費用に適用されるようにクレジットを調整します。調整の対象となる使用状況を確認するには、system.labels
列をクエリします。system.labels.key
のキーは cloud-invoice.googleapis.com/sku_id
で、system.labels.value
の値にはクレジットと調整が適用された SKU ID が含まれています。
タグについて
タグは、Key-Value ペアの形式のリソースで、リソースに直接または継承によって関連付けることができます。タグは、チャージバック、監査、その他の費用の割り当て分析に使用できます。また、タグとポリシーの条件付き適用により、リソース階層全体にわたり、きめ細かい管理が可能です。
タグには堅牢な権限モデルがあり、継承、一元管理、命名規則の標準化、ポリシー エンジンの統合をサポートできます。一方、 ラベルはリソースにアノテーションを付けることができる別のツールです。
タグのデータは、リソース、プロジェクト、フォルダ、組織の BigQuery Export に表示されます。
利用可能なタグ
リソース、プロジェクト、フォルダ、組織の標準費用と詳細費用のエクスポートには、タグデータのタグキー、タグ値、タグ継承、タグ名前空間の各フィールドが含まれます。
Cloud Billing データ エクスポートのリソースレベルのタグは、次のリソースに使用できます。
- AlloyDB for PostgreSQL のクラスタ、インスタンス、バックアップ
- Artifact Registry リポジトリ
- Cloud Run のサービスとジョブ
- Cloud Storage バケット
- Compute Engine インスタンス
- Memorystore for Redis インスタンス
- Secret Manager シークレット
- Spanner インスタンス
タグの制限事項
- BigQuery のエクスポートにタグが反映されるまでに 1 時間ほどかかることがあります。1 時間以内にタグが追加または削除された場合、あるいはリソースの存在時間が 1 時間未満の場合は、エクスポートに表示されないことがあります。
標準の使用料金に対するクエリの例
このセクションでは、BigQuery にエクスポートされた Cloud Billing の標準的な使用料金データをクエリする方法の例を示します。
クエリで使用するテーブル名の指定
この例では、BigQuery で Cloud Billing データのクエリを行うために、FROM
句でテーブル名を指定する必要があります。テーブル名は、project.dataset.BQ_table_name
の 3 つの値を使用して決定されます。
project
は、BigQuery データセットが含まれている設定済みの Google Cloud プロジェクトの ID です。dataset
は、エクスポートした Cloud Billing データを含む BigQuery テーブルが格納されている設定済みの BigQuery データセットの名前です。BQ_table_name
は、クエリ対象のエクスポートされた Cloud Billing データが含まれている BigQuery テーブルの名前です。Cloud Billing データを含む 3 つの BigQuery テーブルがあります。- 標準の使用料金テーブル: BigQuery データセットでは、このテーブルには
gcp_billing_export_v1_<BILLING_ACCOUNT_ID>
という名前が付けられています。 - 詳細な使用料金表: BigQuery データセットでは、このテーブルには
gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>
という名前が付けられています。 - 料金テーブル: BigQuery データセットでは、このテーブルには
cloud_pricing_export
という名前が付けられています。
- 標準の使用料金テーブル: BigQuery データセットでは、このテーブルには
標準の料金のクエリ例で使用される一般的な値
このセクションのクエリの例では、[テーブル名] に値 project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX
を使用する
これらのクエリの例は、BigQuery にエクスポートされた詳細な使用料金データでも機能しますが、詳細な使用料金のエクスポート オプションで提供されるリソースレベルの情報を取得するようには作成されていません。
請求書の料金総額を取得する
次のクエリで、エクスポートされた課金データを使用して料金とクレジット額を表示する 2 つの方法を説明します。
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 ;
たとえば、前のクエリの結果は次のようになります。
Row | month | total | 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 ;
たとえば、前のクエリの結果は次のようになります。
Row | month | cost_type | total | 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 |
ラベルを使用したクエリの例
次の例では、ラベルでデータのクエリを実行する別の方法を示しています。
このセクションの例では、次のことを前提とします。
- アプリを 2 つ(grapefruit-squeezer と chocolate-masher)持っている。
- アプリごとに、2 つの環境(開発と本番)がある。
- アプリごとの開発環境に 1 つの小さいインスタンスがある。
- 本番環境には、アメリカに 1 つの小さいインスタンス、アジアに 1 つの小さいインスタンスがあります。
- 各インスタンスには、アプリと環境のラベルが付けられている。
- 実験に使用するラベルのないインスタンスが 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.
Row | sku.description | labels | cost |
---|---|---|---|
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.
Row | labels | cost |
---|---|---|
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;
Row | environment | cost |
---|---|---|
1 | prod | $15 |
2 | dev | $5 |
3 | null | $4 |
合計 | $24 |
Key-Value ペア別にグループ化
これらの結果を解釈またはエクスポートするときは注意してください。ここでは各行が、二重カウントなしの有効な合計を示していますが、他の行と組み合わせることはできません(ただし、キーが同じ場合や、同じリソースに複数のキーが設定されていない場合は除きます)。
標準 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;
Row | key | value | cost |
---|---|---|---|
1 | null | null | $4 |
2 | app | chocolate-masher | $9 |
3 | app | grapefruit-squeezer | $11 |
4 | environment | dev | $5 |
5 | environment | prod | $15 |
合計 | $44 |
合計が請求額より大きいことに注意してください。
確約利用割引のクエリ
次のクエリは、エクスポートされた課金データの確約利用割引に関連する料金とクレジット額を表示する方法を示しています。コミットメント料金とクレジットが Cloud 請求先アカウントとプロジェクトにどのように適用されるかについては、確約利用割引のアトリビューションをご覧ください。
確約料金の表示
課金データのエクスポートで確約利用割引の確約料金を表示するには、次のサンプルクエリを使用します。
標準 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: リソース名でフィルタする
この例では、費用をプロジェクトの祖先でグループ化し、指定された階層要素の下に生成されて相対的なリソース名で識別された費用のみをフィルタするクエリを示します。
String メソッド
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: 表示名でフィルタする
この例では、費用をプロジェクト祖先でグループ化し、指定された階層要素の下で生成されてユーザー指定の表示名で識別された費用のみをフィルタするクエリを示します。
String 照合メソッド
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 | personalization | 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.
Row | name | 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 データに関連するトピック
- BigQuery への Cloud Billing データのエクスポートを設定する
- BigQuery への Cloud Billing エクスポート データに対するクエリの例
- Looker Studio で一定期間の利用額を可視化する
Google Cloud コンソールで利用可能な費用と料金のレポート
- Cloud Billing レポートと費用傾向の表示
- 請求書または明細書の費用詳細の表示とダウンロード
- Google のクラウド サービスの料金を表示し、ダウンロードする
- 費用の内訳レポートでコスト削減を把握する
- 確約利用割引の効果の分析
- 費用とお支払い履歴の表示