Google BigQuery - 解析来自 Bigquery table 列的字符串数据
Google BigQuery - Parsing string data from a Bigquery table column
我在 Bigquery 的数据集中有一个 table A。此 table 有多个列,其中一列名为 hits_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 有分数,有些没有。我有多个记录,在 table.
的 hits_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
您可以在 BigQuery 中编写自己的 JavaScript 函数来获得您现在想要的:http://googledevelopers.blogspot.com/2015/08/breaking-sql-barrier-google-bigquery.html
我在 Bigquery 的数据集中有一个 table A。此 table 有多个列,其中一列名为 hits_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 有分数,有些没有。我有多个记录,在 table.
的 hits_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
您可以在 BigQuery 中编写自己的 JavaScript 函数来获得您现在想要的:http://googledevelopers.blogspot.com/2015/08/breaking-sql-barrier-google-bigquery.html