【無料でも出来る?🤔】Firebase Analytics ✖ BigQuery連携
これは何?
iOSアプリなどに入れているFirebase AnalyticsのデータをBigQueryにエクスポートし、簡単なSQLを試してみる記事です。
結論的には、BigQueryサンドボックスを利用して無料で試すことが出来ました。
動機
巷で流行っている様なイケてる風の分析をBigQueryでやってみたい。
- Firebase Analytics 👉 BigQuery(さいきょうのクエリ)👉 DataPortalとか
カッコいいグラフ!
誰も予想しなかったインサイト!
…みたいな事がしてみたい。
FirebaseとBigQueryを連携するとできること
BigQueryに統合すると
- 全パラメータとユーザープロパティへのアクセス
- サンプリングされていない元イベントデータへのアクセス
が可能になる様です。
具体的には、👇以下のデータをBigQueryに対して 1日単位でエクスポート 可能。
- Google Analytics
- Firebase Analytics
- A/B Testing
- Dynamic Links
- Crashlytics
- Predictions
- Cloud Messaging
- Performance Monitoring
Firebaseダッシュボード側の手順
Firebase と BigQueryをリンクします。
- 「プロジェクトの概要」 > 「プロジェクトの設定」を開く
- 「統合」タブ
- BigQueryの「リンク」
と進み、リンク時の注意書きなどを確認。
エクスポート設定で、連携したいデータを選択します。
さらに
-
リージョンを選択
-
👉
asia-northeast1
を選択(※選択後は変更出来ないので注意)
-
-
毎日 or リアルタイムを決定
-
👉 毎日
(※リアルタイムは要アップグレード)
-
-
広告IDを含めるかどうかを決定
- 👉 含める
を設定して、連携を実行します。
なお、連携後のBigQuery設定は
- 「プロジェクトの概要」 > 「プロジェクトの設定」を開く
- 「統合」タブ
- BigQueryの「管理」
から確認、変更、解除が出来ます。
また、Google Analyticsからの
- 「プロパティ」 > 「BigQueryのリンク」
でも情報の確認を行うことが出来ます。
BigQuery(GCPコンソール)側
まずはコンソールへアクセス
Firebase側で指定したプロジェクトと別のプロジェクトが選択されている場合は、プロジェクトを切り替える必要があります。
データの反映について
エクスポートが実行されるタイミング
- 連携完了後 24 時間以内
- 当日午後の早い時間帯に前日データが反映
データの確認
データ反映のタイミングを過ぎると、ナビゲーションパネル(画面左側「エクスプローラ」とある欄)に
-
アプリ名 (プロジェクト)
-
analytics_XXXXXXX(データセット)
- events_XX(テーブル)
-
analytics_XXXXXXX(データセット)
の様な形で表示されている事が確認出来ます。
テーブルをチェック
ナビゲーションパネルからテーブルを選択すると、エディタパネルにタブが開きます。
このタブから
スキーマの表示
レコードのプレビュー
などを確認することが出来ます。
どうやら、無事エクスポートされている様です👍
SQL
コンソール画面右側付近の 「クエリを新規作成」 ボタンをクリックして、エディタタブを開きます。
このエディタにSQLを記述し、実行して行く流れになります。
BigQueryの標準SQLクエリ構文はこちらで確認できます。
試しに以下を実行してみます。
SELECT
event_name
FROM
`PROJECT_NAME.analytics_XXXXX.events_XXXXXXXX`
LIMIT
10
実行結果
「▷ 実行」ボタンをクリックして実行すると、エディタの下に結果が表示されます。
無事に実行出来た様なので、別のクエリを実行してみます。
デバイスモデル一覧 を取得
SELECT
device.mobile_model_name AS device_name
FROM
`PROJECT_NAME.analytics_XXXXX.events_XXXXXXXX`
GROUP BY
device.mobile_model_name
LIMIT
100
実行結果
広告識別子(IDFA)のリスト
せっかくなので、Firebaseのダッシュボードからは見ることが出来ない(?)IDFAの一覧も出してみます。
なお、広告識別子(IDFA)は
- device.advertising_id
のフォールドに入っています。
まず有効なIDFAが何件あるか確認。
SELECT
count( distinct device.advertising_id) as adid_total
FROM
`PROJECT_NAME.analytics_XXXXX.events_XXXXXXXX`
where
CHAR_LENGTH(device.advertising_id) > 0
実行結果
DAUが4,000くらいなので、ADIDの取得割合はおおよそ24%。
数字的にも妥当なので、Firebase、BigQuery連携に問題なさそうです。
IDFA一覧を取得
SELECT
device.advertising_id as IDFA
FROM
`PROJECT_NAME.analytics_XXXXX.events_XXXXXXXX`
where
device.advertising_id is not null
and CHAR_LENGTH(device.advertising_id) > 0
group by
device.advertising_id
LIMIT 1000
実行結果
無事取得できました🙌
この結果データはCSVやJSONなどの形式で、直接Google Driveに保存したり、ローカルにダウンロードすることが出来ます。
Discussion