【问题标题】:Getting error when using timestamp index in dask with snowflake在雪花中使用时间戳索引时出错
【发布时间】:2021-08-04 23:23:42
【问题描述】:

我正在尝试从雪花中读取表并使用 merge_asof 执行时间点正确连接。下面是对应的代码:

next_failure = dd.read_sql_table('vm_next_failure', conn_url, index_col='ts')
errors = dd.read_sql_table('vm_errors', conn_url, index_col='ts')

ndf = dd.merge_asof(next_failure, errors, left_index=True, right_index='ts', by="machineid", suffixes=("_l", "_r"), allow_exact_matches=False)

这是我得到的错误:

ProgrammingError: (snowflake.connector.errors.ProgrammingError) 252004: Failed processing pyformat-parameters: 255001: Binding data in type (timestamp) is not supported.
[SQL: SELECT vm_errors.ts, vm_errors.machineid, vm_errors.error1, vm_errors.error2, vm_errors.error3, vm_errors.error4, vm_errors.error5 
FROM vm_errors 
WHERE vm_errors.ts >= %(ts_1)s AND vm_errors.ts <= %(ts_2)s]
[parameters: {'ts_1': Timestamp('2015-01-01 06:00:00'), 'ts_2': Timestamp('2016-01-01 05:00:00')}]
(Background on this error at: http://sqlalche.me/e/13/f405)

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: dask dask-dataframe


    【解决方案1】:

    看来您需要将 Timestamp 替换为 TO_Timestamp。 请在雪花中运行以下查询:

    select TO_Timestamp('2016-01-01 05:00:00')
    

    【讨论】:

    • 所以 TO_TIMESTAMP 在雪花中工作,但是我没有生成查询。该查询由 Dask dataframe.read_sql_table() 生成。我提供的是表名和索引列名(数据库中的时间戳类型)
    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2021-09-22
    相关资源
    最近更新 更多