Есть ли способ использовать пользовательский разделитель полей для загрузки файла с разделителями в BigQuery с помощью Talend? - PullRequest
0 голосов
/ 02 мая 2019

Я хотел бы использовать этот разделитель |@#| вместо запятой

пример записи

AA | # @ | - | # @ | Недоступно | # @| 0 | # @ |

Я ожидаю, что запись в BQ будет такой

AA - Недоступно 0

Любойидеи о том, как я могу это сделать?

1 Ответ

1 голос
/ 02 мая 2019

Обычно в этом случае вы выполняете следующие действия:

  1. Загрузка данных в виде одного столбца в таблицу BigQuery
  2. Разделение одного столбца на столько, сколько вам нужно, с помощью 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       

Надеюсь, что вы можете адаптировать выше к вашему варианту использования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...