配置单元生成id

fkaflof6  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(310)

我尝试为一个表生成唯一的id,该表最初是在db2中使用以下方法完成的:

insert into database.table
select next value for database.sequence,
       current_timestamp,
from source

其中序列具有定义的起始值(例如25430)。
我目前使用的代码是:

insert into database.table
select 
 row_number() over() + select max(id) from table,
 from_unixtime(unix_timestamp())
from source;

除了嵌套的select语句不起作用之外,现在我必须运行

select max(id) from table

并手动将其放入查询中。
有人能在一个查询中建议一种方法吗?

e5nqia27

e5nqia271#

你必须强制交叉连接,类似这样:

select 
...
from source,
(select max(id)as maxid from table) as m_id
;

通过这种方式,您可以为max id返回一个值,并使用该值生成新的值。
用hive生成代理密钥有点痛苦,很不幸。

相关问题