假设有一个表dim_user_info,其中包含非重复user_id
及其id_number
。
现在我想对它们进行分类:
select
a.user_id,
(case when user_id in (1,3,5,7) then 'class1'
when id_number in (128,329,349) then 'vip'
end) as category
from dim_user_info a
如果一条用户信息同时满足两个条件,我想获得完整信息,如下表中的user c
:
user_id id_number category
1 111 class1
2 128 vip
3 329 class1
3 329 vip
6 128 vip
7 55 class1
这可以在蜂巢中使用吗?谢谢你的帮助。
答案 0 :(得分:0)
您可以尝试使用UNION
查询:
select
user_id,
'class1' as category
from dim_user_info
where user_id in (1,3,5,7)
union all
select
user_id,
'vip'
from dim_user_info
where id_number in (128,329,349)
我不知道这是否是Hive SQL中性能最高的解决方案,但它是一种让同一记录多次出现的方法,每种可能的匹配类别都会出现一次。
如果您还想包含非匹配用户,可以使用另一个联盟。
答案 1 :(得分:0)
如果并非所有用户都被分类,您可以使用带有
列的分类表USER_ID, 身份证号码, 类
和查询
select
a.user_id, c.category
from dim_user_info a
left outer join classification c
on (a.user_id = c.user_id or a.id_number = c.id_number)
答案 2 :(得分:0)
select ui.usr
,e.col
from dim_user_info ui
lateral view explode(array(
case when user_id in (1,3,5,7) then 'class1' end
,case when id_number in (128,329,349) then 'vip' end
)) e
where e.col is not null