HIVE SQL进阶

1. lateral view explode:将array或map类型的列拆分成多行数据

lateral view:把拆分的单个字段数据与原始表的数据关联上

LATERAL VIEW EXPLODE(col) table_temp AS col_name

table_temp 是因为 LATERAL VIEW UDTF 函数在执行时,会生成一个临时的虚拟表。

同时生成的列也需要列名col_name。

  • lateral view的位置在from后where前;from后面可以带多个lateral view

eg.如何把table1变成table2

table1
name sports
小张,小王 足球,篮球
小李,小丁 游泳,跳舞
table2
name sports
小张 足球
小张 篮球
小王 足球
小王 篮球
小李 游泳
小李 跳舞
小丁 游泳
小丁 跳舞
SELECT name_exploded AS name, sports_exploded AS sports 
FROM table1
LATERAL VIEW EXPLODE(SPLIT(name, ',')) name_table AS name_exploded
LATERAL VIEW EXPLODE(SPLIT(sports, ',')) sports_table AS sports_exploded;
2. ROWS BETWEEN & RANGE BETWEEN 

transdt end_time trasaction_id
15:00 15:30 1
15:10 15:40 2
15:25 15:55 3
15:35 16:05 4
15:40 16:10 5

你可能感兴趣的:(hive,sql,hadoop,数据分析)