之前有人能够使用该功能,我已经尝试了几乎所有组合,以确定它是否有效。
这是我尝试使用内联
的结构数组[{"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)
我也尝试将其放入选择中但没有成功 谢谢
答案 0 :(得分:3)
以下是我(成功)使用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
希望这有帮助。
答案 1 :(得分:2)
这对我有用
select *
from table1 t
lateral view inline(array_of_structs) a
;
答案 2 :(得分:0)
<强>查询:强>
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