HIVE 模拟事务管理代码示例

1-已生成中间表,但未覆盖DWD   2-已覆盖DWD

--没有生成中间表时,不会走DWD覆盖环节

--生成中间表前,判断控制表状态是否为1,如果不是1,置为0,否则保持为1; 生成中间表后,生成控制表状态为1,覆盖完DWD后,生成控制表状态为2

--控制表初始化值必输为0

1、控制表生成SQL例子

insert overwrite 控制表

select 1 as 状态 from 控制表 where 状态 = '1'

union all

select 0 from 控制表 where not exists (select 1 from 控制表 where 状态 = '1')

2、中间表、DWD覆盖环节例子,只增加控制表的判断逻辑,旧的影响分区判断条件与此无关。

with 控制表 as (

select 1 as 状态 from dual),

DWD表 as

( select 1 as 分区, '旧数据' 数据 from dual

union all

select 2 as 分区, '旧数据' 数据 from dual

),

prosess表 as (select 1 as 分区, '新数据' 数据 from dual

union all

select 3 as 分区, '新数据' 数据 from dual

),

原prosess表生成逻辑 as (select 1 as 分区, 'prosess新数据' 数据 from dual

union all

select 3 as 分区, 'prosess新数据' 数据 from dual

)

--insert overwrite prosess表

select * from prosess表 where exists (select 1 from 控制表 where 状态 = '1')

union all

select * from 原prosess表生成逻辑 where NOT exists (select 1 from 控制表 where 状态 = '1')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Distantfbc

你的鼓励是我最大的动力,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值