【無料でも出来る?🤔】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

https://support.google.com/firebase/answer/6318765?authuser=1&hl=ja

Firebaseダッシュボード側の手順

Firebase と BigQueryをリンクします。

  • 「プロジェクトの概要」 > 「プロジェクトの設定」を開く
  • 「統合」タブ
  • BigQueryの「リンク」

と進み、リンク時の注意書きなどを確認。

エクスポート設定で、連携したいデータを選択します。

さらに

  • リージョンを選択

    • 👉 asia-northeast1 を選択

      (※選択後は変更出来ないので注意)

  • 毎日 or リアルタイムを決定

    • 👉 毎日

      (※リアルタイムは要アップグレード)

  • 広告IDを含めるかどうかを決定

    • 👉 含める

を設定して、連携を実行します。

なお、連携後のBigQuery設定は

  • 「プロジェクトの概要」 > 「プロジェクトの設定」を開く
  • 「統合」タブ
  • BigQueryの「管理」

から確認、変更、解除が出来ます。

また、Google Analyticsからの

  • 「プロパティ」 > 「BigQueryのリンク」

でも情報の確認を行うことが出来ます。

BigQuery(GCPコンソール)側

まずはコンソールへアクセス

Firebase側で指定したプロジェクトと別のプロジェクトが選択されている場合は、プロジェクトを切り替える必要があります。

データの反映について

エクスポートが実行されるタイミング

  • 連携完了後 24 時間以内
  • 当日午後の早い時間帯に前日データが反映

https://support.google.com/analytics/answer/9823238?hl=ja&utm_id=ad#:~:text=注意ください。-,データのエクスポートが開始されるタイミング,-リンク完了後

データの確認

データ反映のタイミングを過ぎると、ナビゲーションパネル(画面左側「エクスプローラ」とある欄)に

  • アプリ名 (プロジェクト)
    • analytics_XXXXXXX(データセット)
      • events_XX(テーブル)

の様な形で表示されている事が確認出来ます。

テーブルをチェック

ナビゲーションパネルからテーブルを選択すると、エディタパネルにタブが開きます。

このタブから

スキーマの表示

レコードのプレビュー

などを確認することが出来ます。

どうやら、無事エクスポートされている様です👍

SQL

コンソール画面右側付近の 「クエリを新規作成」 ボタンをクリックして、エディタタブを開きます。

このエディタにSQLを記述し、実行して行く流れになります。

BigQueryの標準SQLクエリ構文はこちらで確認できます。

https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax?hl=ja

試しに以下を実行してみます。

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に保存したり、ローカルにダウンロードすることが出来ます。