Hive 配置单元查询以有条件地插入值

Hive 配置单元查询以有条件地插入值,hive,case,hiveql,case-when,Hive,Case,Hiveql,Case When,我有一个表1,其中包含一些被列入黑名单的名字。现在假设我收到一条记录“def”。配置单元查询应检查表1中是否存在“def”。如果不是,则应将name\u状态设置为blacklisted,否则null。名称“def”将在两种情况下插入。我面临的问题是,在配置单元中,我们不能仅在from子句中使用子查询 表1 ----blacklisted_names------ "abc" "xyz" ---------------

我有一个
表1
,其中包含一些被列入黑名单的名字。现在假设我收到一条记录
“def”
。配置单元查询应检查
表1中是否存在
“def”
。如果不是,则应将
name\u状态设置为
blacklisted
,否则
null
。名称
“def”
将在两种情况下插入。我面临的问题是,在配置单元中,我们不能仅在
from
子句中使用子查询

表1

----blacklisted_names------

         "abc"

         "xyz"

---------------------------
表2(在收到“def”之前)

表2(收到
“def”
后)

表2(收到
“xyz”
后)


加入黑名单和用例,为加入的行分配“blaclisted”

insert into table2
select n.name,
       case when b.name is not null then 'blacklisted' end as name_status
 from new_rows n
      left join table1 b --blacklisted
                on n.name=b.name

您如何插入和接收rows@leftjoin从另一个表中,然后使用模板,如我的答案中所示。新行是另一个表
---name--|--name_status-----
         |
"abc"    |   blacklisted
         |
"def"    |    null
----------------------------
---name--|--name_status-----
         |
"abc"    |   blacklisted
         |
"def"    |    null
         |
"xyz"    |   blaclisted
----------------------------
insert into table2
select n.name,
       case when b.name is not null then 'blacklisted' end as name_status
 from new_rows n
      left join table1 b --blacklisted
                on n.name=b.name