さくらのクラウドの請求情報をPowerBIに取り込んで分析してみよう

さくらのアドベントカレンダー13日目です。ごめんなさい。ごめんなさい。ごめんなさい。当日に投稿できなくてごめんなさい。13日目分の記事です。

早々にやらかしてしまったのですが、気を取り直して、本題に行きましょう。

さくらのクラウドはビジネスにも優しいクラウドでありたいと思っています。そのためには課金額の傾向なども簡単に把握できるようになったら良いなと思っています。

課金額の過去の履歴はコンパネ上から見えるとは言え、さらに細かい内容まで分析できると良いですよね。そのために請求関連APIで過去の請求履歴を取得できるように実装をしています。この明細をBIツールに取り込んだらもっと自由な分析が出来るんじゃ無いか？と思い立ったわけです。

そして書いたのがこのツール「[sacloud_get_all_billdetails.php](https://github.com/terao/eisaku/blob/master/sacloud_get_all_billdetails.php)」です。PHPですがコマンドラインスクリプトです。今回は、このスクリプトで書き出した請求履歴の明細データを、PowerBIに取り込んで分析をしてみます。（ちなみに、請求データは私のテスト環境のデータを使っています。）

## 請求履歴の明細データをエクスポートする

使い方は、APIキーを作って、設定ファイルに書き込み、スクリプトを実行するだけです。過去の請求履歴にある全明細を一つのCSVにまとめてます。

### 1. クラウドのコンパネでAPIキーを作成する

さくらのクラウドのコンパネにログインし、上部のメニューにある「設定」- 下に表示されたメニューの「APIキー」 - 右上の「＋追加」を順番にクリックします。

![APIキーの追加](https://qiita-image-store.s3.amazonaws.com/0/70132/6bad8e52-08c4-f7b8-173a-f4cffd7b8065.png)

名前は適切につけ、「リソース閲覧」以上の権限と、他サービスへのアクセス権で「請求情報」にチェックして、「追加」をクリックします。

![APIキー詳細](https://qiita-image-store.s3.amazonaws.com/0/70132/3f32420b-fd14-6843-4c3d-6814073a1d6e.png)

APIキー一覧画面で該当のキーをダブルクリックするとキーの詳細が表示されます。
「ACCESS TOKEN」と、「ACCESS TOKEN SECRET」が重要なのでメモをします。(ちなみにこのキーは削除済みです。)

### 2. 設定ファイル `sacloudapi_config.php` を作成する

以下のようなファイルを作り、先ほどメモをした「ACCESS TOKEN」と、「ACCESS TOKEN SECRET」を追記します。

```
<?php 
// set API Tocken
$token = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxx";
// set API Secret
$secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
```
### 3. スクリプトを実行する

[sacloud_get_all_billdetails.php](https://github.com/terao/eisaku/blob/master/sacloud_get_all_billdetails.php)をダウンロードして、実行します。実行にはphp環境が必要です。

```
　$ wget https://raw.githubusercontent.com/terao/eisaku/master/sacloud_get_all_billdetails.php
　$ php sacloud_get_all_billdetails.php
```

しばらく実行には掛かりますが、大人しく待っていると、以下のようなファイルが生成されています。実行時間は利用期間の長さによって前後します。

`"bill-会員ID-アカウント名.csv"`

これで、過去の請求の明細が一つのファイルにまとまりました。

## これをPowerBIに喰わせてみよう

[PowerBI](https://powerbi.microsoft.com/ja-jp/what-is-power-bi/)は、Microsoftが提供するデータの分析＆可視化ツールで、無料で提供されています。

![PowerBI](https://qiita-image-store.s3.amazonaws.com/0/70132/4dccaeb1-dace-a0e7-c146-79665a26b448.png)

### データの取り込み

Microsoftのアカウントが無い場合は登録してからログインしてください。

![データの取り込み](https://qiita-image-store.s3.amazonaws.com/0/70132/ca5d3d22-0718-5928-80c7-fd8dd8c5e1c5.png)

データセットの右の「＋」、ファイルの下の「取得」、「ローカルコンピュータ」を順にクリックし、先ほど生成されたファイルを選択してインポートしてください。

![インポート完了](https://qiita-image-store.s3.amazonaws.com/0/70132/cd41fcb2-f33d-3b7f-2b43-eb983c71f49e.png)

インポートが完了するとデータが表示されるので、これをクリックします

### グラフのカスタマイズ

![グラフのタイプ](https://qiita-image-store.s3.amazonaws.com/0/70132/ee940951-022e-54ef-6feb-61ea8bfd165f.png)

グラフのタイプは様々なタイプが選択可能です。ここでは積み上げ折れ線グラフを選択します。

![グラフの設定](https://qiita-image-store.s3.amazonaws.com/0/70132/314b1ffe-81bd-8545-f6d8-0a4d3ddc0586.png)

軸、凡例、値は、それぞれ上のように指定します。[^1]
[^1]: 商品金額(税別)にΣ（合計）が付かず、個数のカウントになる場合があります。その場合は、ローカルでCSVをエクセル等で開き空欄になっている行が無いかを確認してください。空欄がもしあれば0を書き込んで再度インポートをしてください。PowerBIの使用で全行数字が入っていないと合計を計算してくれないようです。

![ゾーン別利用料金推移](https://qiita-image-store.s3.amazonaws.com/0/70132/34dbee75-a386-6ec9-6366-cdf39dfd0d49.png)

こうやって作成されたのが、この図になります。一番右が落ち込んでいるのは、月半ばなので請求金額がまだ少ないためです。

このデモを作りながら、さすがにちょっと使いすぎだなと気づけたり、夏頃からテスト環境が大きくなったのはExpoのせいかなといった分析や、石狩第１にまだサーバが残っているので、そろそろ移行しようかなとか分析が出来ました。

![商品名ごとの利用料金推移](https://qiita-image-store.s3.amazonaws.com/0/70132/a3def7a5-ca22-dd74-fdd3-1afff87ede2c.png)


凡例を、ゾーン名から商品名に入れ替えて見ます。そうすると、こんなグラフになります。さすがに細かすぎてよく分からないので、サーバに絞ってみます。絞るにはフィルターの基本フィルターというところで選択肢を選ぶことが出来ます。

![簡単なフィルターを設定](https://qiita-image-store.s3.amazonaws.com/0/70132/f0caf82e-6774-ae59-900a-66268862ba34.png)

そうすると、サーバのプランによってどのくらいの費用を使っているかが一目で分かります。



![サーバプラン別利用料金推移](https://qiita-image-store.s3.amazonaws.com/0/70132/df492cb0-3633-d3d8-f76e-54c6dae8b08e.png)


## まとめ

今回は簡単に請求情報をエクスポートして、PowerBIにインポートして分析を出来るようにしました。

PowerBIはこれだけでなく様々な分析が可能なようですので、遊んでみてください。

遅れて申し訳なかったですが、13日目のアドベントカレンダーでした。

皆様！良いクリスマスをお過ごしください！


------------