当前位置: 代码迷 >> 综合 >> hive lateral view explode collect_set collec_list 以及常用函数
  详细解决方案

hive lateral view explode collect_set collec_list 以及常用函数

热度:8   发布时间:2023-12-14 06:35:52.0

laterval view 常和explode一起使用用来行(单个字段中有多个指定分隔符的字段)转列

lateral view 就像是有链接了一个表 LATERAL 没有V

explode将map 或array转换成一个一个的单独字段

这里写图片描述

select explode(myCol) from table

这里写图片描述

 

这里写图片描述

select pageid,newAdid from table lateral view explode (adid_list) as newAdid ;

这里写图片描述

collect_set 去重作为一个集合

collect_list 全部作为一个集合

一般用在group by中

select id,collect(stage) from table group by id 将这个组中的数据汇聚到set或list中

 

比如说原表为类型为 datetime  2018-01-22 00:00:00 

在sql中转换 采用 DATE_FORMAT 函数

DATE_FORMAT(CREATE_TIME,'%Y-%m-%d')=DATE_FORMAT(NOW(),'%Y-%m-%d')

ifnull(xxx,0)

date_add(DATE_FORMAT(create_time,'%Y-%m-%d'),INTERVAL 1 DAY)=DATE_FORMAT(NOW(),'%Y-%m-%d') where DATE_FORMAT(input_date,'%Y-%m-%d')=DATE_FORMAT(NOW(),'%Y-%m-%d')

DATE_SUB(DATE_FORMAT(now(),'%Y-%m-%d'),INTERVAL 1 DAY)

date_add(to_date(from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss')),-1)

from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss')

CASE
     WHEN DATE_FORMAT( a.created_at, '%Y-%m-%d' ) = DATE_SUB( DATE_FORMAT( now( ), '%Y-%m-%d' ), INTERVAL 1 DAY ) THEN
                1 ELSE 0 
   END 

is not null exist in 

mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} -e "select xxxx" | cut -d " " -f 1 | tail -1 

取mysql sql执行返回的结果

 

contact_ws(separator,string1,string2) 链接字符 with separator 第一个为分隔符

select id,concat_ws(",",collec_set(stage)) from table group by id;

split(字段,“,”)按照,分割 然后在explode展开 explode(split(xx,","))

substr(字段,1,4)从1开始截取4位

get_json_object

///

map array 
round 四舍五入 
cast (exp as type )强制转类型
from_unixtime(timestamp,format) 将时间戳转换成具体指定的格式
unix_timestamp(时分秒) 转换成时间戳
to_date()日期
year()
date_add()
date_sub()
case a when b  then c
concat 链接字符
get_json_object(string,path) $.k=v  $.k.second.[0]
lpad()截取字符 从左边 rpad()从右边
itrim() 去掉左边的空格
parse_url() 解析url
str_to_map() 
count(distinct )

regexp_replace

collect_set() 去重的集合
collect_list() 全部的集合,比如订单编号集合,合并
explode(array) 返回数组里面的值
explode(map) 返回map kv
posexplode(array) 下标和数据
//

  相关解决方案