Cloud FirestoreのデータをRe:dashで見る方法

Posted by SpaceAgent Tech Blog スペテク on Monday, January 28, 2019

はじめに

iOSエンジニアのoukaです。 最近、電気ヒーターがいきなり光り輝いて壊れてしまいました。 猫になってこたつで丸くなりたい今日このごろです。

さて、弊社では毎週、営業開発MTGという営業チームと開発チームの共有MTGを行っています。 そこでは、DBやSalesforceの各データをデータ可視化サービスであるRe:dashを利用してサービスの数値をひと目で見れるようにしています。

img

収益物件.comアプリではCloud Firestoreに一部データがあるので、今回はFirestoreのデータをRe:dashで表示するための方法を書きます。

手順

FirestoreのデータをRedashで見るためには以下のフローが必要です。

Firestore->GoogleCloudStorage(GCS)->BigQuery->Redash

以下の順番で説明していきます。

  • FireStoreのエクスポートを使ってGCSにアップロードする
  • BigQueryでGCSのデータを読み込む
  • RedashとBigQueryのデータを連携させる

事前に必要なこと

  • GCPのプロジェクトに対する課金(Blazeプラン)が有効になっていること
  • プロジェクトの権限が Owner 、もしくは以下の権限を持っていること
    • Cloud Firestore: Cloud Datastore Owner、もしくは Cloud Datastore Import Export
    • Cloud Storage: Storage Admin

FireStoreからGoogleCloudStorageへエクスポートする

FirestoreのデータをGCSにエクスポートする方法は、Cloud Firestore API(REST、RPC)とgcloudコマンドラインツールを利用する方法がありますが、今回はgcloudを利用します。 こちらよりsdkをインストールします。 https://cloud.google.com/sdk/docs/quickstart-macos?hl=ja

インストールしたらログインします。

gcloud auth login

ログインできたら以下のコマンドを叩くことでGCSにエクスポートされます。

gcloud beta firestore export gs://[バケット名]/backups/hoge --collection-ids=hogecollection,fugasubcollection

BigQueryでFirestoreのデータを読み込ませるためには--collection-idsフラグを指定して、特定のコレクションをエクスポートしておく必要があります。加えて、コレクションを指定してもサブコレクションはエクスポートされないので、サブコレクションも指定しておきます。 常に最新のデータを分析するにはこれを定期的に行う必要がありそうですね。

BigQueryでGCSのデータを読み込む

BigQueryのブラウザコンソールで操作します。

データセットを作成

データセット IDを入力して作成する。

テーブルを作成

  • テーブルの作成元: Google Cloud Storage
  • GCS バケットからファイルを選択:all_namespaces_all_kinds.export_metadataファイル
  • ファイル形式 : Cloud Datastore バックアップ
  • テーブル名を入力

クエリエディタでSQLを書いて出力してみる

FROMに [リソース名].[データセット名].[テーブル名]の形式でソースを指定する。

SELECT
  *
FROM
  `[リソース名].[データセット名].[テーブル名]`
LIMIT
  100

クエリ結果に出力されたらOKです。

RedashとBigQueryのデータを連携させる

DataSourceの設定

DataSource->New DataSourceからBigQueryを選択。

img
img
  • Name、ProjectID、JSON Key Fileを入力
  • LoadSchemaにチェック
  • Use Standard SQLにチェック

以上を入力してSaveボタンを押す。

NewQueryからNameで指定したデータソースを選択、先程BigQueryで書いたクエリを入力してExecuteして期待通り出力されたらOK。

おわりに

今回は手動でFirestoreのデータをCloud StorageにエクスポートしてBigQueryで読み込みましたが、Cloud Scheduler、Cloud Pub/Sub、Cloud Functionを駆使することによって自動で定期的にBigQueryに読み込むこともできそうです。(https://qiita.com/kurikei/items/ece7f6a21115494386c9)

よりユーザーにとって有益なサービスを提供できるように、サービスのデータを分析してどんどん改善していきたいです。

参考

https://firebase.google.com/docs/firestore/manage-data/export-import?hl=ja