Dividir la cadena en varias columnas con bigquery
Tengo una tabla en BigQuery con millones de filas, y quiero dividir la columna adx_catg_id en varias columnas nuevas. Tenga en cuenta que la columna adx_catg_id contiene un número arbitrario de palabras separadas por espacios.
Este ejemplo de consulta a continuación puede dividir el adx_catg_id en varias columnas si la cadena contiene solo menos de cinco palabras. Puedo extenderlo para admitir más cantidad de palabras, pero necesito automatizarlo.
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])
))))))))
¿Cómo puedo repetir la consulta anterior para generar todas las palabras en nuevas columnas dependiendo de la longitud de la cadena?