2017-02-22 6 views
0

私は、複数の行がすべての繰り返し行に一意の値を持つ1つの列を除いて同じデータを持つテーブルを持っています。BigQueryのフラット/リレーショナルテーブルをキー/値ペアテーブルに変換するにはどうすればよいですか?

例:

userid, article_count, test_count, total_articles,total_tests,exam_id, exam_score 

- 00016320-452b-11e6-9a4a-252aad95e99b,38,1,106,88,e9c196a1-4ae6-11e5-bc68-8620ffdeb79c,1 
- 00016320-452b-11e6-9a4a-252aad95e99b,38,1,106,88,8223ff18-d538-11e5-80ff-b0086ec8f4cd,1 
- 00016320-452b-11e6-9a4a-252aad95e99b,38,1,106,88,be2ac525-3909-11e6-a224-56a308185daf,1 

Iは、BigQueryの内のキー/値のペアまたはレコードとしてexam_scoreをユーザごとにテーブル内の単一の行を有し、exam_id扱いたいです。 私は、exam.exam_idとexam.scoreという2つのサブフィールドを持つレコードとして試験を扱いました。

次のように出力は次のようになります。

userid, article_count, test_count, total_articles,total_tests,exam.exam_id, exam.score 

- 00016320-452b-11e6-9a4a-252aad95e99b,38,1,106,88,e9c196a1-4ae6-11e5-bc68-8620ffdeb79c,1 
                8223ff18-d538-11e5-80ff-b0086ec8f4cd,1 
                be2ac525-3909-11e6-a224-56a308185daf,1  

提供構造にテーブルを変換する方法は?

答えて

3

構造体にarray_agg()を使用するとどうなりますか?

select userid, article_count, test_count, total_articles, total_tests,  
     array_agg(struct(exam_id as 'exam_id', exam_score as 'exam_score')) as exams 
from t 
group by userid, article_count, test_count, total_articles, total_tests 
+0

array_agg()は、従来のBigQueryのSQL形式では機能しません。従来のSQLハックは可能ですか? – Prabhjot

+2

@Prabhjot。 。 。標準SQLを使用します。 –

関連する問題