欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

hive支持sql大全(9-11:复合类型构建操作/复杂类型访问操作/复杂类型长度统计函数)

程序员文章站 2022-09-28 16:23:33
九、复合类型构建操作 1. Map类型构建: map 语法: map (key1, value1, key2, value2, …) 说明:根据输入的key和val...

九、复合类型构建操作

1. Map类型构建: map 语法: map (key1, value1, key2, value2, …) 说明:根据输入的key和value对构建map类型 举例: hive> Create table lxw_test as select map('100','tom','200','mary')as t from lxw_dual; hive> describe lxw_test; t map hive> select t from lxw_test; {"100":"tom","200":"mary"}

2. Struct类型构建: struct 语法: struct(val1, val2, val3, …) 说明:根据输入的参数构建结构体struct类型 举例: hive> create table lxw_test as select struct('tom','mary','tim')as t from lxw_dual; hive> describe lxw_test; t struct hive> select t from lxw_test; {"col1":"tom","col2":"mary","col3":"tim"}

3. array类型构建: array 语法: array(val1, val2, …) 说明:根据输入的参数构建数组array类型 举例: hive> create table lxw_test as selectarray("tom","mary","tim") as t from lxw_dual; hive> describe lxw_test; t array hive> select t from lxw_test; ["tom","mary","tim"]

十、复杂类型访问操作

1. array类型访问: A[n] 语法: A[n] 操作类型: A为array类型,n为int类型 说明:返回数组A中的第n个变量值。数组的起始下标为0。比如,A是个值为['foo', 'bar']的数组类型,那么A[0]将返回'foo',而A[1]将返回'bar' 举例: hive> create table lxw_test as selectarray("tom","mary","tim") as t from lxw_dual; hive> select t[0],t[1],t[2] from lxw_test; tom mary tim

2. map类型访问: M[key] 语法: M[key] 操作类型: M为map类型,key为map中的key值 说明:返回map类型M中,key值为指定值的value值。比如,M是值为{'f' -> 'foo', 'b'-> 'bar', 'all' -> 'foobar'}的map类型,那么M['all']将会返回'foobar' 举例: hive> Create table lxw_test as selectmap('100','tom','200','mary') as t from lxw_dual; hive> select t['200'],t['100'] from lxw_test; mary tom

3. struct类型访问: S.x 语法: S.x 操作类型: S为struct类型 说明:返回结构体S中的x字段。比如,对于结构体struct foobar {int foo, int bar},foobar.foo返回结构体中的foo字段 举例: hive> create table lxw_test as select struct('tom','mary','tim')as t from lxw_dual; hive> describe lxw_test; t struct hive> select t.col1,t.col3 from lxw_test; tom tim

十一、复杂类型长度统计函数

1. Map类型长度函数: size(Map) 语法: size(Map) 返回值: int 说明: 返回map类型的长度 举例: hive> select size(map('100','tom','101','mary')) from lxw_dual; 2

2. array类型长度函数: size(Array) 语法: size(Array) 返回值: int 说明: 返回array类型的长度 举例: hive> select size(array('100','101','102','103')) from lxw_dual; 4

3. 类型转换函数 类型转换函数: cast 语法: cast(expr as ) 返回值: Expected "=" to follow "type" 说明: 返回array类型的长度 举例: hive> select cast(1 as bigint) from lxw_dual;