从Panda加载时,日期正在转换为雪花中的变体



我正在使用以下代码使用panda将数据从excel文件加载到snowflake

import pandas as pd
import snowflake.connector as snowCtx
from snowflake.connector.pandas_tools import pd_writer,write_pandas
df=pd.read_excel(open(r'SampleSuperstore.xlsx', 'rb'),sheet_name='Orders')
df.columns = df.columns.str.upper()
print(df)
conn = snowCtx.connect(
    user='username',
    password='password',
    account='account',
    database='superstore',
    schema='PUBLIC'
) 
table_name='ORDERS'
success, nchunks, nrows, _ = write_pandas(conn,df,table_name,
                                          chunk_size = 300,
                                          schema = 'PUBLIC')
print(success, nchunks, nrows)

excel中的日期列如下

Order_Date  Ship_Date
08-11-2016  11-11-2016

即使在熊猫数据帧中,它也显示相同的

Order_Date  Ship_Date
08-11-2016  11-11-2016

当我在雪花中查询结果时,我得到的结果如下

ORDER_DATE          SHIP_DATE
1478563200000000    1478822400000000

如果我将雪花中的数据类型更改为最新数据类型,则会出现一个错误,说明变体数据类型错误。

我不确定是否有办法解决从Excel到Snowflake的链中的问题,但这是一个以微秒为单位的Unix纪元,这可以将其转换为

set orderdate = 1478563200000000;
set shipdate  = 1478822400000000;
select   dateadd('us',$orderdate,'1970-01-01')::date ORDERDATE
        ,dateadd('us',$shipdate, '1970-01-01')::date SHIPDATE
;

作为一种变通方法,您可以将日期转换为字符串。Snowflake将隐式地将它们转换为日期:

df['ORDER_DATE'] = df['ORDER_DATE'].astype(str)
df['SHIP_DATE'] = df['SHIP_DATE'].astype(str)
table_name='ORDERS'
success, nchunks, nrows, _ = write_pandas(conn,df,table_name,
                                          chunk_size = 300,
                                          schema = 'PUBLIC')

相关内容

  • 没有找到相关文章

最新更新