Androidアプリのダウンロード数をBigQueryで連携・取得する方法

# はじめに
これまで、Androidアプリのインストール数を確認するときは、Google Play Consoleを開き、
アプリを選択しダウンロード数を**手動**でスプレッドシートに転記させていた。

これはエンジニアとして許せないと思い、この面倒な作業をなくすために、

Google Play から取得できるアプリのインストール数をGBigQueryに毎日自動転送するよう設定した。

今日はそのAndroidアプリ（GooglePlay）をBigQueryに連携させた設定手順をアウトプット。


# GooglePlayからBigQueryへの転送手順

公式ドキュメントはこちら

https://cloud.google.com/bigquery-transfer/docs/play-transfer?hl=ja#before_you_begin

### 1/ 転送手順を始める前に

1. [BigQuery Data Transfer Service](https://cloud.google.com/bigquery-transfer/docs/enable-transfer-service?hl=ja) [を「有効」](https://console.cloud.google.com/apis/library/bigquerydatatransfer.googleapis.com?hl=ja&_ga=2.78878163.677556954.1617612882-564180662.1600065554&project=gera-prd&folder=&organizationId=)にするために必要なすべての操作が完了していることを確認。（BQを普段使っていたら、恐らく有効になっているはず）

2. Google Play データを保存する[データセットを作成](https://cloud.google.com/bigquery/docs/datasets?hl=ja)。（転送する際に作成でもOK）

3. Cloud Storage バケットを[Google Playコンソール](https://play.google.com/console/u/0/developers/8898638663560484732/download-reports/statistics?appId=4976465171377905091)で確認。

4. 以下の権限が付与されているかを確認
    - `BigQuery`：転送を作成するユーザーに、BigQuery で次の権限が付与されていることを確認。
        - `bigquery.transfers.update`（転送を作成する権限）
    - `Google Play`： Google Play で次の権限が付与されていることを確認。
        - [Google Play Console](https://play.google.com/apps/publish/?hl=ja) での**`レポート アクセス権`**

ここまでは問題なくできる、もしくは既に設定されていると思う。

### 2/ GooglePlayからBigQueryへの転送

1. BigQueryを開く。左ナビバーの「転送」をクリック

2. BigQueryで[転送を作成](https://cloud.google.com/bigquery-transfer/docs/play-transfer?hl=ja#setting_up_a_google_play_transfer)

3. Google Play 転送の設定に従って作成。ソースタイプを選ぶところがあるので、「Google Play」 を選択。
    
    ![https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroism0329/20210408/20210408122339.png](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroism0329/20210408/20210408122339.png)
    
4. 設定画面が表示されるので、項目を埋めていく
    - 「**`転送項目先`**」と「スケジュールオプション」は、任意でok。
    - 「**`転送データの宛先`**」は、転送したいデータセットのIDを選択。新しいデータセットに転送したい場合は「新しいデータセットの作成」を選択し作成する
    - 「**`Cloud Storage bucket`**」 は、IDに基づく Google Cloud Storage のバケットパスを入れる。 このIDは、Google Play Console に接続して、「レポートのダウンロード > 統計情報」から対象アプリを選択すると、インストール数とかクラッシュが出てくるので、右にある**`Cloud Storage URIをコピー`**を選択

![Google Playを選択](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroism0329/20210408/20210408123118.png)


### 項目を埋めるにあたっての注意点：

- `Cloud Storage bucket`はGooglePlayコンソールからそのままコピペしたURIでは**エラー**になる。
    - 【正】**`pubsite_prod_rev_【idが入ってる】`**
    - 【そのままコピペしたURI（誤）】**`gs://pubsite_prod_rev_【idが入ってる】/stats/installs/`**

![項目画面](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroism0329/20210408/20210408122601.png)

項目画面

なので、GooglePlayコンソールからそのままコピペしたURIに対して、
**`gs://`**と末尾の**`/stats/installs/`**を省いてペースト。

すべて埋めるとこんな感じ

![記入項目](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroism0329/20210408/20210408123720.png)


これで保存でおけ！！

# 格納されたデータを確認

BigQueyの転送を選択した画面をみると、作成した転送項目名が表示されています。

![データ転送先一覧](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroism0329/20210408/20210408124350.png)


転送項目名を選択すると、
転送の詳細画面に遷移し、転送がスケジュール通りに実行されていることを確認できます。

![詳細画面](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroism0329/20210408/20210408124525.png)

詳細画面

BigQueryのトップ画面に戻り、先ほど選択した**転送データの宛先**を選択。

すると、Installs_app_versionやInstalls_carrierなどたくさんデータが取得できている。

Google Play のレポートには、ダウンロード数だけでなく

:::note info
・アンインストール数
・クラッシュ数
・レビュー数
:::


https://cloud.google.com/bigquery-transfer/docs/play-transformation?hl=ja


などなど色々なデータも含まれてます。

![BigQuery](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroism0329/20210408/20210408125013.png)


# データ取得

これでたとえば**`Installs_overview_MT`**のテーブルで

```sql
// ダウンロード数の把握

select *,
  date ('2021-04-04') as _latest_date,
  date (partitiontime) as _data_date
from `hoge.googleplay_export.p_Installs_overview_MT`
```

をたたくとBigQuery上でダウンロード数の把握ができるようになりました。

# おわりに

Androidアプリのインストール数の収集を、BigQueryに自動収集できるようになりました。

次はAppstore Connect APIを使ってBigQuery上でiOSのダウンロード数を確認できるようにしよう。