是否有人能够使用该功能之前,我已经尝试了几乎每一个组合,以看看它是否有效。
这是我试图与内联
使用的Struct数组[{"position":1,"price":124.0,"card_pos":"External","clicked":0},
{"position":2,"price":94.78,"card_pos":"Cbox","clicked":0},
{"position":3,"price":94.77,"card_pos":"External","clicked":0}]
select iq.*, iq.card.position as position,
iq.card.price as price,iq.card.card_pos as card_pos,
iq.card.clicked as clicked
from
(
select *
from
hsim.im_metasearch
LATERAL VIEW explode(cards) card as card
) iq
我不能使内联函数工作,这有点烦人。Hive Wiki上的文档对如何正确使用此功能非常模糊。
我们有Hive 0.10(CDH4.6),内联函数绝对是我们发行版的一部分。
如果有人作为如何使用它的具体例子请让我知道
我已经尝试了几种不同的语法
select *
from
hsim.im_metasearch
Lateral view inline(cards) as(position,price,card_pos,clicked)
select *
from
hsim.im_metasearch
Lateral view inline(cards) card as (position,price,card_pos,clicked)
我也试着把它放在选择没有成功谢谢你
下面是我如何(成功地)使用inline
的一个例子。假设我们有一个像
id | num
---------------
1 2.0
1 4.0
2 5.0
1 7.0
1 8.0
2 8.0
1 3.0
1 5.0
1 6.0
3 7.0
如果执行查询
select histogram_numeric(num, 3)
from table
你会得到一个直方图,分成3个箱子,表示为一个结构体数组。
[{'x':2.5, 'y:2.0'}, {'x':5.0, 'y':4.0}, {'x':7.5, 'y':4.0}]
大多数人希望以某种表格形式查看它,因此使用inline
函数。所以我们可以写
select inline(histogram_numeric(num, 3))
from table
这给
x | y
-------------
2.5 2.0
5.0 4.0
7.5 4.0
这对我有用
select *
from table1 t
lateral view inline(array_of_structs) a
;
查询:
select * from ( select ARRAY(named_struct('a1', 1, 'a2', 2)) as kk from dim_one_row ) x lateral view inline(kk) t as ff, ff2;
结果:[{"a1":1,"a2":2}] 1 2