【发布时间】:2014-04-04 22:40:10
【问题描述】:
我在 BigQuery 中有一个包含数百万行的表,我想将 adx_catg_id 列拆分为多个新列。请注意,adx_catg_id 列包含以空格分隔的任意数量的单词。
如果字符串包含的单词少于五个,则下面的查询示例可以将 adx_catg_id 拆分为多列。我可以扩展它以支持更多的单词,但我需要自动化它。
SELECT
TS, str0, str2, str4, str6, str7
from
(select REGEXP_EXTRACT(str5, r'^(.*) .*') as str7
from
(select SUBSTR (str5, LENGTH(REGEXP_EXTRACT(str5, r'^(.*) .*')) + 2, LENGTH(str5)) as str6
from
(select REGEXP_EXTRACT(str3, r'^(.*) .*') as str5
from
(select SUBSTR (str3, LENGTH(REGEXP_EXTRACT(str3, r'^(.*) .*')) + 2, LENGTH(str3)) as str4
from
(select REGEXP_EXTRACT(str1, r'^(.*) .*') as str3
from
(select SUBSTR (str1, LENGTH(REGEXP_EXTRACT(str1, r'^(.*) .*')) + 2, LENGTH(str1)) as str2
from
(select REGEXP_EXTRACT(TS, r'^(.*) .*') as str1
from
(select SUBSTR(TS, LENGTH(REGEXP_EXTRACT(TS, r'^(.*) .*')) + 2,LENGTH(TS)) as str0
from
(select adx_catg_id TS from [mydataset.conversions])
))))))))
如何循环上述查询以根据字符串长度在新列中生成所有单词?
【问题讨论】:
标签: sql regex string google-bigquery