Google SpreadsheetsのデータをAmazon Redshiftに自動同期して、Lookerで可視化してみる

## 概要

Google Spreadsheets(スプレッドシート)に集められたデータを分析にかけるとき、更新がない数十件程度のデータであれば、BIツール上に手作業でグラフを作成することができます。しかし、分析用のデータはたいてい常に更新があり、最新のグラフを維持し続けることは難しいものです。そこで、DWH（データウェアハウス）にデータを自動で統合することが必要になるでしょう。

今回は[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_redshift)という分析基盤向けデータ統合サービスを利用してGoogle Spreadsheetsのデータを自動で抽出できるよう設定し、DWHへの統合・データポータルの可視化までをやってみます。

データの転送手段として採用する[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_redshift)は、Google Spreadsheetsの他にも、様々な広告・CRM・DBなどのデータソースに対応しています。
[troccoの使い方まとめ（CRM・広告・データベース他）](https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)
![Spreadsheets_to_Redshiftアイコン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/c3b3a28c-04e7-411c-2899-4d59f789b2d4.png)




## ゴール
↓画像のようなデータから
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/b6a8ba6f-c333-d344-6b32-49aaa4d5c26a.png)





↓画像のようなグラフをを30分くらいで作り上げます（作成後は自動で最新値に更新することも可能です）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/537f48bb-e04e-4937-f455-446fe6869f46.png)



## こんな人におすすめ
・スプレッドシートに集まるデータを毎回DWHに転送するのは面倒
・Googleフォームを利用したアンケートの結果などを自動的に分析できるようにしたい
・スプレッドシート上だけでの分析では不十分なので手軽にDWHへ統合したい

## 1. DWHと同期する手段の選定
### 1-1. DWHの選定
まずはデータを集約する場所である、DWH（データウェアハウス）を選定します。

* Amazon Redshift
* Google BigQuery
* MySQLやPostgreSQL
など

今回はAmazon Redshiftを利用しましょう。

### 1-2. Google SpreadsheetのデータをAmazon Redshiftに転送する方法
Amazon Redshiftにデータを集約することが決まったので、続いては転送するための手段を検討します。

1. CSV形式でエクスポートしたGoogle Spreadsheetsのデータを直接Amazon Redshiftのクラスターへ転送する
1. APIを用いた連携を構築する
1.  [trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_redshift)を利用し、画面上の設定のみで転送する。

１は単発の分析でしたら可能ですが、収集したデータをその都度更新し続けることは困難です。２の方法ではAPIプログラミングに関する知識が必要で、非エンジニアには手が出しにくい、あるいは構築までに大きな時間的コストが必要となります。
今回はデータの自動更新が可能、かつ複雑なプログラミングの知識もそれほど必要としない４の[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_redshift)を利用してみたいと思います。

## 2. troccoでGoogle Spreadsheets→Amazon Redshiftの転送自動化
### 2-0. 事前準備
データ転送のためには[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_redshift)のアカウント、データ元となるスプレッドシートにアクセスできるGoogleアカウント、Amazon Redshiftを操作するためAWSのアカウントが必要です。

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



### 2-1. 転送元・転送先を決定
[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_redshift)にアクセスして、ダッシュボードから「転送設定を作成」のボタンを押します。
<img width="1792" alt="qiita_20200827_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/098f74e5-a834-6b9f-0ea2-2b9c592a6169.png">



転送元に「Google Spreadsheets」を指定し、転送先に「Amazon Redshift」を選択して転送設定作成ボタンを押します。
![転送先設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/f94f2b84-ac04-266e-fb78-ac5c20f0eda3.png)



設定画面になるので必要な情報を入力していきます。
### 2-2. Google Spreadsheetsとの連携設定
まずはこの転送設定に名前をつけ、後で見返したときなんの設定かわかるようなメモを入力しておきます。複数のユーザーで転送設定を共有する機能もあるので、一度作成した設定をチーム内で使い回すことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/4b59a1fc-051f-c02a-4fa1-b320e29ddbc1.png)


次に「転送元の設定」内の「接続情報を追加」ボタンを押します。事前に接続情報を設定しておけば「接続情報を読み込み」から呼び出すことが可能です。
![スプシ接続設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/c8f43a84-ffbe-624b-077f-dfd8bfb2c72b.png)


別のタブで接続情報の新規作成画面が開きます。Googleアカウントとの連携が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/97c0a2a8-fdee-d61b-72d2-6001e55d0923.png)

![接続設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/fe716bac-3d09-7160-86ee-54c83a0460f3.png)




再度転送設定画面に戻り、接続情報の「再読込」ボタンを押すと、先ほど作成した接続情報が選択できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/0efe9d9e-cf60-9d53-b0f3-db67f8afbb6f.png)

### 2-3. Google Spreadsheetsからのデータ抽出設定
次に、どのようなデータを取得するかを設定していきます。
今回は[e-Stat](https://www.e-stat.go.jp/)から取得した、日本の各宗教の信者に関する以下のサンプルデータを用いて分析を行ってみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/b95874bb-1cf6-986d-eee5-69502f6ead20.png)



必要なデータを入力していきます。
![転送元設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/2e98bb55-b578-4868-7ca8-5f0aca1f2581.png)






### 2-4. 転送先Amazon Redshiftの設定
転送元と同じく、「接続情報を追加」を押すと別のタブが開くので必要な情報を入力します。事前に設定しておくことでこちらもすぐに呼び出すことが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/18410059-f4a5-c7f8-277b-f809b2b5bf4a.png)
Redshiftとの接続設定が完了したら転送に必要な情報を記入していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/b9ec9345-15ce-2888-0034-8ff91269a9fe.png)


これで入力は完了です。「保存して自動データ設定・プレビューへ」をクリックし、確認作業に進みましょう。


### 2-5. データのプレビュー
転送元のデータがプレビューされました。先程設定したシートから取り込んだデータが表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/c8ec0288-ab78-3597-89ed-11248ddab4ff.png)


データが正常に転送されてることが確認できました。
この画面ではマスキング設定・文字列の置換・暗号化といった設定も可能なほか、転送元・転送先に応じたオプション設定が可能です。(下の画像はRedshiftを利用した際のオプション設定です)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/0c275815-cb47-c3e3-1af6-34f995461023.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/e4f830b7-f937-9928-e8ab-da446589101d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/db2aa0c4-501f-8685-25b7-64085c55e655.png)







### 2-6. ジョブの実行
これで設定は終わりです。「実行」ボタンを押してAmazon Redshiftにデータを送ります。
![設定確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/4e43fb4c-bfc7-dcea-f351-cbe443be23bd.png)


これで転送は完了です！

## 3. Redshiftでプレビューを確認
[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_redshift)上の設定に従ってデータが転送されているはずです。
プレビューで確認してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/68e8ce54-d80e-c5d2-a2e3-1fbc25f83c73.png)





転送されていることが確認できました！
## 4. Lookerを用いた可視化
###4-1.グラフ作成の準備
転送されたデータをLookerで可視化していきます。  
まずはAmazon RedshiftとLookerを接続します。
Lookerを開いて、「管理」タブの「Connections」を開きます。「Add connections」からデータベースを追加します。
![Looker接続先追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/026c379d-5c20-c690-980e-2a18b0f615eb.png)


接続に必要な情報を入力していきます。
![Redshift接続設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/645dff73-7d10-783a-6cd6-d2d7c5e9be47.png)

下部のテストボタンから接続を確認したら、エディタでモデルとビューの定義を行いましょう。これで可視化の準備が整いました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/56a60694-20e0-dbfd-2016-68cb0672dd49.png)
モデルとビューの書き方は[公式ドキュメント](https://docs.looker.com/ja/data-modeling/getting-started/model-development#adding_a_new_view_from_an_existing_database_table)が参考になるかと思います。

###4-2.グラフの作成
トップページに戻り、新規のダッシュボードを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/af07477b-211b-5ae4-ed2c-64f5d065a954.png)
「ダッシュボードの編集」、「タイルの追加」から先ほどモデルとビューを定義したExploreを選択しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/1b28b016-61e8-d84f-b377-c24def498ddd.png)
ディメンション（縦軸）、メジャー（横軸）として定義されたデータが表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/7153f653-c2fb-63b0-8569-620b802e28c3.png)
試しにディメンションとして「Area」と「Year」を、メジャーとして「Buddhism」を使用し、日本における仏教信者数の変動を可視化するとこのようなグラフができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/23b61cc9-f336-4b89-ed25-bf5ec3f9e222.png)
このままでは少し見づらいので、フィルター機能を用いて地域を「関東」に限定し、折れ線グラフに変更してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/83399cfc-ebfc-84b9-2c9d-8411fb42a60e.png)
日本の仏教信者数は1990年と1997年を境に大きく増加しているようです。
こちらをタイルとして保存し、このダッシュボードの説明テキストのタイルも追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/84f94962-89c5-4a5e-76cc-c980f858ade4.png)

他の宗教の信者数のグラフも追加するとこのようなタイルができました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/537f48bb-e04e-4937-f455-446fe6869f46.png)

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

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

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