私はGoogle BigQueryにリンクしたFirebase Analyticsで分析を集めました。Google BigQueryと異なる列のキー値を照会
私はBigQueryの中に次のデータを持っている(不要な列/行が中断されているが、データセットはhttps://bigquery.cloud.google.com/table/firebase-analytics-sample-data:ios_dataset.app_events_20160607?tab=previewに似ています):
- イベント:
| event_dim.name | event_dim.params.key | event_dim.params.value.string_value | |----------------|----------------------|-------------------------------------| | read_post | post_id | p_100 | | | group_id | g_1 | | | user_id | u_1 | | open_group | post_id | p_200 | | | group_id | g_2 | | | user_id | u_1 | | open_group | post_id | p_300 | | | group_id | g_1 | | | user_id | u_3 |
は、私は、以下のデータを照会したいです名前
- ユーザID
- グループID
私は、次のクエリを試してみました:
SELECT
event_dim.name,
FIRST(IF(event_dim.params.key = "user_id", event_dim.params.value.string_value, NULL)) WITHIN RECORD user_id,
FIRST(IF(event_dim.params.key = "group_id", event_dim.params.value.string_value, NULL)) WITHIN RECORD group_id
FROM
[xxx:xxx_IOS.app_events_20161102]
LIMIT
1000
上記のクエリに問題がWITHIN
修飾子とSELECT
文が結果のリストを返しますので、集約関数FIRST
が間違った結果を与えるということです。 FIRST
関数は、最初の行の場合にのみ正しい結果を返します。 (「表示オプション」の下の「使用レガシーSQLを」オフ)standard SQLを使用して
これは完全に機能しているようです。データはプレビューとは異なる順序で表示されますが、大きな問題ではありません。 このクエリに複数のテーブルを(同じスキーマを使用して)追加することができますか? – Timon
もちろん、[ワイルドカードテーブル](https://cloud.google.com/bigquery/docs/wildcard-tables)に興味があるかもしれませんし、 'FROM MyTable'の代わりに' FROM(SELECT * FROM MyTable) UNION ALL SELECT *からMyOtherTable UNION ALL ...) 'を呼び出します。 [移行ガイド](https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#comma_operator_with_tables)には、「UNION ALL」の例もいくつかあります。 –
ああ、私はワイルドカードテーブルについて読んでいただけです。それは素晴らしい機能です!どうもありがとう! – Timon