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

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

Adobe Cloud Platform Auditor (Powered by ObservePoint)を使ってみた前のページ

Adobe Summit 2018 レポート(2):経験の創造者たち次のページ

ピックアップ記事

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

関連記事

  1. Google BigQuery

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

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

  2. Cloud Dataproc

    BigQueryテーブルをAVRO形式でエクスポートしてHiveで扱う

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

  3. Adobe Analytics

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

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

  4. Adobe Analytics

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

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

  5. GA 360 Suite

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

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

  6. Google BigQuery

    BigQuery BI Engine解説

    こんにちは、エクスチュア渡部です。2019/4/9-4/11に行わ…

カテゴリ
最近の記事
  1. Account Engagementで送るメールをマルチエー…
  2. 協力と裏切りの理論
  3. 【Snowflake Tips】Content-Typeには…
  4. データ連携を自動化!Fivetranの概要・料金とスプレッド…
  5. Adobe WebSDK クロスドメイン計測【第2部】FPI…
  1. Mouseflow

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

    プラットフォーム(Platform)って何?
  3. Adobe Analytics

    Adobe Analyticsを学ぶ
  4. ブログ

    競合調査
  5. IT用語集

    DWH(Data Warehouse)、データマート(Data Mart)って何…
PAGE TOP