sql - Google BigQuery - 从 Bigquery 表列解析字符串数据

标签 sql parsing google-bigquery

我在 Bigquery 的数据集中有一个表 A。该表有多列,其中一列名为 hit_eventInfo_eventLabel 的值如下所示:

{ID:AEEMEO,Score:8.990000;ID:SEAMCV,Score:8.990000;ID:HBLION;Property ID:DNSEAWH,Score:0.391670;ID:CP1853;ID:HI2367;ID:H25600;}

如果以表格形式写出此字符串,它包含以下数据:

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

有些 ID 有分数,有些则没有。我在表中的 hit_eventInfo_eventLabel 列下填充了多个具有相似字符串的记录。

我的问题是如何WITHIN BIGQUERY成功解析该字符串,以便获得属性 ID 列表及其各自的推荐分数(如果存在)?我希望在解析此数据后保留 ID 在字符串中出现的顺序。

非常感谢任何有关此的信息。提前致谢!

最佳答案

我会使用 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

关于sql - Google BigQuery - 从 Bigquery 表列解析字符串数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31999915/

相关文章:

sql - BigQuery 无法根据右侧字符获取子字符串

google-bigquery - BigQuery - UNION ALL 的类型不兼容? - 使我抓狂

php - 显示新消息通知

sql - schema.rb 中的 LOWER 索引

sql - 在 INSERT SELECT 语句期间生成增量数字列值

c++ - 将一个字符串解析为多个字符串

sql - 42501 : INSUFFICIENT PRIVILEGE ERROR while querying in Postgresql

java - Android JSON 解析问题

json - Angular:HttpErrorResponse :"Http failure during parsing for..."- 从服务器成功返回的字符串

google-bigquery - 在 BigQuery 中高效加入 IP 范围