雪花有条件地从表中删除

时间:2020-11-06 07:30:40

标签: sql snowflake-cloud-data-platform

在Snowflake中实现以下Teradata逻辑的最佳方法是什么?

检查进入的阶段表是否具有行。如果是这样,请截断目标表, 如果没有,请跳过(并转到“ endofcode”,该示例中没有标签,我们只需要跳过)

SELECT * FROM ${STAGE}.STAGE_TABLE SAMPLE 1;
.IF ACTIVITYCOUNT = 0 THEN .GOTO endofcode
BEGIN TRANSACTION;

DELETE FROM ${DWH}.TARGET_TABLE ALL;

谢谢。

编辑: 这项工作/是最好的方法吗? :

DELETE FROM targettab WHERE EXISTS (SELECT 1 FROM stagetab sample (1 rows))

1 个答案:

答案 0 :(得分:1)

关于此查询: DELETE FROM targettab WHERE EXISTS (SELECT 1 FROM stagetab) 是的,它将起作用。

但是:您说过要截断而不是删除。在Snowflake中,截断和删除整个表之间存在差异:https://docs.snowflake.com/en/sql-reference/sql/delete.html

如果要使用TRUNCATE,则可以考虑使用Snowflake存储过程。