請求データのエクスポート
請求データ
Google Cloud では、BigQuery を使用して Cloud Billing のデータを保存およびクエリできます。詳細な分析を行ったり、他のツールでデータを可視化したりする必要がある場合、請求データを BigQuery にエクスポートするのが便利です。
Google が提供するベースの請求データにアクセスするには、対象の Cloud Billing アカウントで Billing Account Administrator ロールをお持ちの場合に、Cloud Billing データの BigQuery へのエクスポートを設定できます。
DoiT は、DoiT の割引、カスタム料金、その他の関連項目を適用するために、Google の請求データを再計算します。再計算された請求データにアクセスするには、次のいずれかの方法を選択できます。
-
DoiT の Reports API を使用する。
-
エキスパートへの問い合わせ を開き、DoiT の請求エクスポートテーブルへのアクセスを依頼する。
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 の請求エクスポートテーブルと値が異なる可能性があるフィールドを以下に示します。
| フィールド | 型 | 説明 |
|---|---|---|
cost | float | DoiT の割引、カスタム料金、クレジット適用後の使用コスト。 |
credits.amount | float | DoiT の割引適用後に使用に対して適用されたクレジット額。 |
cost_type | string | 明細行が表すコストの種類。 |
sku_description | string | サービスで使用されたリソースタイプの説明。 |
sku_id | string | サービスで使用されたリソースの ID。 |
project.ancestors | record | 空。現在、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
-
Google Cloud Docs: Understand the Cloud Billing data tables in BigQuery
-
Google Cloud Docs: Query partitioned tables
-
Google Cloud Docs: Differences between exported data and invoices