Как создать 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 для максимальной гибкости
По крайней мере, это то, что я обычно делаю.
Я вижу несколько вариантов обойти это:
- Создайте облачную функцию, которая будет срабатывать при поступлении новых файлов. Внутри этой функции прочитайте содержимое файла и преобразуйте его. Запишите результаты обратно в новый файл и загрузите его в BigQuery. Я не уверен, насколько это масштабируемо в вашей ситуации. Если ваши файлы довольно большие, это может не сработать.
- Создайте облачную функцию, которая запускается при поступлении новых файлов, а затем вызывает шаблонный конвейер потока данных для приема, преобразования и записи данных в BigQuery. Это масштабируемо, но требует дополнительных затрат (поток данных). Тем не менее, это хороший шаблон для загрузки данных из GCS в BigQuery.