Teradata table 分区从 select 覆盖

Teradata table partition overwrite from select

我有一个带分区 NUPI 的 table。

CREATE MULTISET TABLE mydb.orders_fact

(
order_date                    DATE FORMAT 'yyyy-mm-dd' NOT NULL, 
order_id                      INTEGER NOT NULL,
...
)
PRIMARY INDEX NUPI_orders_fact ( order_id, ... )

PARTITION BY 
(
RANGE_N
   (
   order_date BETWEEN DATE '2016-01-01' AND DATE '2019-12-31' EACH INTERVAL '1' MONTH ,
   DATE '2020-01-01' AND '2025-12-31' EACH INTERVAL '1' DAY ,
   NO RANGE
   ) 
);

而且我想实现与 Apache Hive 中相同的功能(插入覆盖 TABLE 分区)。 是否可以在 Teradata 中执行相同的操作?

INSERT OVERWRITE TABLE mydb.orders_fact partition (order_date)
SELECT order_id, ...
       order_date
  FROM some_other_table;

如果不能完全一样,请指教在Teradata中重新加载分区的常见场景是什么?

我想要 运行 每日作业,它将用新数据(今天和前一天)重新加载最后两个每日分区,因此一个分区总是被完全覆盖,一个是新的。我也希望 ho 有可能进行重述 - 回载以前的日期。我不想合并分区中的数据。只覆盖整个分区

我应该执行 DROP/DELETE + INSERT 来做同样的事情还是什么?请提出解决方案。

Teradata 中没有 DROP PARTITION。数据按主索引分布,删除效率高:

重新加载分区之前:

delete from mydb.orders_fact where order_date between start_date and end_date

并再次加载它们:

insert into mydb.orders_fact 
select * from some_other_table;