gpt4 book ai didi

hadoop - 如何将新记录更新到临时表中的主表

转载 作者:行者123 更新时间:2023-12-02 20:27:30 26 4
gpt4 key购买 nike

我是Hive的新手,我有一个主表t1和临时表t2。临时表每天都会通过传入数据上载。传入的数据可以是更新的记录,也可以是新的记录。

table t2(temp):               table t1(main)
id name id name
1 vinni 1 vikki
3 anna 2 amita

我希望主表中有旧记录,临时表中的更新记录和临时表中的新记录。

我的主表应具有如下记录:
id  name
1 vinni
2 amita
3 anna

我尝试通过完全外部联接来完成此操作,但它不是最佳解决方案。那么如何通过使用左外部联接来实现这一点。最后,我不希望我的临时表记录,并且在将其数据加载到主表后可以删除该表。

最佳答案

您可以通过合并两个表来完成此操作,然后为已存在的ID选择更新的记录,例如

with union_table as (
select *, 0 as new_flag from t1
union all
select *, 1 as new_flag from t2
),
stage_table as (
select *, max(new_flag) over (partition by id) as max_flag
from union_table
),
stage_table2 as (
select id, name, new_flag
from stage_table
where new_flag = max_flag
)
select id, name
from stage_table2

窗口 max将帮助您确定是否需要将特定ID替换为更新后的值

关于hadoop - 如何将新记录更新到临时表中的主表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55137509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com