2017-02-22 6 views
0

У меня есть таблица, в которой несколько строк имеют одни и те же данные, кроме одного столбца, который имеет уникальные значения во всех повторяющихся строках.Как преобразовать плоскую/реляционную таблицу в таблицу пар ключей/значений в 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 

Я хочу иметь одну строку в таблице для каждого пользователя и лечения exam_id, exam_score в качестве пары ключей/значений или записи в BigQuery. Я рассматривал экзамен как запись, имеющую два подполя: exam.exam_id и exam.score.

Выход будет выглядеть следующим образом:

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() не будет работать в устаревшем формате sql BigQuery. Возможно ли использование устаревшего sql-взлома? – Prabhjot

+2

@Prabhjot. , , Используйте стандартный SQL. –

Смежные вопросы