Visualize GCP Billing Data

GCPのBillingデータをGoogle BigQueryに送り始めました。

早速re:dashで可視化してみます。

可視化する内容

Google BigQueryへ送られるデータの詳細は以下です。この中からてきとうに使えそうなものを拾っていきます。

今回は、

  • X軸は月
  • Y軸はコストの合計
  • また、Y軸にプロダクトの種類(BigQuery, Computing Engineなど)も含める

みたいな感じで集計してみます。

クエリ

こんなクエリでやってみる。

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

月の計算が自分でも混乱しそうなのでメモする。

  • start_timeTIMESTAMP型で格納されている(2017-01-23 08:00:00 UTC)
  • TIMESTAMP_TO_USEC関数でμ秒単位のUNIXタイムスタンプに変換する(1485158400000000)
  • UTC_USEC_TO_MONTH関数でその日付の月の最初の日付に変換する(1485158400000000 -> 1483228800000000)
    • 2017-01-23 08:00:00 -> 2017-01-01 00:00:00の意
  • FORMAT_UTC_USEC関数でμ秒単位のUNIXタイムスタンプから人間が読める形式のタイムスタンプに変換する(2017-01-01 00:00:00)
  • 最後にLEFTで左7文字を抽出する(2017-01)

日付/時刻関数ドキュメントを参考にした。

start_timeend_timeで月をまたいだ場合なども考慮したいところですがめんどくさいので今回は考えていません!!

さっそくre:dashで使ってみる

グラフの設定はこんな感じにしました。

カラムの設定。

X軸の設定。

Y軸の設定。

わくわく。

りそう

げんじつ

感想

しょぼいグラフになった。

コストは400マイクロドルという見たこともないしょぼい値だし、今月から始めたからX軸1つしか無いし、BigQueryしか使ってないから青一色だし、これが現実。

これだとクエリがほしい値を取ってきてくれてるのかもよくわからん!

というわけなので引き続き業務でも取り入れて活用していきたい所存です。