array
类型的定义 array<元素的类型>
创建对象:array(1,4,6,3)
取值
array对象[角标]
select array(1,4,5,3)[2]
map
类型的定义: map<k的类型,v的类型>
创建对象:map(k1,v1,k2,v2)
取值
根据key获取value值:map对象['key']
select map('name','lisi','age',20)['name']
获取所有的key:map_keys(map对象)
select map_keys(map('name','lisi','age',20))
获取所有的value:map_values(map对象)
select map_values(map('name','lisi','age',20))
struct
类型的定义:struct<属性名1:属性值的类型,属性名2:属性值的类型,.....>
创建对象
使用默认的属性名:struct(属性值1,属性值2,...)
自定义属性名:named_struct(属性名1,属性值1,属性名2,属性值2,.....)
select named_struct('name','lisi','age',20)
取值:struct对象.属性名
select named_struct('name','lisi','age',20).age
select struct('lisi','male').col2
什么时候用map,什么时候用struct?
选 MAP:当数据是 "键值对" 形式,且键具有唯一性(如配置项、标签映射)时使用。
选 STRUCT:当数据具有固定的字段结构(如对象、嵌套对象),且需要通过字段名明确访问时使用。