无法将变量值转换为DATE(镶木地板/雪花)

时间:2020-07-16 15:11:22

标签: pandas date datetime parquet snowflake-cloud-data-platform

我有一个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

有没有办法解决这个问题?

0 个答案:

没有答案