Google Analytics x Redash x Slackで簡単BI環境を作成

# 背景

* ランディングページの計測体制を整えるために、Google Analytics（以下GA）のレポーティング結果とSlackを連動させたい。
* 広報の効果測定をしたい
    * このプレスを打った結果、コーポレートサイトへのアクセスにどれだけ貢献したかetc
    * 掲載された媒体を見逃さないように昨日のリファラーを可視化

# ほかの代替案

* GAのレポートをGoogle Data Studio(以下GDS)を利用してSlackに通知設定しようとした
    * 先人が挑戦したもののGDSでリアルタイムで数値が更新されないまま通知することになり困った。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">GASでデータスタジオのレポートをSlackに自動投稿させてみた。<br>カスタムレポートのエクスポートもこれ一つで済むハズ！<br>①データスタジオでレポート作る<br>②SlackのWebhookインストールし、URLをメモ<br>③GAS書く（text＝文面、url＝2のURLを指定）<br>④GASにトリガー設定<br>⑤Slackに通知くるようになる <a href="https://t.co/XpUX9kE9DX">pic.twitter.com/XpUX9kE9DX</a></p>&mdash; Ray@チョコパフェ会やります (@tomray0306) <a href="https://twitter.com/tomray0306/status/1028950704755372032?ref_src=twsrc%5Etfw">August 13, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ダッシュボードのURLを載せてしまえば、Slackの投稿にサムネイル表示されるのか。<br>AppsスクリプトのChart APIでグラフを作り、SlackにアップロードしてPostして、ってやってたけど無駄だった。。。</p>&mdash; SEM Technology (@SEM_Technology) <a href="https://twitter.com/SEM_Technology/status/1029133486911709184?ref_src=twsrc%5Etfw">August 13, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ありがとうございます！<br>ツイートをもとにブログに書き起こした時に、<br>以前ツイートしたthumbnail方法も試したのですがダメだったんですよね、、、<br>今はまたいけるようになったのかな。<a href="https://t.co/gAyB8SHs2e">https://t.co/gAyB8SHs2e</a></p>&mdash; Ray@チョコパフェ会やります (@tomray0306) <a href="https://twitter.com/tomray0306/status/1087828219657478144?ref_src=twsrc%5Etfw">January 22, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

* Google SpreadsheetにGAのデータをエクスポートして、その結果をGoogle Apps ScriptでSlackのWebhook URLに対してPOSTする方法もあったが、毎回コード書くのは面倒くさい。

## 要件

* GAのレポートをリアルタイムでSlackに画像とともにポストできるようにしたい
* さらに定期実行ができるのが望ましい
* Codeless Programmerを目指しているので、コードを書かずになんとかしたい

## 解決方法

* Google Cloud PlatformのGoogle Cloud EngineにRe:dashを立てる
* RedashとSlackのintegrationを利用する
* RedashのURLをSlackのリマインダーを設定して実行する

## Google Cloud PlatformのGoogle Cloud EngineにRe:dashを立てる

* Redash公式でGCPでRedashのインスタンスを利用できるようにする。
    * Setting up a Redash Instance (https://redash.io/help/open-source/setup#gce)

## RedashのDatasourceにGAを追加する

* 起動したRedashにGoogle AnalyticsのJSON Credentialをアップロードして連携する
    * Google Analytics Setup (https://redash.io/help/data-sources/setup/google-analytics)

## Redash上でGAのレポートを作成する

* Query Explorerを利用して、取得したいデータを抽出する
    * re:dashのGoogle Analyticsデータソースを試す (https://qiita.com/hideji2/items/271ae82adf524b6789e0)
* queryを作成して、chartを作成する

## SlackとRedashを連携する

* RedashのintegrationがSlackにあるので、追加する
    * Bring data to your conversations (https://redash.io/slack/)
    * 【Slack×Re:dash】リアルタイムKPI通知をコード0行で実現する (https://data.gunosy.io/entry/slack-redash-kpi-notify)

## Slackでリマインダーを設定する

* 定期実行してレポートを呼び出したいチャンネルに `@redash` を入力し、チャンネルに参加させる
* チャンネル内で`/remind http://${hostname}/queries/12#22`みたいな感じで、redashのchartのURLを指定する 
* 毎朝6時/毎日に設定する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134704/d9d01854-0e4b-6e9c-de95-178d7b70f0d0.png)

* 指定時間になると、毎日KPIのグラフを出してくれるようになる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134704/90ad8c12-3f8b-5952-6639-5167b886b5f6.png)

## 結果

* 冬休みに実装したので、年明けが楽しみだが、広報の可視化など進んだ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134704/f991603c-4e5e-01fc-41e1-3357e76f0f4a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134704/230e24f2-7e31-e509-ee28-a58f19401507.png)


## 最後に

* 一応ここまでコードを書かずに（簡単なSQLは書いたけど）簡単にBI環境を整えることができた。
* GCPは1年間無料枠があるので、簡単に試しやすいのでおすすめ！
* Gunosyさんの記事にめっちゃ助けられました。あれ見ればだいたいどんなことができるようになるのかわかるので、最初にみるのがおすすめです。