Я сейчас пытаюсь записать Pandas Dataframe (Python 3.x) в Google Big Query. В таблице есть столбец с объектом dtype, который содержит массив строковых значений.
образец pandas таблица Я стремлюсь создать таблицу BQ, которая поддерживает структуру вложенной таблицы, как показано ниже: образец таблицы Big Query со следующей схемой: схема таблицы Big Query
Я использую библиотеку google-cloud-bigquery , поскольку это позволяет df для преобразования в формат Parquet, который согласно документации поддерживает значения вложенного массива:
используемый код:
client = bigquery.Client()
table_id = 'dataset.table'
job_config = bigquery.LoadJobConfig(
schema = [
bigquery.SchemaField('route_id', 'INTEGER'),
bigquery.SchemaField('types', 'STRING', mode='REPEATED')
],
writeDisposition="WRITE_APPEND"
)
job = client.load_table_from_dataframe(
df,
table_id,
job_config=job_config,
)
# Wait for the load job to complete.
job.result()
но, к сожалению, я получаю следующее сообщение об ошибке:
BadRequest: 400 Ошибка при чтении данных, сообщение об ошибке: Предоставленная схема не совместима с файлом 'prod-scotty-76a528b c -407d-4224-8951-c8ff0c71faa1'. Поле 'types' указано как REPEATED в предоставленной схеме, которая не соответствует NULLABLE, как указано в файле.
Что было опробовано до сих пор:
- используется поле RECORD введите
, но это вызвало следующую ошибку: https://github.com/googleapis/python-bigquery/issues/21
вообще не отправляет никакую схему в python (и позволяет Python / BQ самостоятельно ее разбирать)
на удивление это работает для первой итерации (CREATE_IF_NEEDED), создающей таблицу в BQ, которая поддерживает вложенную структуру с автоматически применяемой следующей схемой: автоматически применяемая схема таблицы BQ , но не удается, если вы попытаетесь добавить даже точную таблицу снова, возвращая ту же ошибку, что и в пункте 1.
Любой совет или советы?