Конфликт схемы Google BigQuery (ошибка Pyarrow) с типом данных Numeri c с использованием load_table_from_dataframe - PullRequest
0 голосов
/ 25 апреля 2020

Я получил следующую ошибку при загрузке числовых данных c (int64 или float64) из Pandas фрейма данных в "Numeri c" Тип данных Google BigQuery:

pyarrow.lib.ArrowInvalid: Получена длина строки 8 (ожидается 16)

Я попытался изменить тип данных поля 'tt' с Pandas датафрейм без результатов:

df_data_f['tt'] = df_data_f['tt'].astype('float64')

и

df_data_f['tt'] = df_data_f['tt'].astype('int64')

Использование схемы:

 job_config.schema = [
                    ...             
                    bigquery.SchemaField('tt', 'NUMERIC')
                    ...]

Чтение этого google-cloud- python отчета о проблемах Я получил:

NUMERI C = pyarrow.decimal128 (38, 9)

Поэтому "Numeri c" Google BigQuery Тип данных использует больше байтов, чем «float64» или «int64», и поэтому pyarrow не может соответствовать типам данных.


У меня есть:

Python 3.6.4

pandas 1.0.3

pyarrow 0.17.0

google-cloud-bigquery 1.24.0

1 Ответ

0 голосов
/ 25 апреля 2020

Я не уверен, что это лучшее решение, но я решил эту проблему, изменив тип данных:

import decimal
...
df_data_f['tt'] = df_data_f['tt'].astype(str).map(decimal.Decimal)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...