Данные 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 ситуации:

  1. ваши данные не соответствуют схеме
  2. Ваша таблица только что создана, а обновление еще не доступно

Рекомендации:

Ответ @knh190 помог мне, и я сомневаюсь, что комментария было бы достаточно, но для меня это сделало некоторое время между созданием таблицы и вставкой данных.

Получил ответ на свой вопрос. Проблема заключалась в том, что я вставлял еще один столбец, для которого данных не было. Я нашел хак, чтобы узнать, не вставляются ли данные в таблицу bigquery.

  1. Измените данные на json с разделителями новой строки с ключами в качестве имен столбцов и значениями в качестве значений, которые вы хотите для этого конкретного столбца.
  2. bq --location=US load --source_format=NEWLINE_DELIMITED_JSON dataset.tablename newline_delimited_json_file.json. Запустите эту команду в своем терминале и посмотрите, не возникнут ли ошибки. Если это вызывает ошибку, вероятно, что-то не так с вашей схемой данных / таблицы.
  3. Измените схему данных / таблицы в соответствии с ошибкой и повторите попытку вставки через python.

Лучше, если API python выдает ошибку / исключение, как на терминале, это было бы полезно.

Другие вопросы по тегам