复杂类型
ARRAY
数组。
示例:ARRAY[1, 2, 3]。
--创建ARRAY类型表 create table array_tb(col1 ARRAY<STRING>); --插入一条ARRAY类型数据 insert into array_tb values(ARRAY['HetuEngine','Hive','Mppdb']); --查询数据 select * from array_tb; -- [HetuEngine, Hive, Mppdb]
MAP
键值对数据类型。
示例:MAP(ARRAY['foo', 'bar']、ARRAY[1, 2])。
--创建Map类型表 create table map_tb(col1 MAP<STRING,INT>); --插入一条Map类型数据 insert into map_tb values(MAP(ARRAY['foo','bar'],ARRAY[1,2])); --查询数据 select * from map_tb; -- {bar=2, foo=1}
ROW
ROW的字段可是任意所支持的数据类型,也支持各字段数据类型不同的混合方式。
--创建ROW表 create table row_tb (id int,col1 row(a int,b varchar)); --插入ROW类型数据 insert into row_tb values (1,ROW(1,'HetuEngine')); --查询数据 select * from row_tb; id | col1 ----|--------------z 1 | {a=1, b=HetuEngine} --字段是支持命名的,默认情况下,Row的字段是未命名的 select row(1,2e0),CAST(ROW(1, 2e0) AS ROW(x BIGINT, y DOUBLE)); _col0 | _col1 ------------------------|-------------- {1, 2.0} | {x=1, y=2.0} (1 row) --命名后的字段,可以通过域操作符"."访问 select col1.b from row_tb; -- HetuEngine --命名和未命名的字段,都可以通过位置索引来访问,位置索引从1开始,且必须是一个常量 select col1[1] from row_tb; -- 1
IPADDRESS
IP地址,可以表征IPv4或者IPv6地址。但在系统内,该类型是一个统一的IPv6地址。
对于IPv4的支持,是通过将IPv4映射到IPv6的取值范围(RFC 4291#section-2.5.5.2)来实现的。当创建一个IPv4时,会被映射到IPv6。当格式化时,如果数据是IPv4又会被重新映射为IPv4。 其他的地址则会按照RFC 5952所定义的规范格式来进行格式化。
示例:
select IPADDRESS '10.0.0.1', IPADDRESS '2001:db8::1'; _col0 | _col1 ----------|------------- 10.0.0.1 | 2001:db8::1 (1 row)
UUID
标准UUID (Universally Unique IDentifier),也被称为GUID (Globally Unique IDentifier)。
遵从RFC 4122标准所定义的格式。
示例:
select UUID '12151fd2-7586-11e9-8f9e-2a86e4085a59'; _col0 -------------------------------------- 12151fd2-7586-11e9-8f9e-2a86e4085a59 (1 row)
QDIGEST
分位数(Quantile),亦称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数(即二分位数)、四分位数、百分位数等。quantile digest是一个分位数的集合,当需要查询的数据落在某个分位数附近时,就可以用这个分位数做为要查询数据的近似值。它的精度可以调节,但更高精度的结果会带来空间的昂贵开销。
STRUCT
底层用ROW实现,参照ROW。
示例:
-- 创建struct 表 create table struct_tab (id int,col1 struct<col2: integer, col3: string>); --插入 struct 类型数据 insert into struct_tab VALUES(1, struct<2, 'HetuEngine'>); --查询数据 select * from struct_tab; id | col1 ----|--------------------- 1 | {col2=2, col3=HetuEngine}