Firebase Analytics

Firebase Analyticsの新しいBigQueryスキーマを試す

こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。

さて、GoogleさんからFirebase Analyticsについて突然メールが来まして、超テキトーに意訳するとこんな内容です。

“Firebase AnalyticsのBigQueryエクスポートは、従来Android/iOSのデータを別々のデータセットとして生成してました。
しかし、今後はひとつのデータセットになります。
また、スキーマも新しくなります。
そう、数週間以内にね。”

なかなかサラっとすごい事を言ってきますね。。

とりいそぎ、新しいスキーマがどんなものか見てました。

BigQuery Export schema

今まではuser_dimとevent_dimという2つの列だけ存在して、中身がネストされまくりのキモいスキーマでした。
しかし新しいスキーマはevent単位(≒ヒット単位)のスキーマになる訳です。

で、メールにも書いてありましたが、上記リンク先のスキーマ情報ページの下部に「従来のスキーマ」を新スキーマに変換して新しいテーブルを作成するスクリプトが載ってます。

では早速試します。

1. migration_script.sqlとmigration.shをダウンロードする

https://support.google.com/firebase/answer/9002261 を開き、
“Use this script to migrate existing BigQuery datasets from the old export schema to the new one”をクリックして開くとmigration_script.sqlとmigration.shが掲載されてるので、ダウンロードします。

2. ダウンロードしたmigration.shファイルを修正する

migration.shを修正します。
修正すべき箇所は、日本語のコメントをかいてある下記の6箇所です。

  • PROPERTY_ID
  • BQ_PROJECT_ID
  • FIREBASE_APP_ID
  • BQ_DATASET
  • START_DATE
  • END_DATE
#Firebase設定のAnalytics設定の中に書いてあるプロパティID
PROPERTY_ID="12345"

#BigQueryのプロジェクトID
BQ_PROJECT_ID="my-sample-project"

#Firebases設定の中に書いてあるFirebaseアプリID
FIREBASE_APP_ID="1:9999:android:xxxxxx"

#既存のFirebase旧スキーマのデータセット
BQ_DATASET="my_sample_android"

#変換対象開始日と終了日。YYYYMMDD
START_DATE=20180101
END_DATE=20180515

# Do not modify the script below, unless you know what you are doing :)
startdate=$(date -d"$START_DATE" +%Y%m%d) || exit -1
enddate=$(date -d"$END_DATE" +%Y%m%d) || exit -1

# Iterate through the dates.
DATE="$startdate"
while [ "$DATE" -le "$enddate" ]; do

# BT table constructed from above params.
BQ_TABLE="$BQ_PROJECT_ID.$BQ_DATASET.app_events_$DATE"

echo "Migrating $BQ_TABLE"

cat migration_script.sql | sed -e "s/SCRIPT_GENERATED_TABLE_NAME/$BQ_TABLE/g" | bq query \
--debug_mode \
--allow_large_results \
--noflatten_results \
--use_legacy_sql=False \
--destination_table analytics_$PROPERTY_ID.events_$DATE \
--batch \
--append_table \
--parameter=firebase_app_id::$FIREBASE_APP_ID \
--parameter=date::$DATE \
--project_id=$BQ_PROJECT_ID

temp=$(date -I -d "$DATE + 1 day")
DATE=$(date -d "$temp" +%Y%m%d)

done
exit

# END OF SCRIPT

一番最初のプロパティIDがどこにあるのか、しばらく探したら以下の場所にありました。

[プロジェクト設定] > [データのプライバシー] の中に[アナリティクス設定]のリンクがあります。

このリンク先に[プロパティID]が表示されます。

3. 新スキーマ用のデータセットを作成する

このままスクリプトを実行すると「データセットに対する書き込み権限がない」というエラーが出るので、先にデータセットをBigQuery上に作っておきます。
migration.sh内でcreateする方法もあるんでしょうけど、今回は普通にBigQueryのGUI上でやります。

作成するデータセットの名前は、 analytics_プロパティID です。

プロパティIDが123435なら、analytics_12345です。

4. 変換スクリプトを実行する

さて、修正したmigration.shとmigration_script.sqlを同じディレクトリに置いて実行します。
数ヶ月分のデータを実行すると時間が掛かるため、Compute EngineのLinux上で実行しました。

$ chmod +x migration.sh
$ nohup ./migration.sh &

nohupで実行してしばらく放置します。

さて、徐々に変換後のテーブルが出来上がって来ました。
こんなテーブルになってます。

従来のuser_dimとevent_dimだけの構造と違って、event毎にレコードが生成されているデータになりました。

というわけで、旧スキーマを新スキーマに変換するのはこのとおりGoogleの用意したスクリプトで簡単に可能です。

問題は、旧スキーマに対してクエリを実行している現在運用中のアプリのクエリを見直す必要があります。。
これは各個撃破で対策して行くしかないですね。

今回は、間もなくリリースされるFirebase Analyticsの旧スキーマで記録された既存のレコードを、新スキーマのレコードに変換するための手順についてでした。

弊社ではGoogleCloud認定データエンジニアが、様々なデータのお悩みを解決するための支援業務を行っております。
お問合わせはこちらからどうぞ。

ブログへの記事リクエストはこちらまで

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Google BigQuery

    GCPのBQMLを使ってKaggleコンペに挑んでみた(その1)

    こんにちは。エクスチュアでインターンをさせて頂いている中野智基です。…

  2. Adobe Analytics

    Metabase: カスタムマップで日本地図を追加する

    こんにちは、エクスチュアの權泳東(コン・ヨンドン)です。今回は…

  3. Google BigQuery

    オープンソースBI「Metabase」の使い勝手が丁度良かった

    こんにちは、エクスチュアの權泳東(コン・ヨンドン)です。ほんの…

  4. Adobe Analytics

    Adobe Analytics: データフィードをBigQueryで集計する

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  5. Adobe Analytics

    Adobe Analytics: BigQuery+Lookerでアトリビューション分析

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  6. GA 360 Suite

    Google Analytics 360: BigQueryを使ってアトリビューション分析で91日以…

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

最近の記事

  1. 【GA4/GTM】dataLayerを使ってカスタムイベント…
  2. 【GA4/GTM】dataLayerを活用しよう
  3. ジャーニーマップをデジタルマーケティングの視点で
  4. ChatGPT ProからClaude3 Proへ移行した話…
  5. その分析、やり方あってる?記述統計と推測統計の違い
  1. Application Integration

    Google Cloud iPaaS 「Application Integrat…
  2. ObservePoint

    ObservePointの「Journey」とは?
  3. Mouseflow

    mouseflowを使ったページ解析
  4. IT用語集

    プロキシ(Proxy)って何?
  5. IT用語集

    ユビキタス(Ubiquitous)って何?
PAGE TOP