メインコンテンツまでスキップ

請求データのエクスポート

請求データ

Google Cloud では、BigQuery を使用して Cloud Billing のデータを保存およびクエリできます。詳細な分析を行ったり、他のツールでデータを可視化したりする必要がある場合、請求データを BigQuery にエクスポートするのが便利です。

Google が提供するベースの請求データにアクセスするには、対象の Cloud Billing アカウントで Billing Account Administrator ロールをお持ちの場合に、Cloud Billing データの BigQuery へのエクスポートを設定できます。

DoiT は、DoiT の割引、カスタム料金、その他の関連項目を適用するために、Google の請求データを再計算します。再計算された請求データにアクセスするには、次のいずれかの方法を選択できます。

DoiT の請求エクスポートテーブル

必要な権限

DoiT の請求エクスポートテーブルへのアクセスをリクエストする際は、クエリに使用するアカウントを提示してください。Google のユーザーアカウント、Google グループアカウント、またはサービスアカウントのいずれでも構いません。

  • まだ DoiT の請求エクスポートテーブルが構成されていない場合は、対象の Cloud Billing アカウントに Billing Account Administrator ロールが必要です。

データの利用可能性

ご要望に応じて、対象の Cloud Billing アカウントに対するビューを Google BigQuery に作成し、共有します。対象の請求アカウントが複数ある場合は、アカウントごとに個別のビューを作成します。

  • 請求エクスポートテーブルには、DoiT インターナショナルの一括請求に参加した日以降の Cloud Billing データが含まれます。

  • BigQuery のロードジョブは ACID 準拠です。つまり、データのロード中に BigQuery の Cloud Billing エクスポートテーブルをクエリしても、途中までロードされたデータに遭遇することはありません。

プロジェクト・データセット・テーブル名

BigQuery で Google Cloud の請求データをクエリするには、FROM 句でテーブル名を指定する必要があります。テーブル名は project.dataset.BQ_table_name の 3 つの部分で構成されます。

  • project: BigQuery データセットを含む Cloud プロジェクト。例:doitintl-cmp-gcp-data-views

  • dataset: エクスポートされた Cloud Billing データを含む BigQuery テーブルがある BigQuery データセット名。gcp_billing_ に対象の Google Billing アカウント名を連結したものです(Billing アカウント ID のハイフンはアンダースコアに置換)。たとえば、対象の Google Billing Account ID が 123456-123456-123456 の場合、データセット名は gcp_billing_123456_123456_123456 になります。

  • BQ_table_name: エクスポートされた Cloud Billing データを含む BigQuery テーブル名。doitintl_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX の形式で、XXXXXX_XXXXXX_XXXXXX には対象の Google Billing アカウント ID のハイフンをアンダースコアに置換したものが入ります。

テーブル設定

クエリ最適化のために、テーブルのパーティション分割とクラスタリングのスキーマを確認してください。

項目設定
テーブルの種類パーティション分割
分割単位
分割対象フィールドexport_time
パーティションフィルター必須
クラスタリングキーproject_id, service_description, sku_description

VIEW スキーマ

DoiT の請求エクスポートテーブルのスキーマは、Google Cloud の請求エクスポートテーブルと一致します。詳細は、Google Cloud Docs: Structure of Detailed data export を参照してください。

Google の請求エクスポートテーブルと値が異なる可能性があるフィールドを以下に示します。

フィールド説明
costfloatDoiT の割引、カスタム料金、クレジット適用後の使用コスト。
credits.amountfloatDoiT の割引適用後に使用に対して適用されたクレジット額。
cost_typestring明細行が表すコストの種類。
sku_descriptionstringサービスで使用されたリソースタイプの説明。
sku_idstringサービスで使用されたリソースの ID。
project.ancestorsrecord空。現在、DoiT の請求エクスポートテーブルではサポートされていません。

サンプルクエリ

このセクションでは、DoiT の請求エクスポートテーブルをクエリする方法の例を示します。

ヒント

Google Cloud Billing Reports と同様に、DoiT の請求エクスポートテーブルは 時間集計 に Pacific Time Zone を使用し、夏時間の切り替えに追従します。以下のサンプルクエリでは、IANA タイムゾーン識別子 America/Los_Angeles を使用しています。

プロジェクトごとの日次コスト

次のクエリは、2023 年 1 月のプロジェクトごとの日次コストを返します。

DECLARE tz STRING DEFAULT "America/Los_Angeles";

SELECT
DATE(usage_start_time, tz) AS usage_date,
project.id AS project_id,
project.name AS project_name,
SUM(cost) AS cost,
SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) AS c), 0)) AS credits
FROM
`doitintl-cmp-gcp-data-views.gcp_billing_XXXXXX_XXXXXX_XXXXXX.doitintl_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX`
WHERE
DATE(export_time) >= "2023-01-01" AND DATE(export_time) >= "2023-01-31"
AND DATE(usage_start_time, tz) BETWEEN "2023-01-01" AND "2023-01-31"
GROUP BY usage_date, project_id, project_name
ORDER BY 1, 2

ラベルを使用したクエリ

次のクエリは、2023 年 1 月の environment ラベルが付いたリソースのコスト内訳を返します。

DECLARE tz STRING DEFAULT "America/Los_Angeles";

SELECT
labels.value AS environment,
SUM(cost) AS cost,
SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) AS c), 0)) AS credits
FROM
`doitintl-cmp-gcp-data-views.gcp_billing_XXXXXX_XXXXXX_XXXXXX.doitintl_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX`
LEFT JOIN UNNEST(labels) AS labels
ON labels.key = "environment"
WHERE
DATE(export_time) >= "2023-01-01" AND DATE(export_time) >= "2023-01-31"
AND DATE(usage_start_time, tz) BETWEEN "2023-01-01" AND "2023-01-31"
GROUP BY environment
HAVING
environment IS NOT NULL
ORDER BY 2 DESC
参照してください