Данные BigQuery не вставляются
Я использую клиентскую библиотеку Python для вставки данных в большую таблицу запросов. Код выглядит следующим образом.
client = bigquery.Client(project_id)
errors = client.insert_rows_json(table=tablename,json_rows=data_to_insert)
assert errors == []
Ошибок нет, но данные также не вставляются.
Примеры строк JSON:
[{'a':'b','c':'d'},{'a':'f','q':'r'},.....}]
В чем проблема? Не исключение также
4 ответа
client.insert_rows_json
метод с использованием StreamingInsert
, Вставка данных в BigQuery с помощью StreamingInsert
будет причиной задержки при предварительном просмотре таблицы на консоли BigQuery.
Данные не появились сразу. Итак, вам нужно запросить их, чтобы подтвердить вставленные данные.
Возможны 2 ситуации:
- ваши данные не соответствуют схеме
- Ваша таблица только что создана, а обновление еще не доступно
Рекомендации:
Ответ @knh190 помог мне, и я сомневаюсь, что комментария было бы достаточно, но для меня это сделало некоторое время между созданием таблицы и вставкой данных.
Получил ответ на свой вопрос. Проблема заключалась в том, что я вставлял еще один столбец, для которого данных не было. Я нашел хак, чтобы узнать, не вставляются ли данные в таблицу bigquery.
- Измените данные на json с разделителями новой строки с ключами в качестве имен столбцов и значениями в качестве значений, которые вы хотите для этого конкретного столбца.
bq --location=US load --source_format=NEWLINE_DELIMITED_JSON dataset.tablename newline_delimited_json_file.json
. Запустите эту команду в своем терминале и посмотрите, не возникнут ли ошибки. Если это вызывает ошибку, вероятно, что-то не так с вашей схемой данных / таблицы.- Измените схему данных / таблицы в соответствии с ошибкой и повторите попытку вставки через python.
Лучше, если API python выдает ошибку / исключение, как на терминале, это было бы полезно.