Firebase FirestoreのデータをBigQueryにエクスポートする
FirestoreのデータをBigQueryにデータを取り込む手段について。
まだサービスローンチ前ならFirebase Extension
直接試せてないがFirebase Extensionがあるのでこれを使いたい。
リアルタイムでデータが同期される(と思う)。 すでにローンチ済みのサービスの場合は、既存のデータを移す必要がある。
サービスローンチ済みならgcloud
gcloudコマンド(+ 一緒についてくるbqコマンド)でやる。
サービスアカウントの作成
ここを参考にロールを設定する。
コマンド例
実行毎にBigQueryが最新のFirestoreのデータに更新される。
# サービスアカウントのキーファイルをセット gcloud auth activate-service-account --key-file key.json # プロジェクトのセット gcloud config set project my-firebase-project # collection groupごとにFirestore→Storageへデータをエクスポート gcloud firestore export gs://firestore-export-for-bq/2020-06-29T10:17:23.011+09:00 --collection-ids=user,shop,product # collection groupごとにBigQueryのテーブルに入れる bq load --source_format=DATASTORE_BACKUP --replace=true --projection_fields=name firestore.user gs://firestore-export-for-bq/2020-06-29T10:17:23.011+09:00/all_namespaces/kind_user/all_namespaces_kind_user.export_metadata bq load --source_format=DATASTORE_BACKUP --replace=true --projection_fields=name,owners firestore.shop gs://firestore-export-for-bq/2020-06-29T10:17:23.011+09:00/all_namespaces/kind_shop/all_namespaces_kind_shop.export_metadata bq load --source_format=DATASTORE_BACKUP --replace=true --projection_fields=name,price firestore.product gs://firestore-export-for-bq/2020-06-29T10:17:23.011+09:00/all_namespaces/kind_product/all_namespaces_kind_product.export_metadata
projection_fields
オプションがあるおかげで、個人情報など取り込みたくない情報はフィルタ可能。
Docker Hubのgoogle公式イメージを使って定期実行する
gcloudを使うための公式イメージがDocker Hubで配布されているのでこれを使えばよい。
Cloud Runとか使っていけそうな気がする。