试试下面的 BigQuery 标准 SQL
#standardSQL
SELECT
SPLIT(StringToParse)[SAFE_OFFSET (0)] AS Word0,
SPLIT(StringToParse)[SAFE_OFFSET (1)] AS Word1,
SPLIT(StringToParse)[SAFE_OFFSET (2)] AS Word2,
SPLIT(StringToParse)[SAFE_OFFSET (3)] AS Word3,
SPLIT(StringToParse)[SAFE_OFFSET (4)] AS Word4,
SPLIT(StringToParse)[SAFE_OFFSET (5)] AS Word5,
SPLIT(StringToParse)[SAFE_OFFSET (6)] AS Word6,
SPLIT(StringToParse)[SAFE_OFFSET (7)] AS Word7,
SPLIT(StringToParse)[SAFE_OFFSET (8)] AS Word8,
SPLIT(StringToParse)[SAFE_OFFSET (9)] AS Word9
FROM
(SELECT event_list AS StringToParse FROM `mytable.2017`)
您可以使用下面的虚拟数据测试/玩上面的内容
#standardSQL
WITH `mytable.2017` AS (
SELECT '139,239,338,323' AS event_list UNION ALL
SELECT '123,456,789,135'
)
SELECT
SPLIT(StringToParse)[SAFE_OFFSET (0)] AS Word0,
SPLIT(StringToParse)[SAFE_OFFSET (1)] AS Word1,
SPLIT(StringToParse)[SAFE_OFFSET (2)] AS Word2,
SPLIT(StringToParse)[SAFE_OFFSET (3)] AS Word3,
SPLIT(StringToParse)[SAFE_OFFSET (4)] AS Word4,
SPLIT(StringToParse)[SAFE_OFFSET (5)] AS Word5,
SPLIT(StringToParse)[SAFE_OFFSET (6)] AS Word6,
SPLIT(StringToParse)[SAFE_OFFSET (7)] AS Word7,
SPLIT(StringToParse)[SAFE_OFFSET (8)] AS Word8,
SPLIT(StringToParse)[SAFE_OFFSET (9)] AS Word9
FROM
(SELECT event_list AS StringToParse FROM `mytable.2017`)
同时,如果由于某种原因您必须在此查询中使用正则表达式 - 请尝试以下操作
#standardSQL
SELECT
REGEXP_EXTRACT_ALL(StringToParse, r'([^,\/]*),\/?')[SAFE_OFFSET(0)] AS Word0,
REGEXP_EXTRACT_ALL(StringToParse, r'([^,\/]*),\/?')[SAFE_OFFSET(1)] AS Word1,
REGEXP_EXTRACT_ALL(StringToParse, r'([^,\/]*),\/?')[SAFE_OFFSET(2)] AS Word2,
REGEXP_EXTRACT_ALL(StringToParse, r'([^,\/]*),\/?')[SAFE_OFFSET(3)] AS Word3,
REGEXP_EXTRACT_ALL(StringToParse, r'([^,\/]*),\/?')[SAFE_OFFSET(4)] AS Word4,
REGEXP_EXTRACT_ALL(StringToParse, r'([^,\/]*),\/?')[SAFE_OFFSET(5)] AS Word5,
REGEXP_EXTRACT_ALL(StringToParse, r'([^,\/]*),\/?')[SAFE_OFFSET(6)] AS Word6,
REGEXP_EXTRACT_ALL(StringToParse, r'([^,\/]*),\/?')[SAFE_OFFSET(7)] AS Word7,
REGEXP_EXTRACT_ALL(StringToParse, r'([^,\/]*),\/?')[SAFE_OFFSET(8)] AS Word8,
REGEXP_EXTRACT_ALL(StringToParse, r'([^,\/]*),\/?')[SAFE_OFFSET(9)] AS Word9
FROM
(SELECT event_list AS StringToParse FROM `mytable.2017`)
当然,在以上所有示例中,您可以通过引入 REGEXP_EXTRACT_ALL 的 SPLIT 的子查询来简化代码,然后只需在外部选择中选择每个数组的元素