Lateral View

description

Lateral view 语法可以搭配 Table Function,完成将一行数据扩展成多行(列转行)的需求。

语法:

  1. ...
  2. FROM table_name
  3. lateral_view_ref[ lateral_view_ref ...]
  4. lateral_view_ref:
  5. LATERAL VIEW table_function(...) view_alias as col_name

Lateral view 子句必须跟随在表名或子查询之后。可以包含多个 Lateral view 子句。view_alias 是对应 Lateral View 的名称。col_name 是表函数 table_function 产出的列名。

目前支持的表函数:

  1. explode_split
  2. explode_bitmap
  3. explode_json_array

具体函数说明可参阅对应语法帮助文档。

table 中的数据会和各个 Lateral View 产生的结果集做笛卡尔积后返回上层。

example

这里只给出 Lateral View 的语法示例,具体含义和产出的结果说明,可参阅对应表函数帮助文档。

  1. select k1, e1 from tbl1
  2. lateral view explode_split(v1, ',') tmp1 as e1 where e1 = "abc";
  1. select k1, e1, e2 from tbl2
  2. lateral view explode_split(v1, ',') tmp1 as e1
  3. lateral view explode_bitmap(bitmap1) tmp2 as e2
  4. where e2 > 3;
  1. select k1, e1, e2 from tbl3
  2. lateral view explode_json_array_int("[1,2,3]") tmp1 as e1
  3. lateral view explode_bitmap(bitmap_from_string("4,5,6")) tmp2 as e2;
  1. select k1, e1 from (select k1, bitmap_union(members) as x from tbl1 where k1=10000 group by k1)tmp1
  2. lateral view explode_bitmap(x) tmp2 as e1;

keyword

  1. LATERAL, VIEW