Hive 使用配置单元更改数据捕获

Hive 使用配置单元更改数据捕获,hive,cdc,Hive,Cdc,我正在尝试使用hive进行更改数据捕获。我们已经在DataStage中有了一个现有的CDC,但我们现在正在尝试在HIVE中实现。 这是我所做的,如果我做错了,请纠正我。但是我得到了正确的结果…: 以下是源数据: 表名:month1 电子身份证,电子姓名,电子广告 11,约翰,新加坡 22,杰克,墨尔本 33,杰西,悉尼 44,加拿大兰帕德 珀斯波默55号 第二张表:月2 它的列与month1相同。 e_id、e_名称、e_添加 11、约翰、奥迪沙 22,杰克,墨尔本 44,加拿大兰帕德 珀斯波默

我正在尝试使用hive进行更改数据捕获。我们已经在DataStage中有了一个现有的CDC,但我们现在正在尝试在HIVE中实现。 这是我所做的,如果我做错了,请纠正我。但是我得到了正确的结果…:

以下是源数据: 表名:month1 电子身份证,电子姓名,电子广告 11,约翰,新加坡 22,杰克,墨尔本 33,杰西,悉尼 44,加拿大兰帕德 珀斯波默55号

第二张表:月2 它的列与month1相同。 e_id、e_名称、e_添加 11、约翰、奥迪沙 22,杰克,墨尔本 44,加拿大兰帕德 珀斯波默55号 孟买拉胡尔66号

这里的关键字段是e_id,值字段是e_name和e_add

select 
case when cdc_codes ='Updates' Then month2s
case when cdc_codes = 'NoChange' then month1s
case when cdc_codes = 'New' then month2s
case when cdc_codes = 'Deletes' then month1s
else 'Error' end as fin_cols
from (select case when m1.e_id = m2.e_id and concat(m1.e_name,m1.e_add) = concat(m2.e_name,m2.e_add)     then  'NoChange'
when m1.e_id = m2.e_id and  concat(m1.e_name,m1.e_add) <> concat(m2.e_name,m2.e_add) then  'Update'
when m1.e_id is null then 'New'
when m2.e_id is null then 'Deletes'
else 'Error' end as cdc_codes,
concat(m1.e_id,',',m1.e_name,',',m1.e_add) as month1s,
concat(m2.e_id,',',m2.e_name,',',m2.e_add) as month2s
from month1 as m1 full outer join month2 as m2
on m1.e_id = m2.e_id) as b1

这个SQL工作得很好,我得到了预期的结果。请原谅我的列命名约定不好。一旦我得到解决方案的确认,我将重新编写此SQL并发布最终的干净版本。

您有什么问题或错误吗?否则这个问题更适合codereview.stackexchange.comHi Arghtype,谢谢您的回复。我在这里没有得到任何错误,我得到了正确/期望的输出。但我只是想确保代码看起来正常,并且可以付诸实施。我也是stackoverflow.com的新手,所以我不知道有一个codereview部分。