在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))
答案 0 :(得分:1)
关于此查询:
DELETE FROM targettab WHERE EXISTS (SELECT 1 FROM stagetab)
是的,它将起作用。
但是:您说过要截断而不是删除。在Snowflake中,截断和删除整个表之间存在差异:https://docs.snowflake.com/en/sql-reference/sql/delete.html
如果要使用TRUNCATE,则可以考虑使用Snowflake存储过程。