首页 > 解决方案 > 在 ETL 脚本中使用 DDL 语句是否正确?

问题描述

我正在重新设计以前基于 Teradata 的 DWH 解决方案,其中有许多 BTEQ 脚本对从源数据库加载的镜像表执行转换。新的解决方案将基于 Snowflake,并且正在准备作为转换工具集的 SQL (Snowflake) 脚本。

这是在 ETL 脚本中使用的正确方法 DDL 语句创建例如临时表,而不是脚本的结尾被删除?

在我看来,应该在运行此脚本之前创建这样的表,而不是在脚本中即时创建它。一个论点选择雪花上的 DDL 语句提交事务,这就是为什么我想避免在转换脚本中使用 DDL 语句。请帮助我找出在 ETL 过程中使用 DDL 语句的利弊,并支持我说我是对的或说服我错了。

标签: etldata-warehouseddlsnowflake-cloud-data-platform

解决方案


如果您希望事务覆盖 ELT 转换步骤的所有 SELECT/INSERT/MERGE 步骤,则无需创建/删除任何表,因为这些表将提交您的打开事务。

我们通过在我们的 ELT 流程的事务部分之前创建/截断每个任务/部署的预先存在的工作表来解决这个问题。而且我们的工具不允许同时运行一个任务。

因此我们加载到一个登陆表,我们转换成临时表,然后我们多表合并到最终表。只有最后一步需要在交易中。


推荐阅读