Обычно в этом случае вы выполняете следующие действия:
- Загрузка данных в виде одного столбца в таблицу BigQuery
- Разделение одного столбца на столько, сколько вам нужно, с помощью SPLIT (col, '| #@ | ') [OFFSET (N)] pattern
Могут быть разные варианты написания этого текста - например,
#standardSQL
SELECT
e[SAFE_OFFSET(0)] col1,
e[SAFE_OFFSET(1)] col2,
e[SAFE_OFFSET(2)] col3,
e[SAFE_OFFSET(3)] col4
FROM `project.dataset.table`,
UNNEST([STRUCT(SPLIT(col, '|#@|') AS e)])
, который вы можете протестировать, поиграйте с ним выше, используя примерданные из вашего вопроса, как в примере ниже
#standardSQL
WITH `project.dataset.table` AS (
SELECT 'AA|#@|--|#@|Not Available|#@|0|#@|' AS col
)
SELECT
e[SAFE_OFFSET(0)] col1,
e[SAFE_OFFSET(1)] col2,
e[SAFE_OFFSET(2)] col3,
e[SAFE_OFFSET(3)] col4
FROM `project.dataset.table`,
UNNEST([STRUCT(SPLIT(col, '|#@|') AS e)])
с результатом
Row col1 col2 col3 col4
1 AA -- Not Available 0
Надеюсь, что вы можете адаптировать выше к вашему варианту использования