FibaseとTableauを連携させる&大きなテーブルでVIZを作る際のViewを使った小技


FirebaseをTableauで可視化するには
- Fiebaseを有料プランでやる必要がある
- 出力はBigQueryになるので、Firebase→BigQueryでローデータを吐き出す
- BigQueryに対してTableauで可視化する!

となります。
FirebaseをBigQueryに出力する方法は、他の記事 におまかせします。

TableauとFirebase(BigQuery)の連携

Tableauを立ち上げ、スタートページから サーバーへ→Google BigQueryを選択して接続します。

BigQueryのブラウザ認証が走るので、対象となるアカウントで認証して、アクセス許可をしてください


こちらのメッセージが出ればOK。ブラウザを閉じて、Tableauへ

対象となるFirebaseのテーブルをドラッグ&ドロップします
※ここではまだエラーにはならない

「今すぐ更新」とかをするとエラーが出ます

error.txt
Unexpected Error
Google BigQuery サービスがクエリをコンパイルできませんでした。
エラー コード: 015CFBE6
Cannot access field key on a value with type ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT64, ...>>> at [38:27]

このようなエラーが出て、閲覧ができません。
これは、Firebaseのカラムの中に、構造体が入っているので、そちらをUNNESTしてフラット化して上げる必要があります。

firebase_unnest.sql
SELECT
  event_date,
  event_timestamp,
  event_name,
  event_param.key AS event_param_key,
  event_param.value.string_value AS event_param_string_value,
  event_param.value.int_value AS event_param_int_value,
  user_id,
  user_pseudo_id
FROM
  `(Dataset).firebase.events`,
  UNNEST(event_params) AS event_param
LIMIT
  1000

もしくは

firebase_unnest2.sql
SELECT
   event_date,
   event_name,
   (SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_location") AS page_location
   FROM 
  `(Dataset).firebase.events`

このどちらかでFlat化するのが良さそう
下のSQLで Where区をいれないと、複数の値があると怒られます
`sql
SELECT value.string_value FROM UNNEST(event_params) AS property

上記の結果を、Viewに保存します。

これでVIZをつくります。

VIEWの中にLIMIT句をいれていますが、データソースが非常に大きいときは、VIEWの中にLIMIT句を入れ、VIZを作り
本番運用の際には、VIEWの中からLIMIT句をはずすとVIZを作るのにストレスがなくていいです!
(自動更新を止めたりする必要がない)