Конфликт схемы при хранении фреймов данных с объектами datetime с использованием load_table_from_dataframe () - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь загрузить данные из Pandas DataFrame s в таблицу BigQuery.У DataFrame есть столбец dtype datetime64[ns], и когда я пытаюсь сохранить df с помощью load_table_from_dataframe(), я получаю

google.api_core.exceptions.BadRequest: 400 Предоставленная схема неТаблица соответствия [имя таблицы].Поле computation_triggered_time изменило тип с DATETIME на TIMESTAMP.

В таблице есть схема, которая читает

CREATE TABLE `[table name]` (
  ...
  computation_triggered_time    DATETIME  NOT NULL,
  ...
)

В DataFrame, computation_triggered_time - это столбец datetime64[ns],Когда я читаю оригинал DataFrame из CSV, я преобразую его из текста в дату и время следующим образом:

df['computation_triggered_time'] = \ 
  df.to_datetime(df['computation_triggered_time']).values.astype('datetime64[ms]')

Примечание:

Часть .values.astype('datetime64[ms]')необходимо, потому что load_table_from_dataframe() использует PyArrow для сериализации df, и это терпит неудачу, если данные имеют точность наносекунды.Ошибка выглядит примерно так:

[...] Приведение из отметки времени [нс] к отметке времени [мс] приведет к потере данных

1 Ответ

0 голосов
/ 16 ноября 2018

Это похоже на проблему с пакетом Google google-cloud-python. Можете ли вы сообщить об ошибке там? https://github.com/googleapis/google-cloud-python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...