预先知道RESULT_SCAN的所有可能结果吗?

时间:2019-10-29 20:11:57

标签: snowflake-data-warehouse

(一个雪花用户引起了我的注意……有任何建议吗?)


在合并语句之后,“结果集”可以返回1、2或3列,具体取决于合并的可能性。

例如,

  

MERGE ...匹配然后更新...只会产生“   行已更新”

     

合并...匹配后更新...不匹配后插入   ...将同时产生“更新的行数”和“行数”   插入”

     

MERGE ...匹配时...然后DELETE也将显示“行数   删除”

这意味着RESULT_SCAN可以根据合并功能返回不同的列。

是否有任何原因导致MERGE不能返回所有三列?毕竟,即使简单的“ UPDATE MyTable SET MyColumn = 5”也将返回“已更新的行数”和“已更新的多连接行数”,即使该语句的功能永远不会产生后者。

此外,Snowflake文档中的任何地方都有一个列表,该列表显示任何给定操作的结果集中所有可能的列吗?我知道我可以使用“ DESCRIBE RESULT(QueryID)”来获取列名列表,但这是我希望避免的工作。

我们收到此论坛对原始问题的答复:

  

使用result_scan方法时,是否使用特定的   ID?如果您希望显示所有三列,则可以   想考虑使用

     

desc result last_query_id();

     

select * from table(result_scan(last_query_id()));

     

参考:https://docs.snowflake.net/manuals/sql-reference/functions/result_scan.html

     

...显示任何给定结果集中所有可能的列   操作?

     

您在用户界面中,您将可以在   对象浏览器:   https://docs.snowflake.net/manuals/user-guide/snowflake-manager.html#worksheet-page

但是:

如果MERGE没有使用INSERT的路径,则结果集/ RESULT_SCAN不会返回“插入的行数”列。对我来说,这是个问题。对于UPDATE或DELETE的路径也是如此。

我知道如何获取表的所有列。我的问题是如何通过RESULT_SCAN获取给定查询的所有列。由于它是动态的,并且取决于查询ID,因此您能否列出INSERT语句,MERGE语句,DESCRIBE语句等所有可能的列?

0 个答案:

没有答案