我正在使用 Snowflake 数据库即服务来存储和处理我们的数据。由于处理大量数据,我想运行一个查询,获取查询ID并让它异步执行查询。系统的另一部分将通过使用该查询 ID 检查查询历史表来监视查询的状态。
我正在使用 Snowflake 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
Run Code Online (Sandbox Code Playgroud)
这段代码似乎有效,即我正在获取查询 ID,但有一个问题 - SQL 查询失败,并出现错误“SQL 执行已取消”。在雪花中。如果我删除该_no_results=True参数,查询运行良好,但随后我必须等待它完成,这不是所需的行为。
有什么想法导致“SQL 执行取消”失败吗?
更多信息:我不想等待的原因是我正在 AWS Lambda 上运行代码,而 Lambda 的最长运行时间为 5 分钟。