GoogleAnalytics - Re:dash 集計でさくっと数秒でハピタスのテスト時のメインのOSバージョン、ブラウザをだせるようにした【サンプルコードあり】


こんにちはオズビジョンの卜部です。

Web サービスを運用されているのであれば、KPIなどで、各種指標を調べるために Google Analitycs を使っている企業は多いのではないでしょうか。

今回、ハピタスのヘルプで表示しているハピタスのテスト時のメインのOSバージョン、ブラウザの算出をできるかぎり簡単に出したいという（俺のｗ）要求があり、 Re:dash を使うことで満たせたので、紹介します。

算出をするためのサンプルコードも gist に用意したので、よければ加工するなりして、使ってみてください。

# 要求

- 今まで以下のような手順で、PCのテストブラウザ, iOS, Android のテスト対象のOSを算出するのに、GA から CSV でダウンロードして、スプレッドシートで加工して、算出していた。この算出を Re:dash に算出させる。いつでも誰でも正しい情報が出せるようにする。

wiki にこんなことを書いている。（手作業めんどい)
![スクリーンショット 2020-08-30 13.11.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218682/86bee2a5-8b9d-2a9f-129c-c8bbb3fbdd71.png)

## 要件詳細

### PC テスト環境

1. PC 画面のアクセスに iOS, Andorid が混ざっているが除外する
2. PC サポートブラウザで上位95% 以上となるブラウザをサポート対象とする
3. 過去30日前から昨日分までの期間を対象に結果を出す

### SP OS テスト環境

1. iOS, Andorid はそれぞれ分ける (これら以外の OS のユーザ数は僅かであるため除外)
2. バージョン表記は `10.0.0 (A.B.C)` のようになっているが、 そのうち、 `A. メジャーバージョン`, `B. マイナーバージョン` で丸め込み集計する。 `C. メンテナンスバージョン` までは見ない
3. 過去30日前から昨日分までの期間を対象に結果を出す

# 前提

- Re:dash のバージョン 5 以上
    - データソースに Google Analytics, Python が選べるバージョンである
- Python が軽くさわれる
- 環境と権限
    - A
        - GCP のサービスアカウントを作成できる権限、Google Analitics API を有効にできる権限がある
        - Google Analytics で上記 GCPサービスアカウントをユーザとして追加できる権限がある
        - Re:dash の権限で データソースを作成でき、作成したサービスアカウントの json キーファイルを登録できること
    - B
        - 権限がなくても、上記設定が適用された環境がそろっていること


1. Re:dash 上で [Re:dash](https://redash.io/help/data-sources/querying/google-analytics) のドキュメントに沿って、Google Analitics のデータソースを追加していること
2. Re:dash 上で Python データソースを有効にし、 [re (正規表現モジュール)](https://docs.python.org/3/library/re.html) を少なくとも有効にしておくこと

![スクリーンショット 2020-08-30 13.31.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218682/1d691340-21c0-c958-4f7d-9eb0a0a93497.png)


# 説明しないこと

- Re:dash の環境の構築
- Google Analytics の設定
- データソースの Google Analitics、 Python の設定



# 作った

## PC サポートブラウザ

https://gist.github.com/oz-urabe/e8e7abf5fdd748a8a2394ac6d17f503b
これを、Python のデータソースを選択し、クエリを作成します。

この内、先頭にある json 形式のクエリですが、 ids の `ga:66453283` のまま記載すると動かないです。みなさんの GA の id を記載してください。

```
query = '''
{
    "ids": "ga:66453283",
    "start_date": "30daysAgo",
    "end_date": "yesterday",
    "metrics": "ga:users",
    "dimensions": "ga:operatingSystem,ga:browser",
    "sort": "-ga:users"
}
'''
```

また以下のように記載していますが、ハピタスではデータソース名を `Google Analytics` としているので、このように記載していますが、使われている Re:dash のデータソース名が人によっては `GA` だったりすると思うので、それに合わせてもらえればOKです。

```
data = execute_query('Google Analytics', query)
```

## SP OS バージョンシェア

https://gist.github.com/oz-urabe/795ae3189c4115e14dad038cfa6e3b49
これを、Python のデータソースを選択し、クエリを作成します。

ids のところと、データソース名を環境に合わせて修正していただくのは同じです。
追加で `"filters": "ga:OperatingSystem=~iOS"` とありますが、これは OS 名での絞り込みです。 Android で集計する場合は  `"filters": "ga:OperatingSystem=~Android"` とします。


```
query = '''
{
    "ids": "ga:201135853",
    "start_date": "30daysAgo",
    "end_date": "yesterday",
    "metrics": "ga:users",
    "dimensions": "ga:operatingSystemVersion",
    "sort": "-ga:users",
    "filters": "ga:OperatingSystem=~iOS"
}
'''
```

# 実行結果

これらのクエリを登録し、実行した結果は以下のようなイメージになります。（ダッシュボード化しました）

![スクリーンショット 2020-08-30 13.59.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218682/35bf5722-2be7-2cad-4a27-2b2c10c12109.png)

# 協力者

@terra_yucco さんには GA 用のクエリ作成を手伝っていただきました。ありがとうございました！