Firebaseで収集したログをBigQueryにエクスポートする
概要
スタートアップにおける開発では自前でログ収集や分析の基盤を構築することはコストが大きく難しいため、Firebase Analyticsを利用してログ収集、それをBigQueryにエクスポートして分析している会社は多いかと思います。
公式のドキュメントやウェブ上の記事を参照すれば簡単に設定はできるのですが、データの保持期限を伸ばしたり、リアルタイムなデータを参照できるようにするには多少細かい設定が必要になるため、忘備録としてまとめておきます。
自分もこのエクスポートは何回も設定しているので、今後実施する際のメモとしても残しておくことにしました。
前提
Firebaseは既に導入されており、Googleアナリティクスとの連携が設定されている前提で話を進めます。これから導入する際は公式ドキュメントを参照して導入を進めてください。下記のリンクはWeb向けのドキュメントで、他にもiOSやAndroid向けドキュメントも存在します。
手順1. Firebaseのプランを無料枠のSparkから従量制のBlazeに変更
設定はサイドメニューの一番下にあるアップグレードボタンを押していけばOKです。
エクスポート自体は無料枠のSparkプランでも可能ですが、下記のような制限が存在します。
- データセットの有効期限が60日までになる
- リアルタイムエクスポートが使えない
- ストレージとクエリ量に制限がある
サービス規模が小さければストレージとクエリ量の制限は無視できそうですが、60日間のデータしか参照できないという制限はサービス規模によらず無視できない問題になるかと思います。
またリアルタイムエクスポートが使用できないとBigQueryのエクスポートのタイミングによっては昨日のデータを参照できなくなってしまう可能性があるので、この観点からも有料プランに変更しておきたいです。
下記の記事はリアルタイムエクスポートによって昨日のデータを参照できるようにして問題を解決した事例として参考になります。
手順2. FirebaseとBigQueryをリンクする
このあたりはポチポチ進めていけばいいのでサクサクいきます。
- サイドメニューの上部にある歯車アイコンから「プロジェクトの設定」をクリック
- 「統合」タブをクリック
- BigQueryのカードにある「リンク」ボタンをクリック
-
① Firebase と BigQuery のリンクについて
で「次へ」をクリック
-
② 統合を構成する
で「Google Analytics」のスライダーをONにして、リージョンを選択、エクスポート設定で「毎日」「ストリーミング」「エクスポートに広告IDを含める」にチェックを入れる
- ページ最下部の「BigQueryにリンク」ボタンをクリック
これで設定は完了です。1日もすればこれだけでFirebase上のデータをBigQueryによってSQLで分析できるようになります。自前でログ収集や分析基盤を構築していた頃と比べると、はるかに楽になりましたね。
記事の本題はここまでですが、いくつか設定の落とし穴があるので2点だけ最後に触れておきたいと思います。
② 統合を構成する
においてエクスポート中のアプリが表示されない
落とし穴1. あまり遭遇する機会はないと思うのですが、 ② 統合を構成する
でエクスポート中のアプリが表示されず、「0個中0個」と表示されてしまう場合があります。
自分も過去に1回だけ遭遇したことがあるのですが、その時はGoogleアナリティクスとの連携の設定に不備がありました。Firebase上の「統合」タブでGoogleアナリティクスとの連携が有効になっていること、アプリケーションのコード上でFirebaseの設定に measurementId
フィールドが設定されていることを確認してください。
設定を正しく修正してもエクスポート中のアプリに表示されない場合は、Googleアナリティクスとの連携を一度解除してからの再設定が必要になることもあります。その際は過去のデータは別のGoogleアナリティクスアカウントに保持されたままになってしまうので、それが許容できない場合はサポートに問い合わせるなどの対応が必要になるでしょう。
幸い自分が遭遇したケースではプロジェクトのフェーズが浅かったので再連携のみで済みました。
落とし穴2. 無料枠のFirebaseからBigQueryのエクスポートを設定した後に従量制にアップグレードした場合
業務レベルでBigQueryへのエクスポートを使うなら従量制に切り替えましょうという話をしましたが、無料枠で試した後に従量制に切り替える場合もあると思います。
その場合は既にBigQueryのデータセットとテーブルが有効期限付きで作成されているので、その有効期限を削除する必要があります。これをしないと有効期限が60日のままになっているため、従量制にアップグレードしていたとしても期限が切れたデータが消えてしまいます。
設定はGCPコンソールのBigQueryからGUI上で行うことができます。データセットを選択して右端にある「詳細を編集」を押すとダイアログが表示されます。
ダイアログから「テーブルの有効期限を有効にする」のチェックボックスを外して保存すればOKです。
注意すべきポイントとしては以下の2つです。
- データセットとテーブルそれぞれに有効期限が設定されているので両方の変更が必要
- テーブルは日付ごとにパーティション分割されているのでそれぞれに変更が必要
- 変更するテーブルが多い場合はgcloud CLIを使うとラク
おしまい
BigQueryで良きデータ分析ライフを!
Discussion