我在 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/