(一个雪花用户引起了我的注意……有任何建议吗?)
在合并语句之后,“结果集”可以返回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语句等所有可能的列?