我有两个蜂巢表T1和T2。 T1是按列date1,hour1分区的外部表。它还有另一个名为date2的日期列(与date1不同)。
T2是由date2分区的配置单元表。
我会每小时递增一次数据,我可以使用动态分区轻松地将其添加到表T1中。
我想要一种有效的方法从T1中选择数据并逐步将数据加载到T2中,并按日期2进行分区。
这就是我现在正在做的事情
insert into T2
select
*,
date2
from
(
select * from T1 where date1="a constant date" and hour1 = "a constant hour"
) T1SubQuery
left outer join
T2
on
T1SubQuery.idColumn = T2.idColumn
where
T2.idColumn is null
我正在做一个左外连接和“T1.idColumn为空”,以模拟“不在哪里”。我这样做是为了避免重复数据,查询可以运行多次,我希望它是幂等的。
问题
此查询中将使用T2中的哪些分区?如何最小化使用的分区数?
执行此类幂等增量数据加载的最有效方法是什么?
答案 0 :(得分:0)
所有分区都应该在T2上受到影响,因为你的where条件不会过滤掉
更典型的方法是在T2中创建与T1中的新分区对应的新分区,并将数据从t1插入到这些分区上的t2中。您使用的策略不是为了速度而构建的,而是为了从T1中找到丢失数据并插入它们的专门目的。这可能不是进行更大容量/批量插入的最佳方式。