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

    Tableau×BigQueryをコスパ良く使う方法

    こんにちは、エクスチュア渡部です。TableauでBigQue…

  2. Adobe Analytics

    Adobe Analytics: DatafeedをGoogle BigQueryにロード(2019…

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

  3. Google Analytics

    Google Analytics 4 + BigQueryでよく使う基本的なSQL例

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

  4. Adobe Analytics

    Adobe AnaltyicsとGoogle Analytics の「生Webビーコン」をBigQu…

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

  5. Google BigQuery

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

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

  6. Adobe Analytics

    BigQuery: テーブルに格納されたURL文字列をKey-ValueのSTRUCT型で抽出する

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

最近の記事

  1. Mouseflowのセッションリプレイのしくみ
  2. LangChainって何?: 次世代AIアプリケーション構築…
  3. 1st Party Cookieと3rd Party Coo…
  4. Amplitudeで何が分かる?
  5. SnowflakeのHybrid Tableのマニュアルを読…
  1. ObservePoint

    ObservePointでサイト内のタグが全部まるっとお見通しだ!
  2. Google Analytics

    Google Analytics 4: イベントパラメータをセッションスコープで…
  3. Amazon Web Services

    System Managerを利用したVPC内Redshiftへの接続
  4. Adobe Analytics

    Adobe Analytics: データフィードをGoogle Compute …
  5. GA 360 Suite

    BigQuery: Google Analytics 360のネストされたデータ…
PAGE TOP