Hive 在配置单元中使用内联(数组)

Hive 在配置单元中使用内联(数组),hive,hiveql,Hive,Hiveql,以前是否有人能够使用该功能,我尝试了几乎所有的组合,以查看它是否有效 这是我试图与inline一起使用的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}

以前是否有人能够使用该功能,我尝试了几乎所有的组合,以查看它是否有效

这是我试图与inline一起使用的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}] 
这很有效:

选择iq.*,iq.card.position作为位置, iq.card.price作为价格,iq.card.card_pos作为card_pos, iq.card.clicked为单击 从…起 挑选* 从…起 hsim_元搜索 侧视图将卡分解为卡 智商 我不能让内联函数工作,这有点烦人。 HiveWiki上的文档对于如何正确使用此功能非常模糊

我们有Hive 0.10CDH4.6,内联函数绝对是我们发行版的一部分

如果有人作为具体的例子如何使用它,请让我知道

我尝试了几种不同的语法

挑选* 从…起 hsim_元搜索 在线卡横向视图位置、价格、卡位置,单击 挑选* 从…起 hsim_元搜索 在线卡片的横向视图,如位置、价格、卡片位置,单击 我也试着把它放到select中,但没有成功
谢谢

以下是我如何成功使用内联的一个示例。假设我们有一个数据集,如

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}]
大多数人都希望以某种表格形式查看它,因此使用内联函数。所以我们可以

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
;
查询:

结果:


您是否能够在横向视图语句中使用内联语句。你的帖子很棒,但并不能解决我的问题。我的问题是,你能在x和y前面加上其他字段吗。蜂巢医生似乎说你不能。我可能错了。在我的例子中,struct的数组与每一行/记录一起。目标是将数组中的每个结构分解,然后在表中已有的所有字段之后放入内联。从您的示例来看,内联似乎只能单独使用,前面不能有其他字段。如果您可以编辑您的问题,并描述您要查询的数据是什么样子,以及以后希望它是什么样子,我可能会提供帮助。当您的问题中只有查询时,很难准确地说出您想要实现的目标。显然,hive会抱怨as部分和列命名,尽管DDL中显示了这一点。似乎只有当您只选择内联卡时,语法才起作用,例如从hsim.imu元搜索中选择pos、pri、cps、clk等内联卡;
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