hive sql自动生成id的两种方法随机id和自增id

文章目录

    • 1.生成自增id:row number() over(order by)
    • 2.随机不重复id: regexp_replace(reflect('java.util.UUID','randomUUID'),'-','')

1.生成自增id:row number() over(order by)

使用窗口函数来生成自增id是比较常见的手法

select * from yc_test1
grade_id	subject_name	max_score
1	语文	98
2   数学	95
2 	政治	87
5	语文 	97
5	数学	100
6	政治	92

--给上表追加一个自增id的查询
select 
		 row_number( order by grade_id)as id 
		,grade_id
		,subject_name
		,max_score
	from  
	    yc_test1
--查询结果
id	grade_id	subject_name	max_score
1	1	语文	98
2	2   数学	95
3	2 	政治	87
4	5	语文 	97
5	5	数学	100
6	6	政治	92

.

2.随机不重复id: regexp_replace(reflect(‘java.util.UUID’,‘randomUUID’),’-’,’’)

1.reflect() 函数可以调用jdk内置的静态方法,参数为不定长函数
2.UUID.randomUUID() 是 javaJDK提供的一个自动生成主键的方法
3.UUID(Universally Unique Identifier):通用唯一识别码,是一种软件建构的标准。并且保证同一时空生成的机械码都是唯一的长串
如:51bee5d5-d28d-4561-9347-63634930055c
4.因为我这边id不想要中间的’-’,所以使用regexp_replace将’-'替换为无

select * from yc_test1
grade_id	subject_name	max_score
1	语文	98
2   数学	95
2 	政治	87
5	语文 	97
5	数学	100
6	政治	92

--给上表追加一个随机id的查询
select 
		 regexp_replace(reflect('java.util.UUID','randomUUID'),'-','') id 
		,grade_id
		,subject_name
		,max_score
	from  
	    yc_test1  limit 2;
--查询结果
id	grade_id	subject_name	max_score
51bee5d5d28d4561934763634930055c	1	语文	98
74df9490f93f4a67876c3b32a929686c	2   数学	95

你可能感兴趣的:(笔记,hql,hive,大数据,hql)