官网链接
爆炸是一个UDTF(表生成函数),将单个输入行转换为多个输出行。一般和侧视结合使用,主要有两种用法:
输入类型
使用方法
描述T
爆炸(ARRAY
将数组分解为多行,返回单列多行,每一行代表数组的一个元素
T, T
爆炸(MAP
将地图分解为多行,返回的行具有两列(键-值),每一行代表输入中的一个键值对
:
蜂巢(默认)的在选择爆炸(阵列(A, B, C)); 好吧 上校 一个 B C 时间:0.402秒,获取:3行(s) 蜂巢(默认)的在选择爆炸(阵列(A, B, C))为col1; 好吧 col1 一个 B C 时间:0.145秒,获取:3行(s) 蜂巢(默认)的在选择特遣部队。*从(选择0)t侧视爆炸(数组(A, B, C))特遣部队; 好吧 tf.col 一个 B C 时间:0.191秒,获取:3行(s) 蜂巢(默认)的在选择特遣部队。*从(选择0)t侧视爆炸(数组(A, B, C)) tf col1; 好吧 tf.col1 一个 B C
蜂巢(默认)的在选择爆炸(地图(A, B, 20岁的“C”, 30)); 好吧 键值 一个10 B 20 C 30 时间:0.153秒,获取:3行(s) 蜂巢(默认)的在选择爆炸(地图(A, B, 20岁的“C”, 30)) (my_key my_value); 好吧 my_key my_value 一个10 B 20 C 30 时间:0.137秒,获取:3行(s) 蜂巢(默认)的在选择特遣部队。*从(选择0)t侧视爆炸(map (A, B, 20岁的“C”, 30))特遣部队; 好吧 特遣部队。关键tf.value 一个10 B 20 C 30 时间:0.128秒,获取:3行(s) 蜂巢(默认)的在选择特遣部队。*从(选择0)t侧视爆炸(map (A, B, 20岁的“C”, 30))作为my_key tf, my_value; 好吧 特遣部队。my_key tf.my_value 一个10 B 20 C 30 时间:0.109秒,获取:3行(s)
官网链接
lateralView:侧视udtf(表达式)tableAlias columnAlias (', ' columnAlias) *
fromClause:从baseTable (lateralView) *
lateralView与用户自定义表生成函数(udtf)(例如爆炸)结合使用,udtf为每个输入行生成零个或多个输出行.lateralview首先将udtf应用于基础表的每一行,然后将结果输出行与输入行连接起来形成具有所提供表别名的虚拟表。
基础表pageads具有两列:pageid(页面名称)和add_list(页面上显示的广告数组)。
蜂巢(测试)比;猫pageads ! 比;; front_page 1、2、3 contact_page 3、4、5所示 在蜂巢(测试);创建表pageads ( 比;pageid字符串, 比;add_list array
从子句可以具有多个lateralview子句。后续的lateralview子句可以引用lateralview左侧表中的任何列。例如以下查询:
SELECT * from exampleTable
侧视爆炸(col1) myTable1 <强> myCol1 强>
侧视爆炸(<强> myCol1 强>)myTable2 myCol2;
注意,lateralview子句按其出现的顺序应用。
蜂巢(测试)比;!猫basetable; 1、2 a, b, c 3、4 d, e, f 在蜂巢(测试);创建表basetable ( 比;col1 array比;col2 array 蜂巢侧面图与爆炸