我有麻烦试图在蜂巢定义地图类型。 据蜂巢手册肯定是有地图类型,不幸的是有没有对如何使用它的例子。 :-(
假设,我有下列的表(用户):
Name Ph CategoryName
这种“类别名称”列有特定的设置值。 现在,我想创建一个映射类别名称,以类别ID散列表。 我试着这样做:
set hivevar:nameToID=map('A',1,'B',2);
我有2个问题:
当我set hivevar:${nameToID['A']}
我认为,这将打印出值为1,但我得到“$ {hivevar:nameToID [‘A’]}未定义”
我不知道我怎么可以这样说, select name, ph, ${nameToID[CategoryName]} from users
让我们假设你有如下表:
describe test;
name string
ph string
category map<string,int>
select * from test;
name ph category
Name1 ph1 {"type":1000,"color":200,"shape":610}
Name2 ph2 {"type":2000,"color":200,"shape":150}
Name3 ph3 {"type":3000,"color":700,"shape":167}
访问地图列:
select ph, category["type"], category["color"] from test;
ph1 1000 200
ph2 2000 200
ph3 3000 700
使用蜂房变量的等效:
set hivevar:nameToID=
map("t", category["type"], "c", category["color"], "s", category["shape"]);
select ph, ${nameToID}["t"], ${nameToID}["c"] from test;
ph1 1000 200
ph2 2000 200
ph3 3000 700
这适用于蜂巢0.9.0