DataFrame
Pandas から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]')
ノート:
PyArrow を使用して df をシリアル化し、データの精度がナノ秒の場合は失敗するため、この.values.astype('datetime64[ms]')
部分が必要です。load_table_from_dataframe()
エラーは次のようなものです
[...] タイムスタンプ [ns] からタイムスタンプ [ms] にキャストすると、データが失われます