Gav*_*son 3 snowflake-cloud-data-platform
(代表雪花用户提交)
在 Snowflake 上执行查询时,我需要它的查询 ID。所以我使用以下代码片段:
cursor.execute(query, _no_results=True)
query_id = cursor.sfqid
cursor.query_result(query_id)
Run Code Online (Sandbox Code Playgroud)
此代码片段适用于小型运行查询。但是对于执行时间超过 40-45 秒的查询,query_result 函数失败并显示KeyError u'rowtype'.
堆栈跟踪:
File "snowflake/connector/cursor.py", line 631, in query_result
self._init_result_and_meta(data, _use_ijson)
File "snowflake/connector/cursor.py", line 591, in _init_result_and_meta
for column in data[u'rowtype']:
KeyError: u'rowtype'
Run Code Online (Sandbox Code Playgroud)
为什么会出现这个错误?如何解决这个问题呢?
有什么建议吗?谢谢!
Snowflake Python 连接器允许使用 ?cur.execute(sql, _no_results=True)?
这?“火了就忘了”?SQL 执行的风格允许父进程继续而不等待 SQL 命令完成(想想可能会超时的长时间运行的 SQL)。
如果使用它,许多开发人员将编写代码来捕获唯一的 Snowflake 查询 ID(就像您在代码中使用的那样),然后使用该查询 ID 来“稍后查看查询状态”?,在某种循环过程中. 当您回来查看状态时,您可以使用 result_scan() 函数从该 query_id 中获取结果。
https://docs.snowflake.net/manuals/sql-reference/functions/result_scan.html
我希望这有助于...丰富