使用数据验证合并 Hive 中的两个表
Merging two tables in Hive with data validation
我有两个 table 有一些相似的列。说,
Table X
有 id,first_name last_name
.
Table Y
有 id,email_id, first_name
。
但是这两个 table 都不完美,所以我需要从另一个 table 中的数据中填充两个 table 中的空值(使用一些键(id in the eg)) 并将其推送到另一个 table.
我怎样才能有效地做到这一点?
只需连接表,然后编写 case
语句。
示例 0:
select x.id as id
, case when x.first_name is null then y.first_name else x.first_name end as first_name
, x.last_name as last_name
, y.email_id as email_id
from db.tableX x
join db.tableY y
on y.id = x.id
或者您可以做几乎相同的事情,但使用 if
语句。
示例 1:
select x.id as id
, if(x.first_name is null, y.first_name, x.first_name) as first_name
, x.last_name as last_name
, y.email_id as email_id
from db.tableX x
join db.tableY y
on y.id = x.id
我有两个 table 有一些相似的列。说,
Table X
有 id,first_name last_name
.
Table Y
有 id,email_id, first_name
。
但是这两个 table 都不完美,所以我需要从另一个 table 中的数据中填充两个 table 中的空值(使用一些键(id in the eg)) 并将其推送到另一个 table.
我怎样才能有效地做到这一点?
只需连接表,然后编写 case
语句。
示例 0:
select x.id as id
, case when x.first_name is null then y.first_name else x.first_name end as first_name
, x.last_name as last_name
, y.email_id as email_id
from db.tableX x
join db.tableY y
on y.id = x.id
或者您可以做几乎相同的事情,但使用 if
语句。
示例 1:
select x.id as id
, if(x.first_name is null, y.first_name, x.first_name) as first_name
, x.last_name as last_name
, y.email_id as email_id
from db.tableX x
join db.tableY y
on y.id = x.id