hive实现树形结构展开

最近遇到了树形结构存储,比如地市,节目目录这种结构。
比如:节目目录展开

drop table aps.tmp_q1;
create table aps.tmp_q1 as 
select
  epg_cate_id alternatekey,
  epg_cata_ttl chinesetitle,
  first_py englishtitle,
  bppc_id bppcid,
  par_id pid,
  epg_cate_id level1_id,
  epg_cata_ttl level1_chinesetitle,
  first_py level1_englishtitle,
  '' level2_id,
  '' level2_chinesetitle,
  '' level2_englishtitle,
  '' level3_id,
  '' level3_chinesetitle,
  '' level3_englishtitle,
  '' level4_id,
  '' level4_chinesetitle,
  '' level4_englishtitle
from test 
where par_id=0
;
drop table aps.tmp_q2;
create table aps.tmp_q2 as
select
  a.epg_cate_id alternatekey,
  a.epg_cata_ttl chinesetitle,
  a.first_py englishtitle,
  a.bppc_id bppcid,
  a.par_id pid,
  b.level1_id level1_id,
  b.level1_chinesetitle level1_chinesetitle,
  b.level1_englishtitle level1_englishtitle,
  a.epg_cate_id level2_id,            
  a.epg_cata_ttl level2_chinesetitle,  
  a.first_py level2_englishtitle,  
  '' level3_id,            
  '' level3_chinesetitle,  
  '' level3_englishtitle,  
  '' level4_id,            
  '' level4_chinesetitle,  
  '' level4_englishtitle   
from test a , aps.tmp_q1 b
where a.par_id=b.level1_id
union all
select
  alternatekey,        
  chinesetitle,        
  englishtitle,        
  bppcid,              
  pid,                 
  level1_id,           
  level1_chinesetitle, 
  level1_englishtitle, 
  level2_id,           
  level2_chinesetitle, 
  level2_englishtitle, 
  level3_id,           
  level3_chinesetitle, 
  level3_englishtitle, 
  level4_id,           
  level4_chinesetitle, 
  level4_englishtitle  
from aps.tmp_q1
;

drop table aps.tmp_q3;
create table aps.tmp_q3 as
select
  a.epg_cate_id alternatekey,
  a.epg_cata_ttl chinesetitle,
  a.first_py englishtitle,
  a.bppc_id bppcid,
  a.par_id pid,
  b.level1_id level1_id,
  b.level1_chinesetitle level1_chinesetitle,
  b.level1_englishtitle level1_englishtitle,
  b.level2_id level2_id,            
  b.level2_chinesetitle level2_chinesetitle,  
  b.level2_englishtitle level2_englishtitle,  
  a.epg_cate_id level3_id,            
  a.epg_cata_ttl level3_chinesetitle,  
  a.first_py level3_englishtitle,  
  '' level4_id,            
  '' level4_chinesetitle,  
  '' level4_englishtitle   
from test a , aps.tmp_q2 b
where a.par_id=b.level2_id
union all
select
  alternatekey,        
  chinesetitle,        
  englishtitle,        
  bppcid,              
  pid,                 
  level1_id,           
  level1_chinesetitle, 
  level1_englishtitle, 
  level2_id,           
  level2_chinesetitle, 
  level2_englishtitle, 
  level3_id,           
  level3_chinesetitle, 
  level3_englishtitle, 
  level4_id,           
  level4_chinesetitle, 
  level4_englishtitle  
from aps.tmp_q2
;
drop table aps.tmp_q4;
create table aps.tmp_q4 as
select
  a.epg_cate_id alternatekey,
  a.epg_cata_ttl chinesetitle,
  a.first_py englishtitle,
  a.bppc_id bppcid,
  a.par_id pid,
  b.level1_id level1_id,
  b.level1_chinesetitle level1_chinesetitle,
  b.level1_englishtitle level1_englishtitle,
  b.level2_id level2_id,            
  b.level2_chinesetitle level2_chinesetitle,  
  b.level2_englishtitle level2_englishtitle,  
  b.level3_id level3_id,            
  b.level3_chinesetitle level3_chinesetitle,  
  b.level3_englishtitle level3_englishtitle,  
  a.epg_cate_id level4_id,            
  a.epg_cata_ttl level4_chinesetitle,  
  a.first_py level4_englishtitle   
from test a , aps.tmp_q3 b
where a.par_id=b.level3_id
union all
select
  alternatekey,        
  chinesetitle,        
  englishtitle,        
  bppcid,              
  pid,                 
  level1_id,           
  level1_chinesetitle, 
  level1_englishtitle, 
  level2_id,           
  level2_chinesetitle, 
  level2_englishtitle, 
  level3_id,           
  level3_chinesetitle, 
  level3_englishtitle, 
  level4_id,           
  level4_chinesetitle, 
  level4_englishtitle  
from aps.tmp_q3
;

insert overwrite table  aps.pptv_epg_catalog_ed 
select 
  alternatekey,        
  chinesetitle,        
  englishtitle,        
  bppcid,              
  pid,                 
  level1_id,           
  level1_chinesetitle, 
  level1_englishtitle, 
  level2_id,           
  level2_chinesetitle, 
  level2_englishtitle, 
  level3_id,           
  level3_chinesetitle, 
  level3_englishtitle, 
  level4_id,           
  level4_chinesetitle, 
  level4_englishtitle 
from aps.tmp_q4
;
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值