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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta