Google AnalyticsのデータをSnowflakeに自動同期し、Lookerで可視化する

## 概要
Google Analyticsを使うことでWebサイトなどのパフォーマンスを調べたり、アクセス解析をして改善点を見つけることができます。しかし、絶えず集められるデータをその都度分析し、最新の状態に保つのにはコストがかかります。そこで今回は、[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=analytics_to_snowfalke)という分析基盤向けデータ統合サービスを使い、Google Analyticsデータの抽出自動化＋DWH(データウェアハウス)への統合＋可視化までやってみようと思います。

今回、データの転送手段として採用した[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=analytics_to_snowfalke)は、Google Analyticsの他にも、様々な広告・CRM・DBなどのデータソースにも対応しています。
[troccoの使い方まとめ（CRM・広告・データベース他）](https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)
![anatroslow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/d57604f4-3687-14f7-0a23-324f0f9f31b6.png)



## ゴール
以下のようなGoogle AnalyticsのデータをSnowflakeに統合し、
![anaスキーマレビュー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/d44fff6a-610c-6a82-1b0f-a5723b513c2a.png)



↓画像のようなグラフをを30分くらいで作り上げます（作成後は自動で最新値に更新することも可能です）
![時間どこの閲覧数.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/94574dda-fd8d-f6b5-9aad-881d34009086.png)




## こんな人におすすめ
・Google Analyticsに備わっている機能以外の分析をしたい
・Google Analyticsでは難しいページごとのミクロな分析を行いたい
・Google AnalyticsのデータをSnowflakeで分析したい



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

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


### 1-1. 転送元・転送先を決定
[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=analytics_to_snowflake)にアクセスして、ダッシュボードから「転送設定を作成」のボタンを押します。
<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 Analytics」を指定し、転送先に「Snowflake」を選択して転送設定作成ボタンを押します。
![anaslow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/c479b96a-4180-e5ca-aefc-b3291317e224.png)


設定画面になるので、必要な情報を入力していきます。

### 1-2. Google Analyticsとの連携設定
あとで見たときに分かるように転送設定の名前とメモを入力します。
![anaslow新規.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/f4827bb5-17cc-c218-b48a-fda240f1e195.png)

次に「転送元Google Analyticsの設定」内の「接続情報を追加」ボタンを押します。
![anasnow接続.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/a13e4ad1-6d9b-d1be-c8e1-0986ae1d8883.png)






別のタブでGoogle Analyticsの接続情報の新規作成画面が開きます。
接続情報を作成するためにJSON Keyが必要になります。

![新規接続.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/e734b474-b274-3369-3f40-49250fcac420.png)



接続確認を行って問題がなければ保存します。
再度転送設定画面に戻り、接続情報の「接続情報を読み込む」ボタンを押すと、先ほど作成した接続情報が選択できるようになります。

![anasnow接続追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/36b04022-9206-c8a2-5549-aff8746f093d.png)




### 1-3. Google Analyticsからのデータ抽出設定
次に、どのようなデータを取得するかを設定していきます。

- ビューID
データを取得するアナリティクスのビューIDを入力します。
ビューIDはGoogle Analyticsの管理ページ→ビュー設定で確認できます。

- タイムスタンプの形式
レポートのタイムスタンプの形式を選択します。
なお、ここで設定した値はディメンションでは設定できません。

- ディメンンション
取得したいディメンションの名前を入力します。
ディメンションは最大8個まで設定できます。
設定できる値については[Google Analytics公式](https://ga-dev-tools.web.app/dimensions-metrics-explorer/)をご参照ください。

- 指標
取得したい指標の名前を入力します。
ディメンションは最大10個まで設定できます。
設定できる値については[Google Analytics公式](https://ga-dev-tools.web.app/dimensions-metrics-explorer/)をご参照ください。

![スクリーンショット 2021-07-29 10.16.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/54ef8eb7-eaed-77a2-4c91-6fcc87be6d5e.png)



### 1-4. 転送先Snowflakeの設定
転送元と同様に設定していきます。Snowflakeの接続情報を作成していきます。
転送先となるSnowflakeの接続先ホスト、ユーザー名、及びパスワードが必要になります。

![snowflake追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/1fa11954-2168-7e2d-879c-042a36d080d9.png)


先ほど作成した接続情報を選択し、転送先とするウェアハウス、データベース名、スキーマ名を設定します。
転送モードに関しては`replace`を選択します。各転送モードの詳細は[こちら](https://docs.trocco.io/s/article/転送先-Snowflake)の「転送モードについて」をご確認ください。

![analytics_test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/0028af9f-598e-b757-f8f6-8cef60bd4025.png)




これで入力は完了です。「保存して自動データ設定・プレビューへ」をクリックし、確認作業に進みましょう。
### 1-5. データのプレビュー
少し待つと、転送元のデータがプレビューされます。ここではGoogle Analyticsから取り込んだデータが表示されています。
![anaスキーマレビュー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/cbc6f57e-5366-ea7c-662c-27cc7e5112a0.png)





転送したいデータが取れているので、設定を完了します。
転送設定の一覧から作成した設定を選び「スケジュール・通知設定」に進みます。

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

![anasnowスケ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/f9f98ea5-2039-8691-a65a-e907008bb6c7.png)



「スケジュールを追加」ボタンを押すと、以下の画像のような入力欄が出てきます。ここで実行スケジュールを設定することで、転送を定期的に実行し自動化することが出来ます。
![anasnowスケ②.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/2ad37693-76b2-0351-5523-4c121703135b.png)




### 1-7. データ転送ジョブの実行
設定は以上です。最後に転送ジョブを実行し、Snowflakeにデータを送ります。
手動で実行する場合はジョブ詳細画面の「実行」ボタンを押します。
![anasnow実行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/f507e1b7-46e9-fd72-609f-97836fa0051e.png)




これで転送は完了です！
##2. Snowflakeの設定
特に設定することありません。データが転送されているので、今すぐに分析・可視化を行うことが出来ます。
データがきちんと送られているかは「データをプレビュー」押すことで確認してみます。
![anaslowプレビュー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/34097ee8-5ee4-8b15-7ce0-b8c53e91e589.png)


## 3. Lookerで可視化
まずはSnowflakeとLookerを接続します。 管理タブを開いて「データベース」の「接続」を開きます。 
![looker接続.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/b0c30932-2897-2e2d-573b-930f57e7d1c5.png)

接続しているデータベース一覧が表示されています。ここで「Add Connection」を選択し、接続設定を行う画面が表示れるので、情報を入力していきます。
![addconnection.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/0fb758d6-073d-48db-47a7-28ba6b6fe234.png)
![anasnowconnecting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/e3156f0c-3d8e-319c-c55c-b5644c22b826.png)

Snowflakeのデータベースに接続できたら、次はデータを可視化するために必要なLookMLプロジェクトを作成します。 開発タブを開いて「LookMLプロジェクトの管理」に移動します。 

![プロジェクトの管理.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/4a6bf16b-e4e2-5b4a-401f-4b7ba6c7f9ab.png)

「New LookML Project」からLookMLプロジェクトを作成します。 
![newlookerml.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/04bb62b5-3bbc-b6b3-4508-96a35ee93f53.png)

![anasnowproject.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/3fabd5a2-2824-f39b-af66-8fce4b73e5f5.png)



「Create Project」を押したら、エディタでmodelとviewを定義します。 後々必要になるので、modelの中ではexploreを設定しておきましょう。 (書き方が分からない場合はLookerの[公式ドキュメント](https://docs.looker.com/ja/data-modeling/getting-started/model-development)を参照してください)
![analticssnow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/bd6c8dc4-19f1-36ad-870e-cee099ff24d8.png)
![test_explore.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/45b48f0f-71ee-ca8f-947d-dadcc0cc4f99.png)


これで下準備が整いました。 トップページに戻って「New」からDashboardを作成します。 
![newdash.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/9bf025e6-72f2-b47d-0614-fd1256d87c20.png)

白紙のダッシュボードが作成されるので「analytics_snow_ダッシュボード」と名前をつけます。
そして「Dashborardの編集」→「タイルの追加」を選択し、先ほどのmodel内で定義したExploreを選択します。

![testexlpore表示.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/835c248c-4cf5-5917-0975-157dfca325b6.png)



ディメンションとメジャーを設定し、Tileに表示したいデータをプロットします。例えば、時間ごとの閲覧回数について分析したいとき、ディメンションに「日付」とメジャーに「閲覧数」を選択します。

![testexlpore可視化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/c623d77a-81d1-6778-bea2-8d2d4e74a54f.png)


グラフのスタイルを整え、ダッシュボードにまとめます。

![時間どこの閲覧数.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/620a2372-b152-10e4-ae5c-8a63a1b7e399.png)




完成しました！


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

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

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