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

本文介绍了在Hive中自动生成ID的两种方法:利用row number() over(order by)创建自增ID,以及通过reflect()函数结合UUID生成随机不重复ID,并讲述了UUID的唯一性特点及去除'-'的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值