В стандартном SQL, который был недавно представил при поддержке BigQuery - вы можете попробовать, как показано ниже
SELECT
body,
(SELECT STRING_AGG(word) FROM words.word) AS words
FROM (
SELECT
body, REGEXP_EXTRACT_ALL(body, r'(\w+)') AS word
FROM (
SELECT 'abc xyz qwerty asd' AS body UNION ALL
SELECT 'zxc dfg 345' AS body
)
) words
Не забудьте снимите флажок Use Legacy SQL
под Show Options
Подробнее подробнее об REGEXP_EXTRACT_ALL и STRING_AGG
Если вы застряли с тем, что теперь в BigQuery называется устаревшую SQL - вы можете попробовать что-то вроде ниже
SELECT
body,
GROUP_CONCAT(SPLIT(body, ' ')) AS words
FROM
(SELECT 'abc xyz qwerty asd' AS body),
(SELECT 'zxc dfg 345' AS body)
Я понимаю, что это не обязательно именно то, что вам нужно - но может помочь
Другой подход с унаследованным SQL-кодом BigQuery, который больше подходит для случаев, когда вам нужно использовать регулярное выражение.
Например - предположим, что вам нужно извлечь только цифры от тела Идея заключается в нюк ничего, кроме цифр от тела с помощью REGEXP_REPLACE, а затем применить описанный выше SPLIT() + GROUP_CONCAT()
SELECT
body,
GROUP_CONCAT(SPLIT(REGEXP_REPLACE(body, r'(\D)+', ':'), ':')) AS words
FROM
(SELECT 'abc 123 xyz 543 qwerty asd' AS body),
(SELECT '987zxc 123 dfg 345' AS body)