Snowflake中的异步查询执行:SQL执行被取消



我正在使用Snowflake数据库AS-A-Service来存储和处理我们的数据。由于处理大量数据,我想运行查询,获取查询ID并让查询异步执行。系统的另一部分将通过使用该查询ID检查查询历史记录表来监视查询的状态。

我正在使用雪花python连接器。

这是我到目前为止所拥有的样本:

from __future__ import print_function
import io, os, sys, time, datetime
modules_path = os.path.join(os.path.dirname(__file__), 'modules')
sys.path.append(modules_path)
import snowflake.connector
def async_query(data):
    connection = snowflake.connector.connect(
        user=data['user'],
        password=data['password'],
        account=data['account'],
        region=data['region'],
        database=data['database'],
        warehouse=data['warehouse'],
        schema=data['schema']
    )
    cursor = connection.cursor()
    cursor.execute(data['query'], _no_results=True)
    print(cursor.sfqid)
    return cursor.sfqid

此代码似乎正在工作,即我正在获取查询ID,但是存在一个问题 - SQL查询失败而错误" SQL Execution已取消"。在雪花中。如果删除_no_results=True参数,则查询效果很好,但是我必须等待完成,这不是所需的行为。

有什么想法导致" SQL执行被取消"失败?

更多信息:我不想等待它的原因是,我在AWS Lambda和Lambdas上运行代码的最大运行时间为5分钟。

如果_no_results = true是未指定的,则执行已同步,因此应用程序必须等待查询完成。如果指定,查询将变为异步,因此应用程序将继续运行,但是连接的驱动器将在最后关闭会话,所有活动查询将被取消。看来这是" SQL执行已取消"的原因。

aws lambda将执行时间限制为5分钟,因此,如果查询所需的时间超过限制,则无法正常工作。

btw _no_results = true是用于SNOWSQL的内部参数,其行为可能会在将来发生变化。

相关内容

  • 没有找到相关文章

最新更新