Snowflake Dashboard磁贴SQL多语句执行限制及运行规则咨询
Snowflake Dashboard 磁贴多语句SQL执行规则说明
你观察到的现象属于Snowflake Dashboard磁贴的既定设计逻辑,不属于功能异常,核心运行规则如下:
测试场景复现
你在磁贴中编写的测试SQL如下:
SET MyVar = ( SELECT TOP 1 TABLE_NAME FROM DEV_CONTROL.INFORMATION_SCHEMA.TABLES WHERE NOT TABLE_NAME = :Subscription ); SELECT $MyVar;
核心执行规则
- 磁贴的SQL执行分为选中片段执行和全量脚本执行两种独立触发模式,两类模式的上下文、结果展示逻辑互不干扰:
- 手动选中部分代码片段触发执行时,磁贴仅运行选中的语句段,最终展示该语句段最后一条语句的返回结果。单独选中
SET语句执行时,SET属于会话变量赋值类语句,本身不返回结构化数据集,因此磁贴仅展示Statement executed successfully.的成功提示。同时这类片段执行属于临时调试操作,执行产生的会话变量、临时表等对象仅在当前这次片段执行的临时会话中生效,执行结束后会话自动回收,不会持久化到磁贴的默认运行上下文。 - 选中全部语句、或不选中任何代码直接触发运行时,属于全量脚本执行模式:磁贴会按编写顺序串行执行所有语句,最终展示整个脚本中最后一条返回结构化数据集的语句结果。这也是磁贴保存后默认加载、定时刷新、对外展示时使用的标准运行逻辑。
- 手动选中部分代码片段触发执行时,磁贴仅运行选中的语句段,最终展示该语句段最后一条语句的返回结果。单独选中
磁贴默认展示的持久化内容,仅对应全量脚本执行模式的输出结果。手动选中片段执行属于调试行为,其运行结果不会覆盖磁贴的默认展示配置,也不会触发全量脚本的自动重跑,不存在逻辑不一致问题。
使用注意事项
- 会话变量、临时表、CTE等对象的生命周期完全绑定单次执行的会话上下文,无法跨次执行保留。如果需要使用变量赋值后查询的逻辑,必须将赋值语句和查询语句放在同一次执行的脚本段中,不能分开单独执行。
- 多语句脚本中如果需要磁贴展示指定结果,需要将返回目标结果集的
SELECT语句放在脚本的最后位置,避免被其他返回结果集的语句覆盖展示内容。
内容的提问来源于stack exchange,提问作者Eric Mamet
相关产品推荐
相关产品推荐

