Rewrite SQL for GCP billing export v1
先日課金情報エクスポート機能の正式版が発表され、課金情報のテーブルのスキーマが変更されました。
GCP の課金情報を Google BigQuery へ送り Redash で可視化しているので、このための SQL を書き直す必要があります。
書き換えた箇所
こんな感じで毎月の Billing 情報を集計しています。
これのための SQL を書き換えていきます。
- before
SELECT
SUM(cost) AS sum_cost,
product,
LEFT (FORMAT_UTC_USEC( UTC_USEC_TO_MONTH(TIMESTAMP_TO_USEC(start_time))), 7) AS month
FROM
billing.gcp_billing_export_00AA78_858318_441716
GROUP BY
month,
product
- after
SELECT
SUM(cost) AS sum_cost,
service.description,
LEFT (FORMAT_UTC_USEC( UTC_USEC_TO_MONTH(TIMESTAMP_TO_USEC(usage_start_time))), 7) AS month
FROM
billing.gcp_billing_export_v1_00AA78_858318_441716
GROUP BY
month,
service.description
ぱっと見違いがわからないので diff を取るとこんな感じです。
SELECT
SUM(cost) AS sum_cost,
- product,
- LEFT (FORMAT_UTC_USEC( UTC_USEC_TO_MONTH(TIMESTAMP_TO_USEC(start_time))), 7) AS month
+ service.description,
+ LEFT (FORMAT_UTC_USEC( UTC_USEC_TO_MONTH(TIMESTAMP_TO_USEC(usage_start_time))), 7) AS month
FROM
- billing.gcp_billing_export_00AA78_858318_441716
+ billing.gcp_billing_export_v1_00AA78_858318_441716
GROUP BY
month,
- product
+ service.description
注意事項
新旧のクエリでそれぞれ取得した課金額が異なっていることに気づきました。2倍位違う。旧の方が高くて、新の方が低い。
GCP 管理画面を見ると、旧の値が合っているようだ…。
原因は新方式が始まったのは 10/11 の 14:00 からだったので、1日から10日までの課金情報が無かったためだった。
ので旧方式もしばらくは残しておいたほうが良さそう。 👀
感想
特別複雑なことはしていないので、単純にカラム名とテーブル名を変えるだけで済んだ。 🍻