赞
踩
该API会将里面的参数转成一个数组
取值:['键下标'] 非键名称
判断数组中是否有指定的键
- select a,a[1] -- 这里指定的是下标
- from (
- select `array`('1','2','3','4','5') a
- ) as t;
- -- ["1","2","3","4","5"] 2
-
-
- select a,a[1],array_contains(a,6) -- 这里指定的是下标
- from (
- select `array`(1,2,3,4,5) a
- ) as t;
- -- [1,2,3,4,5] 2 false
该API会将参数转成键值对,参数必须是偶数,其中奇数参数看作键,偶数参数看作值。声明时类型要制定。
取值:['键名称'] 非键位置
- select `map`('a','b','c','d') -- {"a":"b","c":"d"}
-
-
- select m,
- m['a']
- from (select `map`('a', 'b', 'c', 'd') m-- {"a":"b","c":"d"}
- ) t;
- -- {"a":"b","c":"d"} b
类似于Java中的类
所有参数会被当成值,不要求成对;取值是.colN取出对应字段N的值
- select obj,obj.col1 --,obj.b报错
- from (
- select struct('a', 'b', 'c') obj
- ) t;
- -- {"col1":"a","col2":"b","col3":"c"} a
参数必须成对出现,奇参会当成键,偶参会被当成值
- select obj,obj.a
- from (
- select named_struct('a', 1, 'b', 2, 'c', 3) obj
- ) t;
- -- {"a":1,"b":2,"c":3} 1
备注:Hive建表对复杂JSON格式(对象里套对象)文件处理中,如果字段固定,用struct结构体存储;如果字段不固定,用map结构处理。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。