【发布时间】:2018-03-16 02:09:45
【问题描述】:
因此,我创建了一个报表,该报表本质上是运行由多个易失性表构建的 DML 语句。我构建它的方式是,我的每个临时表基本上都是从先前的表中派生出来的。例如,在我的第一个表中,我定义了“数据集”,而我的其他临时表定义了我的“排除项”,然后我的最后几个临时表将它们全部组合起来,然后在最终查询中执行它。
我想自动生成此报告以每天提取数据,但我不确定是为其创建宏还是 sp。这两种方法的更大问题是,我如何才能有效地利用每个临时表?我曾考虑将我的所有表格组合成一个 GIANT(1000 多行)DML 语句,但肯定有更好、更简单的选择。
非常感谢任何帮助,谢谢!
【问题讨论】:
-
既然您提到了每日数据拉取,您可能不需要临时表。您也许可以使用临时表。这些是不属于规范化或星型模式的普通数据库表。他们的目的是帮助 ETL 过程的 T 部分。您只需替换临时表的内容,而不是一直创建临时表。
-
另一种选择是使用全局临时表。这些在访问时被实例化,是会话本地的,并在用户 TEMP 空间而不是 SPOOL 中实现。表定义保留在数据字典中,因此您不必将它们嵌入到整体 SQL 中来构建报表。
标签: sql stored-procedures macros teradata temp-tables