You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Qlik Data Editor中执行Snowflake存储过程并获取表格结果

Qlik Data Editor调用Snowflake存储过程获取结构化结果的解决方案

核心原因

Snowflake的CALL语句默认返回执行状态消息而非结构化结果集,且Qlik Data Editor默认不会持久化CALL语句返回的隐式结果,因此无法直接通过单次调用拿到表格数据,可通过以下两种方案解决:

方案1:通过RESULT_SCAN函数捕获返回结果

适用于存储过程本身配置了返回结果集的场景:

  • 首先开启会话级结果持久化配置,执行语句:
    SET RESULT_SCAN_PERSISTENCE = 'SESSION';
    
  • 执行存储过程调用:
    CALL "ODS_BI".Dimension('SK0009', 'DEBIT', 1, NULL);
    
  • 调用完成后立即通过RESULT_SCAN读取上一次查询的结果:
    SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));
    
  • 注意:该方案获取的结果仅当前会话可见,默认有效期24小时,会话关闭后自动失效

方案2:通过中间表中转结果

适用于存储过程会将计算结果写入临时表/永久表的场景:

  • 第一步执行CALL语句触发存储过程运行,完成数据写入逻辑
  • 第二步直接执行SELECT语句查询存储过程写入的结果表,获取结构化数据即可,无需捕获CALL语句的返回值

Qlik侧配置注意事项

  • Qlik Data Editor连接Snowflake的配置项中,需要开启允许多条语句执行,否则CALL和后续的SELECT语句会被拆分为独立会话,无法获取到当前会话的RESULT_SCAN结果或临时表数据
  • 若为定期调度场景,建议调整存储过程逻辑将结果写入固定的ODS结果表,Qlik直接同步该表数据即可,稳定性更高

若执行后仍无法获取结果,可先在Snowflake控制台单独调用存储过程后执行RESULT_SCAN验证,确认存储过程本身的返回类型为TABLE类型而非标量/字符串类型。

内容的提问来源于stack exchange,提问作者Sai Kishore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 11:24:00