我正在尝试将 Pandas 中DataFrame
的数据加载到 BigQuery 表中。有DataFrame
一个 dtype 列datetime64[ns]
,当我尝试使用存储 df 时load_table_from_dataframe()
,我得到
google.api_core.exceptions.BadRequest:400 提供的架构与表 [表名] 不匹配。字段 compute_triggered_time 已将类型从 DATETIME 更改为 TIMESTAMP。
该表具有读取的模式
CREATE TABLE `[table name]` (
...
computation_triggered_time DATETIME NOT NULL,
...
)
在 中DataFrame
,computation_triggered_time
是一datetime64[ns]
列。当我从 CSV 读取原件DataFrame
时,我将其从文本转换为日期时间,如下所示:
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 并且如果数据具有纳秒精度则失败。错误类似于
[...] 从时间戳 [ns] 转换为时间戳 [ms] 会丢失数据