/ gcp

Rewrite SQL for GCP billing export v1

先日課金情報エクスポート機能の正式版が発表され、課金情報のテーブルのスキーマが変更されました。

GCP の課金情報を Google BigQuery へ送り Redash で可視化しているので、このための SQL を書き直す必要があります。

書き換えた箇所

こんな感じで毎月の Billing 情報を集計しています。

gcp-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日までの課金情報が無かったためだった。

ので旧方式もしばらくは残しておいたほうが良さそう。 👀

感想

特別複雑なことはしていないので、単純にカラム名とテーブル名を変えるだけで済んだ。 🍻