BigQueryにエクスポートしたGCPの課金データを可視化してみる


@sinmetalさんの[記事](http://qiita.com/sinmetal/items/461329e924929325b23c)からの派生です。
GCPの課金データをDataStudioを使って可視化してなんか幸せになろうという試みです。

## 課金データをBigQueryにエクスポートする

@sinmetalさんの[記事](http://qiita.com/sinmetal/items/461329e924929325b23c)を参照してください。

## DataStudioとは？

Googleが提供しているBIツールです。
先日無償かつレポート数無制限で使用できることが発表されました。
https://analytics-ja.googleblog.com/2017/02/google.html

ちなみにData StudioはGCPのサービスではなく、Google Analyticsのサービスになります。

作ったレポートはGoogle Driveにも統合されます。

Data Studioは大きく2つの要素に分かれます。

- レポート
- データソース

レポートが一番のキモですが、データソースも大事です。
レポートには複数のデータソースを持たせて表示することができます。

今回はBigQueryを使って課金データの可視化をします。

## Data Studioを使う

https://datastudio.google.com/ にアクセスして下さい。

![スクリーンショット 2017-02-12 11.19.08.png](https://qiita-image-store.s3.amazonaws.com/0/8637/3f4f79d8-8afc-2234-d0ca-bef24ea4a4ac.png "スクリーンショット 2017-02-12 11.19.08.png")

左側の「データソース」メニューをクリックしてもらうと、サンプルのデータソースやらがあると思います。
右下の「＋」ボタンでデータソースを追加しましょう

![Google_データスタジオ.png](https://qiita-image-store.s3.amazonaws.com/0/8637/e333b9c0-807d-562e-9b80-7e8b13526f3e.png "Google_データスタジオ.png")

### データソースの追加

画像の通り、コネクタにBigQueryがあるので、対象のエクスポートされたデータがあるプロジェクトをポチポチと選んでいくと、最後に「接続」ボタンが有効になるのでポチりましょう。
データソース名はうっかり忘れがちなのでここで入力しとくといいです。
いつでも変更できますが、レポート作成中に「無題のデータソース」がいっぱいあると訳が分からなくなります。

![Banners_and_Alerts_と_無題のデータソース.png](https://qiita-image-store.s3.amazonaws.com/0/8637/10e31639-be27-882b-8a60-a85d0af8d040.png "Banners_and_Alerts_と_無題のデータソース.png")

※ 無題のデータソースのまま接続するとBigQueryのテーブル名そのままのデータソースになるみたいです。ただし、これはダッシュボードから普通にデータソースの作成をした場合で、レポート内からデータソース追加とかしてると名前がよくわからんものになる場合もあったんで注意が必要かも。

接続ボタンを押すと、BigQueryに接続しに行きます。
ちょっと待つとこんな画面が出てきます。

![スクリーンショット 2017-02-12 11.42.27.png](https://qiita-image-store.s3.amazonaws.com/0/8637/720321ab-819b-0b4e-447a-3fa7a9ee5e8f.png "スクリーンショット 2017-02-12 11.42.27.png")

Billingのカラムですね。

[ここ](http://qiita.com/sinmetal/items/461329e924929325b23c#スキーマの概要-おまけ)の説明を入力しとくといいかもしれないですね。

それから、レポートに表などを表示する場合はフィールド名がまんま出てくるので、フィールド名を日本語に変えたりとかも可能です。

![gcp_billing_export_0016CC_3188F7_91A787.png](https://qiita-image-store.s3.amazonaws.com/0/8637/e3fc2981-9e37-6fe8-fbdd-ffea21b83826.png "gcp_billing_export_0016CC_3188F7_91A787.png")

その他、合計値とか平均値とかの設定ができるんですが、今回は一旦そのままレポートを作成していきます。
右上の「レポート作成」ボタンをクリックして下さい。

### レポート作成

新規レポートだと、このダイアログが出てくるので、追加してください。

![スクリーンショット 2017-02-12 11.47.11.png](https://qiita-image-store.s3.amazonaws.com/0/8637/391c2ed3-d28b-6d05-991f-960dd2588dad.png "スクリーンショット 2017-02-12 11.47.11.png")

画面はこんな感じ

![無題のレポート.png](https://qiita-image-store.s3.amazonaws.com/0/8637/75e0d137-3e69-4b60-9bce-4bc9311b3687.png "無題のレポート.png")

こっから色々追加します。

### ツールバー

![無題のレポート.png](https://qiita-image-store.s3.amazonaws.com/0/8637/6d342958-d03d-fd55-2109-de3ef3bedb86.png "無題のレポート.png")


### 期間で課金額を見る

折れ線グラフで時系列にこの日は課金が多かったとかを見ます

![無題のレポート.png](https://qiita-image-store.s3.amazonaws.com/0/8637/4171dc60-3fbc-3af9-b6a3-6dc92539228f.png "無題のレポート.png")

使えるのは、project.idとか、product、resource_type辺りです。
僕個人は1プロジェクトしか使ってないのでプロジェクトを内訳にしてもグラフが面白くないのでプロダクトにしました。

![無題のレポート.png](https://qiita-image-store.s3.amazonaws.com/0/8637/d32cc27e-3782-c20f-c981-724dee7d5120.png "無題のレポート.png")

それから、デフォルトの期間をフィルタオプションとして設定できます。

![無題のレポート.png](https://qiita-image-store.s3.amazonaws.com/0/8637/a2aef2b1-b708-21e7-cc84-4c5d7b7d3a97.png "無題のレポート.png")

このフィルタオプションでページ内のウィジェット全てに期間のフィルタを適用することができます。
ウィジェット個別に期間フィルタを設定することも可能です。（ウィジェットのプロパティにあります。）

### 課金額の合計を見る

スコアカードを使います。
costを選択してるので、指定した期間内で割引前の金額を表示しています。

![無題のレポート.png](https://qiita-image-store.s3.amazonaws.com/0/8637/03d3c3fb-51ab-4a1b-c200-6391cf4bf3d1.png "無題のレポート.png")

![無題のレポート.png](https://qiita-image-store.s3.amazonaws.com/0/8637/361c4ebb-fd44-4875-4c89-f3f6d684988e.png "無題のレポート.png")

割引後の金額にしてみます。

![無題のレポート.png](https://qiita-image-store.s3.amazonaws.com/0/8637/fcfb7471-e697-01a2-f93f-9b8dc28feeac.png "無題のレポート.png")

新しい指標を作成

![無題のレポート.png](https://qiita-image-store.s3.amazonaws.com/0/8637/ecfe6d56-8d87-5a30-107e-763aa7a445e2.png "無題のレポート.png")

ニュッと最初に作ったデータソースのウィンドウが出てきます。
ここでフィールドを追加します。

![無題のレポート.png](https://qiita-image-store.s3.amazonaws.com/0/8637/f30bbb8d-7dc2-7d01-d4c6-4bd9cd91073b.png "無題のレポート.png")

`credit.amount`はマイナスの値で入ってるのでそのままカラムを加算しました。

![スクリーンショット 2017-02-12 12.15.38.png](https://qiita-image-store.s3.amazonaws.com/0/8637/d13bab16-4035-576e-abd9-ee6e66cb5867.png "スクリーンショット 2017-02-12 12.15.38.png")

ここの式には色々使えるので、Data Studioのヘルプを読んでみると色々できて楽しいですよ。

### プロジェクト、プロダクトの割合を見る

円グラフを使います。
これまたディメンションを変えれば色々と見れます。

![スクリーンショット 2017-02-12 12.26.35.png](https://qiita-image-store.s3.amazonaws.com/0/8637/7558a512-be86-6cfb-f9f0-245fe5ea9c65.png "スクリーンショット 2017-02-12 12.26.35.png")

### 特定のプロダクトのグラフだけ見たい

フィルタオプションを使いましょう。

![スクリーンショット 2017-02-12 12.28.05.png](https://qiita-image-store.s3.amazonaws.com/0/8637/cc6c30cc-6d99-5196-3d34-05da13638ca3.png "スクリーンショット 2017-02-12 12.28.05.png")

これで特定のプロダクトに絞ったりプロダクトを除外したデータが見れます。
期間フィルタと同様に、ページ内のデータに有効です。

チェックボックスのスタイルが気に入らなくてドロップダウンリストにしたい方は、プロパティのスタイルでエキスパンドをONにするとリスト形式になります。

![スクリーンショット 2017-02-12 12.30.34.png](https://qiita-image-store.s3.amazonaws.com/0/8637/40ff1ebf-feba-0aa3-e346-f888f610f571.png "スクリーンショット 2017-02-12 12.30.34.png")

また、フィルタオプションは複数置くことができ、しかもオプション動詞が連動します。
例えば、プロジェクト、プロダクト、リソースタイプという感じで子どものデータがある場合に両方向から絞り込めます。

- 全部選択した状態
![スクリーンショット 2017-02-12 12.32.49.png](https://qiita-image-store.s3.amazonaws.com/0/8637/6453e742-424b-5bd7-6b0e-f68aa758a22a.png "スクリーンショット 2017-02-12 12.32.49.png")
- プリエンプティブだけにした状態
![スクリーンショット 2017-02-12 12.33.54.png](https://qiita-image-store.s3.amazonaws.com/0/8637/582d996f-5fe3-d0bb-16b9-fc52e7eefc1f.png "スクリーンショット 2017-02-12 12.33.54.png")

## まとめ

と言うわけで、BigQueryに入れたデータを可視化するにはクエリをがんばらなくてもこんなに簡単にできるのでみんなやってみるといいよ！ということでした。
会社だと、このGCPプロジェクトめっちゃ使ってるけど何してるんだ！みたいなのを見えるようにするのに役に立ちますね。
この時課金額めっちゃ上がってるけどなんかしたんだっけ？とか。

あと、注意ですがこれはあくまで「課金額」なのでシステムの負荷とはまた別物です。
システムを見たい場合はStackdriver Monitoring見るなり、Stackdriver LoggingからExportしたデータを可視化するなりした方がいいと思いますが、課金額との相関関係を見たい場合にはDataStudioが役に立つんじゃないかなー、と思います。

最後に、チャカチャカ適当に作るとこんな感じになりました。

![Billing_Report.png](https://qiita-image-store.s3.amazonaws.com/0/8637/36a7c006-a725-5842-34ad-269173d6e850.png "Billing_Report.png")

もうちょいかっこいいのができたらレポート公開するかもしれません。
公開したらコピーして使ってみてください。

## その他のサンプル

[Visualize GCP Billing using BigQuery and Data Studio](https://medium.com/google-cloud/visualize-gcp-billing-using-bigquery-and-data-studio-d3e695f90c08)
[EXTERNAL COPY Public Billing Report Demo](https://datastudio.google.com/reporting/0B7GT7ZlyzUmCZHFhNDlKVENHYmc/page/dizD)

GCPのBilling Historyのスキーマはみんな同じなので、他にもReportが公開されています。
上記のReportはHow to Copyの手順で自分のBilling Historyのデータに差し替えることができます。