BoxのデータをBigQueryに自動同期し、Googleデータポータル(旧Data Studio)で可視化する

## 概要
Boxはメンバー間でファイルやフォルダを共有したり、ファイルを簡単に追加、移動、編集したりすることができます。
Boxにアップロードされたデータを分析する際、更新されるたびにデータを転送して最新の状態に保つのには手間がかかります。そこで今回は、[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=box_to_bigquery)という分析基盤向けデータ統合サービスを使い、Boxのデータ取得自動化＋DWH(データウェアハウス)への統合＋可視化までやってみようと思います。

今回、データの転送手段として採用した[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=box_to_bigquery)は、Boxの他にも、様々な広告・CRM・DBなどのデータソースにも対応しています。
[troccoの使い方まとめ（CRM・広告・データベース他）](https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)
![boxtobigquery.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/82cef102-54d2-4156-2795-e64e1e335457.png)





## ゴール
下のようなBoxのデータを
![boxデータ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/8eeebb78-d417-e4d2-f6b2-1f6d7dca3fd7.png)



データポータルで可視化します(作成後は自動で最新値に更新することも可能です）
![データ可視化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/55c9df8a-4a8b-7de4-ea64-c418f83a4195.png)







## こんな人におすすめ
・BoxのデータをBigQueryに自動的に蓄積させたい
・Boxのデータをうまく活用して分析をしたいが、データの転送作業に苦戦している
・さまざまなデータの分析に時間の浪費を感じている

## 1. troccoでBox→Google BigQueryの転送自動化
### 1-0. 事前準備
データの転送のためには[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=box_to_bigquery)のアカウント・Googleアカウントが必要です。

無料トライアルを実施しているので、事前に申し込み・登録しておいてください！
[https://trocco.io/lp/index.html](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=box_to_bigquery)
（申込の際に、この記事を見た旨を記載して頂ければご案内がスムーズに行えます）

Googleアカウントに関しては、Google BigQueryとGoogleデータポータルは同じアカウントで運用したほうが接続が簡単だと思います。

### 1-1. 転送元・転送先を決定
[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=box_to_bigquery)にアクセスして、ダッシュボードから「転送設定を作成」のボタンを押します。
![ダッシュボード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/c3b4d666-63f1-a260-8420-a811367e30cf.png)



転送元に「Box」を指定し、転送先に「Google BigQuery」を選択して転送設定作成ボタンを押します。
![boxbigquery選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/9517f5d0-8181-c745-a599-94cb8f054e7f.png)


すると、設定画面になるので、必要な情報を入力していきます。
### 1-2. Boxとの連携設定
あとで見たときに自分で分かるように転送設定の名前とメモを入力します。
![①概要設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/4d2e1bfb-aaa5-4c2a-34de-7cd3fec869af.png)



次に「転送元Boxの設定」内の「接続情報を追加」ボタンを押します。
![box設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/cf1faa7f-2030-9996-3ff1-b8a0a943499e.png)



別のタブでBoxの接続情報の新規作成画面が開きます。
接続情報を作成するためにJSONファイルを取得する必要があります。
![box接続情報.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/e5af44f1-f979-627c-c699-b655146e3cce.png)

JSONファイルの取得方法は以下の通りです。
[https://trocco.zendesk.com/hc/ja/articles/900004862986](https://trocco.zendesk.com/hc/ja/articles/900004862986-box%E3%81%AE%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A%E4%BD%9C%E6%88%90%E6%89%8B%E9%A0%86%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)
> １．Boxの開発者コンソールにログインし、マイアプリより「アプリの新規作成」を押してください。
２．カスタムアプリを作成してください。また、このとき「サーバ認証による認証」を選択頂くようにお願いします。
３．カスタムアプリ作成後に「構成」タブに移動し「公開キーの追加と管理」より「公開キー」を追加してください。
４．3より取得したJSONファイルを「カスタムアプリ設定ファイル」に登録してください。




問題がなければ保存します。再度転送設定画面に戻り、接続情報の「接続情報を読み込む」ボタンを押すと、先ほど作成した接続情報が選択できるようになります。
![sample追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/2e62d32d-c199-074c-6016-38218fa2709d.png)






### 1-3. Boxからのデータ取得設定
次に、取得するデータの指定を行います。


・フォルダーID
Boxの管理画面より該当のフォルダーに遷移し、URLからフォルダーIDを取得してください。


・パスプレフィックス
取得対象のファイル名のパスプレフィックスを指定してください。（現状ですと、第1階層のファイルデータのみ取得可能です）

・入力ファイル形式
入力ファイル形式を指定してください。


![box情報追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/f5261b71-c6e4-199a-205a-4c1aef415093.png)




### 1-4. 転送先Google BigQueryの設定
転送元と同様に設定していきます。Google BigQueryに関してはGoogleアカウントとの連携が必要です。（事前に転送先となるデータセットとテーブルを作成しておいてください。）
![Googleアカウント連携.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/0bb3d4f1-188c-f9b4-1e2d-023684ce65d3.png)
![BigQuery接続情報作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/683df5ea-e4df-008b-b4c7-6b2d1c6364c1.png)





転送先とするデータセット名、テーブルを設定します。
![bigquery接続情報.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/f20e2cab-6e16-c0bc-0909-74e00b31688c.png)



これで入力は完了です。接続状況を確認し問題がなければ、「次のステップへ」をクリックし確認作業に進みましょう。

### 1-5. データのプレビュー
少し待つと、転送元のデータがプレビューされます。ここではBoxから取り込んだデータが表示されています。
![スキーマプレビュー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/bb97d419-506d-fca7-27ff-2446df056293.png)

ここで、BigQueryの命名規則に合わせてカラム名の変更を行います。BigQueryではカラム名に"."を使うことができないので、sepal.length, sepal.width, petal.length, petal.widthの"."を"_"に変更します。

![カラム名変更.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/3651e912-ae7c-8b30-39c1-5c617bc28a65.png)

カラム名の変更を行ったら「変更をプレビュー」を選択します。

![変更の確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/60ce6328-f9fe-6be0-5410-a023c12751f8.png)




カラム名の変更を確認できたので、設定を完了します。
転送設定の一覧から作成した設定を選び「スケジュール・通知設定」に進みます。

### 1-6. スケジュール・通知設定
「スケジュール・トリガー設定」タブを開きます。

![スケジュール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/75a1881b-c94c-0310-a25d-cba3d3ae2456.png)





「スケジュールを追加」ボタンを押すと、以下の画像のような入力欄が出てきます。ここで実行スケジュールを設定することで、転送を定期的に実行し自動化することが出来ます。
![時間設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/d80a2a60-21ae-12c1-7a99-a7196fdff7b0.png)



### 1-7. データ転送ジョブの実行
設定は以上です。最後に、手動で転送ジョブを実行し、Google BigQueryにデータを送ります。
手動で実行する場合はジョブ詳細画面の「実行」ボタンを押します。
![実行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/f2a8b7e2-4ea8-ebc1-6072-68a62cb4f9ff.png)



これで転送は完了です！

## 2. Google BigQueryの設定
特に設定することはありません。設定で選択したテーブルにデータが転送されているので、今すぐに分析・可視化を行うことが出来ます。
データがきちんと送られているかをプレビューで確認してみます。
![bigqeury転送確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/21d623a2-4069-d648-d30a-a5356610b43c.png)


転送されていることが確認できました！
## 3. Googleデータポータルで可視化
それでは、これらのデータをGoogleデータポータルで可視化していきます。  
まずはGoogle BigQueryとGoogleデータポータルの接続設定を行います。
Googleデータポータルを開いて、新規のレポートを作成します。
![Qiitaテスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/d5dcbc10-c011-9904-aeeb-e9a2081beae2.png)

「データを追加」のボタンを押し、データ元の選択肢からGoogle BigQueryを選択します。
![BigQuery選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/854d5b3a-1ff5-a6cb-c9ce-41064f9ee0d8.png)


転送に使用したプロジェクト、データセット、表（テーブル）を選択し、追加します。
![データ表化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/cd8fba6b-a456-6ed3-e22e-ef041edee9e0.png)




データベースに接続できたら、使用可能な項目を利用し、必要な情報を表示させることができます。
今回はそれぞれのデータがどのように分布をしているかを知りたいので散布図を用いることにします。

![転送.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/69fb333a-7852-38f6-7827-05bcc643e3ba.png)

「グラフ＞散布図」を選択した際に、ディメンション、指標X、指標Yを項目から選択する必要があります。
ディメンションは散布図にプロットするデータを選択することができ、指標X、指標Yは散布図においてそれぞれ、横軸、縦軸に該当します。
まず、ディメンションにpetal_length、指標Xにpetal_length、指標Yにpetal_widthを選択します。
![項目指定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/700c1aca-ecf1-5090-ad93-ffd54c676ed5.png)

同様に指標を入れ変えて五つの散布図を加え、レイアウトを調整します。

![データ可視化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/0ebe3e1b-c9c5-d499-0c82-36e5eabe8d9c.png)







## まとめ
いかがでしたでしょうか。[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=box_to_bigquery)を使うと、Boxのデータでも自動でGoogle BigQueryにまとめていくことができるほか、100万規模の大きなデータからそうではない小さなデータまで複雑なコーディングをせず[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=box_to_bigquery)の画面上の設定のみでデータの転送が可能になります。
実際に弊社サービスの[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=box_to_bigquery)においても、マーケティングKPI等をこのような流れで収集・分析しています。
ぜひ広告データ分析の際にはご活用ください。
[https://trocco.io/lp/index.html](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=box_to_bigquery)

実際に試してみたい場合は、[無料トライアル](https://trocco.io/inquiry_trial/new?utm_medium=social&utm_source=qiita&utm_campaign=box_to_bigquery)を実施しているので、この機会にぜひ一度お試しください。（申込時に、この記事を見た旨を記載して頂ければスムーズにご案内することができます）

その他にも広告やデータベースなど、様々な分析データをETL・転送した事例をまとめました。
[troccoの使い方まとめ（CRM・広告・データベース他）](https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)