为何TS_COMBI_REFRESH任务在不同查询中显示的运行状态不一致?
问题
我拥有一个调用存储过程TS_COMBI_REFRESH()的任务TS_COMBI_REFRESH,通过语句EXECUTE TASK TS_COMBI_REFRESH手动执行该任务后,执行查询:
select query_id, query_text, execution_status from table(information_schema.query_history())
得到的结果中,该任务的execution_status为SUCCESS;但执行查询:
select QUERY_ID, QUERY_TEXT, STATE from table(information_schema.task_history(scheduled_time_range_start=>dateadd('day',-7,current_timestamp()),result_limit => 100,task_name=>'TS_COMBI_REFRESH')) order by scheduled_time;
得到的结果中,对应的call TS_COMBI_REFRESH()的STATE为EXECUTING。请问哪一种状态更准确?
解答
query_history返回的SUCCESS状态更能反映实际执行的结果,原因如下:
query_history追踪的是实际运行的查询/存储过程本身的状态,这里显示SUCCESS,说明你手动触发任务后,核心的存储过程TS_COMBI_REFRESH()已经完整执行并完成了所有业务逻辑。task_history显示EXECUTING大概率是状态同步延迟导致的。Snowflake的任务状态更新有时会滞后于实际查询的执行结果,尤其是手动触发任务的场景,任务实例的状态没能及时同步到task_history视图中。
如果要进一步确认,可以直接检查存储过程执行带来的业务数据变化(比如目标表的数据是否按预期更新),或者执行DESCRIBE TASK TS_COMBI_REFRESH查看任务的当前状态,以此验证最终结果。
内容的提问来源于stack exchange,提问作者Ee Ann Ng
相关产品推荐
相关产品推荐

