我有一个Pandas数据框,其中包括两列datetime64[ns]
列,其中一列只有一个日期,而另一列有一个时间戳。
>>> df
date ts
0 2020-01-06 2020-01-06 03:12:45
1 2020-01-07 2020-01-07 12:56:52
2 2020-01-08 2020-01-08 15:09:59
>>> df.info()
# Column Dtype
--- --------- ------------
0 date datetime64[ns]
1 ts datetime64[ns]
想法是将该数据帧保存到S3上托管的Parquet文件中:
df.to_parquet('s3:/my-bucket-name/df.parquet', engine='fastparquet', compression='gzip')
...并使用此文件来COPY INTO
包含两列的雪花表:
CREATE TABLE MY_TABLE (
date DATE,
ts TIMESTAMP
)
根据Snowflake的文档,用于COPY
的命令如下:
copy into {schema}.{table}
from s3://my-bucket-name
credentials=(aws_key_id='{aws_key_id}' aws_secret_key='{aws_secret_key}')
match_by_column_name=case_insensitive
file_format=(type=parquet);
在只有timestamp
个字段的数据帧/文件/表中执行上述命令时,一切运行正常。当将它与带有date
字段的数据帧/文件/表一起使用时,就会出现问题。在这种情况下,将显示错误:
sqlalchemy.exc.ProgrammingError: (snowflake.connector.errors.ProgrammingError) 100071 (22000):
Failed to cast variant value "2020-06-16 00:00:00.000" to DATE
有没有办法解决这个问题?