Как создать BigQuery Table из JSON в Google Cloud Storage, если в некоторых полях есть запрещенные символы? - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь переместить кучу данных, которые у меня есть, в корзину (файлы json с разделителями новой строки) в BigQuery.BigQuery запрещает определенным символам в именах полей, например, тире - или slashes.К сожалению, наши данные имеют черты во многих именах полей, например

jsonPayload.request.x-search

Я попытался переименовать поле в схеме BigQuery в jsonPayload.request.x_search, надеясь, что загрузчик совершит какое-то волшебство,но нет.

Помимо выполнения задания по переименованию полей в хранилище (действительно нежелательно, особенно потому, что новые файлы приходят ежечасно) , есть ли способ сопоставить поля в файлах JSON с полями всхема БК?

Я использовал консольный интерфейс, но мне все равно, какой интерфейс использовать с BQ.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Лениво, внутри BigQuery:

  • Импорт в формате CSV
    • Один столбец на строку, выберите разделитель, который не встречается внутри файлов
  • Анализ в BigQuery
    • Либо с функциями JQ BQ
    • Или с пользовательскими функциями JavaScript для максимальной гибкости

По крайней мере, этоэто то, что я обычно делаю.

0 голосов
/ 15 сентября 2018

Я вижу несколько вариантов, чтобы обойти это:

  1. Создайте облачную функцию, которая запускается при поступлении новых файлов. Внутри этой функции прочитайте содержимое файла и преобразуйте его. Запишите результаты обратно в новый файл и загрузите его в BigQuery. Я не уверен, насколько это масштабируемо в вашей ситуации. Если ваши файлы довольно большие, это может не сработать.
  2. Создайте облачную функцию, которая запускается при поступлении новых файлов, а затем вызывает шаблонный конвейер потока данных для приема, преобразования и записи данных в BigQuery. Это масштабируемо, но требует дополнительных затрат (поток данных). Тем не менее, это хороший шаблон для загрузки данных из GCS в BigQuery.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...