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