【问题标题】:how do I create a delta query in Teradata SQL如何在 Teradata SQL 中创建增量查询
【发布时间】:2019-09-25 17:51:36
【问题描述】:

我正在使用 Teradata,我的查询是

SELECT deptno, name, salary
FROM personnel.employee;

上面的表格每天都会自动更新,例如添加/删除新行,更新现有值。没有日期/时间字段。

有没有办法只能获取更改而不是所有记录?还有一种方法可以知道哪些记录是新的,哪些是更新的?很高兴运行多个查询,因为文件大小会很小。 Teradata 是否有内部表来记录更新/删除?我需要特殊权限才能访问此类表吗?谢谢。

【问题讨论】:

  • 我认为他们希望保留员工工资的历史记录。如果他们还没有,我建议他们使用新的时间戳/生效日期/时间将新记录添加到员工表中,并将旧记录留在表中。
  • 不幸的是,我没有那种级别的访问权限来更改表等。我必须每天下载这个大文件。我想知道 teradata 中是否有任何内置的日期功能?
  • 我不知道 Teradata 会通过表中的记录来维护历史记录。我认为它可以存储表格的修改日期,但这可能无济于事。您可以让您的 Teradata DBA/ETL 人员开始存储历史记录,或者您可以通过保存每日查询结果然后将每一天与前一天进行比较来自己创建它。但是您需要输入某种关键字段。 Name 或 Deptno 可能不起作用。

标签: sql teradata teradata-sql-assistant


【解决方案1】:

在给定的场景本身中,您没有机会看到差异。但是一些改进表/情况的想法:

  • 您可以将表格更改为TEMPORAL table。然后 Teradata 将添加带有自动维护的时间戳的不可见列。有了这个,您可以访问这些时间列来获取差异。在您的情况下,它看起来像一个事务时态表。 (这是我更喜欢的)
  • 您可以创建自己的表来保存最新状态,并与此表进行每次连接以获取增量。

【讨论】:

    猜你喜欢
    • 2017-05-20
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    相关资源
    最近更新 更多