2015-08-13 5 views
2

У меня есть таблица A в наборе данных в Bigquery. Эта таблица имеет несколько столбцов и одна из колонок называется hits_eventInfo_eventLabel имеет значения, как показано ниже:Google BigQuery - анализ строковых данных из столбца таблицы Bigquery

{ID: AEEMEO, Score: 8,990000; ID: SEAMCV, Score: 8,990000; ID: HBLION; Property ID: DNSEAWH, Оценка: 0.391670; ID: CP1853; ID: HI2367; ID: H25600;}

Если вы напишете эту строку в табличной форме, содержит следующие данные:

**ID  | Score** 
AEEMEO | 8.990000 
SEAMCV | 8.990000 
HBLION | - 
DNSEAWH | 0.391670 
CP1853 | - 
HI2367 | - 
H25600 | - 

Некоторые идентификаторы имеют оценки, некоторые нет. У меня есть несколько записей с похожими строками, заполненными в столбце hit_eventInfo_eventLabel внутри таблицы.

Мой вопрос заключается в том, как я могу правильно разобрать эту строку WITHIN BIGQUERY, чтобы получить список идентификаторов свойств и их соответствующих рекомендаций (если они есть)? Я хотел бы иметь порядок, в котором идентификаторы появятся в строке, которая будет сохранена после разбора этих данных.

Понравилась бы какая-либо информация по этому вопросу. Заранее спасибо!

ответ

3

Я хотел бы использовать комбинацию SPLIT разделиться на разные строки и REGEXP_EXTRACT разделиться на разные колонки, т.е.

select 
    regexp_extract(x, r'ID:([^,]*)') as id, 
    regexp_extract(x, r'Score:([\d\.]*)') score from (
select split(x, ';') x from (
select 'ID:AEEMEO,Score:8.990000;ID:SEAMCV,Score:8.990000;ID:HBLION;Property ID:DNSEAWH,Score:0.391670;ID:CP1853;ID:HI2367;ID:H25600;' as x)) 

Он производит следующий результат:

Row id  score  
1 AEEMEO 8.990000  
2 SEAMCV 8.990000  
3 HBLION null  
4 DNSEAWH 0.391670  
5 CP1853 null  
6 HI2367 null  
7 H25600 null 
+0

Спасибо! Это сработало. Есть ли способ, которым я могу отслеживать положение идентификаторов в строке? То есть, я бы хотел в итоге добавить три столбца: id, score, position_in_string. Из приведенной выше строки строки это будет: AEEMEO, 8.99000, 1; SEAMCV, 8.990000, 2 и т. Д. – activelearner

+0

Вы можете написать свои собственные функции JavaScript в BigQuery, чтобы получить именно то, что вы хотите сейчас: http://googledevelopers.blogspot.com/2015/08/breaking-sql-barrier-google-bigquery.html –