Как создать BigQuery Table из JSON в Google Cloud Storage, если в некоторых полях есть запрещенные символы?

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

jsonPayload.request.x-search

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

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

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

2 ответа

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

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

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

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

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