Cloud Billing データを BigQuery にエクスポートする

コストを効率的に管理し、報告することは、財務管理に欠かせない作業です。これは、数十億ドル規模の事業の場合も、小規模な予算の場合も同じことです。Google Cloud のコストと使用量についてデータドリブンな意思決定を行うには、その判断に必要なデータを収集することから始める必要があります。

BigQuery への Cloud Billing エクスポート機能を使用することで、指定した BigQuery データセットに Google Cloud の詳細な課金データ(使用量、費用予測のデータなど)を終日、自動的にエクスポートできます。これにより、BigQuery から Cloud Billing データにアクセスして、詳細な分析を行うことが可能になります。また、Google データポータルでデータを視覚化することもできます。同様の方法でデータを JSON ファイルにエクスポートすることもできます。

BigQuery への Cloud Billing のエクスポートを有効にする方法

必要な権限

Google Cloud 課金データの BigQuery データセットへのエクスポートを有効にして構成するには、次の権限が必要です。

Google Cloud の権限の詳細については、以下をご覧ください。

1. BigQuery データセットを作成する

Cloud Billing の BigQuery へのエクスポートを有効にする前に、BigQuery データセットを作成しておくことをおすすめします。

データセットは、特定の Cloud プロジェクト内に含まれています。データセットは、テーブルビューへのアクセスを整理して制御するために使用される最上位のコンテナです。テーブルまたはビューはデータセットに属していなければなりません。したがって、データを BigQuery に読み込む前に、1 つ以上のデータセットを作成する必要があります。

BigQuery データセットの作成手順は次のとおりです。

  1. Google Cloud Console にログインし、BigQuery ページに移動します。

    BigQuery ページに移動

  2. Google Cloud Console ページの上部にあるプロジェクトのプルダウン マイ プロジェクト )で、データセットを含むプロジェクトを選択または作成します。

    推奨: エクスポートされた Cloud Billing データなど、請求管理に必要なリソースを格納する単独のプロジェクトを別に構成することをおすすめします。請求管理用の Cloud プロジェクトは、Cloud Billing API へのアクセスや、プログラムによる予算通知の Pub/Sub チャンネルにも使用できます。

  3. BigQuery のナビゲーション パネルで、プロジェクト名)をクリックします。

  4. [ データセットを作成] をクリックします。[データセットを作成] パネルが開きます。

    1. [データセット ID] を入力します。
    2. [データのロケーション] を選択します。

    3. [テーブルのデフォルトの有効期限] を選択します。

    4. [暗号化] オプションを選択します。Cloud Billing エクスポートの場合、[Google が管理する鍵] を選択します。

    5. 保存するには、[データセットを作成] をクリックします。

2. Cloud Billing の BigQuery データセットへのエクスポートを有効にする

BigQuery への Cloud Billing のエクスポートを有効にする手順は次のとおりです。

  1. Google Cloud Console にログインします。

    Cloud Console にログインする

  2. Console のナビゲーション メニュー)を開き、[お支払い] を選択します。

    複数の Cloud 請求先アカウントがある場合は、次のいずれかを行います。

    • 現在の Cloud プロジェクトの Cloud Billing を管理するには、[リンクされた請求先アカウントに移動] を選択します。
    • 別の Cloud 請求先アカウントを確認するには、[請求先アカウントを管理] を選択し、Cloud Billing データの BigQuery へのエクスポートを有効にする対象のアカウントを選択します。
  3. [お支払い] ナビゲーション メニューで [課金データのエクスポート] を選択します。

  4. [BigQuery Export] タブを選択します。

  5. [設定を編集] をクリックしてエクスポートを有効にし、エクスポート設定を更新します。

  6. [プロジェクト] リストから、BigQuery データセットが保存されているプロジェクトを選択します。

  7. [課金データのエクスポート先データセット] リストから、データをエクスポートするデータセットを指定します。

    ヒント: BigQuery データセットがまだ作成されていない場合は、作成するように求められます。必要に応じて、この手順に従って新しいデータセットを作成します

  8. [保存] をクリックします。

データの読み込み頻度

  • BigQuery へのエクスポートを最初に有効にした際は、Google Cloud の課金データが表示されるまでに数時間かかることがあります。
  • Google Cloud サービスが Cloud Billing プロセスにデータを報告する間隔はさまざまです。
  • Cloud Billing データは BigQuery データセットに定期的にエクスポートされますが、BigQuery へのエクスポートが遅延なく確実に配信されるとは限りません。
  • 使用状況レポートの頻度は Google Cloud サービスによって異なるため、最近使用した Google Cloud サービスの Cloud Billing データが表示されないことがあります。
  • BigQuery データセットには、最初にエクスポートを有効にした日付以降に発生した Cloud Billing データのみが反映されます。Cloud Billing データは過去にさかのぼって追加されないため、エクスポートを有効にする前に使用した Cloud Billing データは表示されません。
  • エクスポートされたデータ(BigQuery エクスポート レコードなど)を削除した場合、削除されたレコードをバックフィルすることはできません。
  • BigQuery の読み込みは ACID に準拠しているため、データの読み込みが完了する前に BigQuery Cloud Billing のエクスポート データセットにクエリを実行しても、読み込み途中のデータが取得されることはありません。BigQuery の特性については、こちらをご覧ください。

使用量テーブル

BigQuery への Cloud Billing エクスポートを有効にした直後に、使用量テーブルが自動的に作成されます。

以前の構成と BigQuery への Cloud Billing エクスポートの以前のバージョンを統合する場合は、別のテーブルにデータを保存したうえで UNION クエリを使用することをおすすめします。

データセットの権限

BigQuery への Cloud Billing エクスポートでは、サービス アカウントを使用してデータセットの権限を管理します。

BigQuery への Cloud Billing エクスポートを有効にすると、Google が所有および管理するサービス アカウントが、指定したデータセットのオーナーとして追加されます。サービス アカウントは次のようになります。

  • billing-export-bigquery@system.gserviceaccount.com

このサービス アカウントには、オフラインでテーブルを作成して Cloud Billing レコードを書き込む権限があります。

使用料金

BigQuery を使用して使用量データを保存すると、最低料金が発生します。BigQuery を使用して Cloud Billing データをエクスポートして分析する場合、ストリーミング、保存、クエリのデータ量により、関連するコストが異なります。課金対象については、ストレージとクエリの費用をご覧ください。詳細については、BigQuery の料金をご覧ください。

BigQuery での Google Cloud の使用量データ

次の表に、BigQuery にエクスポートされる Google Cloud の使用量データの内容を示しています。

フィールド 説明
billing_account_id 文字列

使用量が関連付けられている Cloud 請求先アカウント ID。

販売パートナー向け: Cloud Billing サブアカウントで生成された使用量の費用の場合、これはサブアカウントの ID になります。親である販売パートナーの Cloud 請求先アカウントの ID ではありません。

invoice.month 文字列

費用項目を含む請求書の年と月(YYYYMM)。たとえば、「201901」は 2019 年 1 月に相当します。

このフィールドを使用して、請求書の合計金額を取得できます。BigQuery への Cloud Billing エクスポートに対するクエリの例をご覧ください。

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 ドキュメントの Timestamp データ型に関する説明をご覧ください。以下のエクスポートされたデータと請求書の相違もご覧ください。

usage_end_time タイムスタンプ 指定された費用の計算が終了した時間(時間単位)すべてのサービスの使用量とコストは時間単位で表示されます。つまり、長時間実行されるサービスの場合、作業時間が複数の時間単位のウィンドウにまたがります。

詳細については、BigQuery ドキュメントの Timestamp データ型に関する説明をご覧ください。以下のエクスポートされたデータと請求書の相違もご覧ください。

project.id 文字列 Cloud Billing データを生成した Google Cloud プロジェクトの ID。
project.name 文字列 Cloud Billing データを生成した Google Cloud プロジェクトの名前。
project.ancestry_numbers 文字列 指定された project.id(たとえば、my-project-123)で識別されるプロジェクトのリソース階層に含まれる祖先。

たとえば、/ParentOrgNumber/ParentFolderNumber/ のようになります。詳細については、リソース階層をご覧ください。

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 です。詳しくは、リージョンとゾーンをご覧ください。
location.country 文字列 location.location が国、リージョンまたはゾーンの場合、このフィールドは国になります(例: US)。詳しくは、リージョンとゾーンをご覧ください。
location.region 文字列 location.location が国またはリージョンの場合、このフィールドはリージョンになります(例: us-central1)。詳しくは、リージョンとゾーンをご覧ください。
location.zone 文字列 location.location がゾーンの場合、このフィールドはゾーンになります(例: us-central1-a)。詳しくは、リージョンとゾーンをご覧ください。
cost 浮動小数点数 クレジットが適用される前の使用料。クレジットを含む合計費用を算出するには、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 文字列 Cloud Billing Catalog API によるリソース使用量の測定単位。
credits.name 文字列 Cloud 請求先アカウントに適用されたクレジットの説明。
credits.amount 浮動小数点数 使用量に適用されるクレジットの金額。クレジットは常に負の金額です。
export_time タイムスタンプ Cloud Billing データの追加に関連する処理時間。これは、新しいエクスポートごとに常に増加します。
以下のエクスポートされたデータと請求書の相違もご覧ください。

ラベルについて

BigQuery データセットにはラベルの列が表示されますが、現在のリリースではラベル値が空になるものがあります。ラベルのエクスポート データが取り込まれる時間はサービスに応じて異なり、各サービスが提供するタイミングによって決まります。

使用可能なシステムラベル

システムラベルは、使用量データを生成したリソースに関する重要なメタデータを含む 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 単位)。

エクスポートされたデータと請求書の相違

Google Cloud サービスが Cloud Billing プロセスに使用量データと費用データを報告する間隔はさまざまです。このため、使用量が報告されるまでに若干の遅延が生じることがあります。月末に、遅れて報告された使用量がその月の請求書に含まれず、翌月の請求書に繰り越される場合があります。ただし、使用量のタイムスタンプは、Cloud Billing プロセスに報告された実際の使用日時を表します。

タイムスタンプ フィールドを使用して費用を照会すると、返されたデータに、報告が遅れたために同じ月に生成された請求書に含まれていない使用量が含まれていることがあります。このため、返された Cloud Billing データとその請求書が直接マッピングできないことがあります。

タイムスタンプ フィールドには次のものが含まれます。

  • usage_start_time
  • usage_end_time
  • export_time

請求書に直接マッピングされた Cloud Billing データを返すには、タイムスタンプ フィールドではなく invoice.month を使用します。

エラーと調整

万が一、Cloud Billing データにエラーが含まれていた場合や調整が必要な場合は、エラーを打ち消すデータが Cloud Billing データに追加されます。次の列以外は変更されません。

  • cost
  • credit
  • usage.amount
  • export_time

新しいデータを確認するには、クエリで export_time を取得します。