課金エクスポートの移行

本日(1013)、たまたまエクスポート先のテーブルを見る機会があったのですが、
v1とかいうテーブルが増えました。

gcp_billing_export_XXXXXX_XXXXXX_XXXXXXXX
gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXXXX

GCPには自動的に日次の課金データをBigQueryにエクスポートする機能があります。 GCPのコンソールから [ お支払い > 課金データのエクスポート ]

課金のエクスポート01

金のエクスポート02

v1テーブルのパーティションを調べて見ると、20171011から作成されてます。

SELECT partition_id FROM [project_id:dataset.gcp\_billing\_export\_v1\_XXXXXX\_XXXXXX\_XXXXXXXX$__PARTITIONS_SUMMARY__]

20171011
20171012
20171013

こちらがドキュメントです。
https://cloud.google.com/billing/docs/how-to/export-data-bigquery

要点をまとめると、下記です。

請求データのエクスポート機能はベータ版で、v1が新バージョン。
新旧でリネームされたカラムと追加されたカラムがある。
旧バージョンと新バージョンの移行期間は3ヶ月で、2018年1月に旧バージョンのエクスポートは停止される。
移行期間中は両バージョンにエクスポートされ、新バージョン分の料金も発生する。

Data Studioなどのツールで課金データを参照している場合は、
2018年1月までに参照先を新バージョンに切り替えておく必要がありますね。

スキーマの変更点

リネーム
product → service_description
ex.) BigQuery
resurce → sku_description
ex.) Total Storage
start_time → usage_start_time
ex.) 2017-10-11 14:00:00 UTC
end_time → usage_end_time
ex.) 2017-10-11 15:00:00 UTC
追加
service_id
ex.) 24E6-581D-38E5 ※ BigQueryだったら24E6-581D-38E5

サービスの課金対象単位 (※1)

sku_id
ex.) 6132-2FF0-A0A4

請求日時

export_time
ex.) 2017-10-12 11:43:53 UTC

※1
https://cloud.google.com/skus/?currency=JPY
https://cloud.google.com/billing/reference/rest/v1/services.skus/list


新旧で同じパーティションのレコード件数を調べましたが、差分がありました。
差分のデータは前後のパーティションに存在するので、新旧でエクスポートの区切りが異なるようです。

この差分の吸収方法についても書かれています。

旧バージョンのテーブルに対して以下を実行

SELECT partition_id, MSEC_TO_TIMESTAMP(last_modified_time)
FROM [project_id:dataset.gcp_billing_export_XXXXXX_XXXXXX_XXXXXX$__PARTITIONS_SUMMARY__]

20171012 | 2017-10-13 08:29:36 UTC	 
20171011 | 2017-10-12 12:14:32 UTC	 

旧バージョンのパーティション20171012は、新バージョンのテーブルの export_time <= TIMESTAMP('2017-10-13 08:29:36')までが対象という事らしいです。

たまたま見つけてよかったなと。