GBase 8a
运维管理
文章
GBase8a无主键表如何获取数据唯一值
发表于2025-06-30 13:52:37165次浏览0个评论
如果你在GBase8a MPP中创建了一张没有主键的表,后因业务需要,想为每行数据新建一个列做主键,那可以用这个方法来获取每行数据的唯一值~
首先打开以下参数,设置成功后新开一个session(set global设置的参数只在后续新开启的session中生效)
set global gcluster_segment_id_replace=1;
/*打开segment()函数*/
参数开启后,便可以查询表中的隐藏列segmentid和rowid,分布式数仓GBase8a MPP的数据在逻辑上是以分片形式存储的,每个数据节点上都有数据分片,数据的分片号和行号如二维空间的横纵坐标,表示着某条数据所存储的具体位置。
| 列名 | 描述 |
|---|---|
| segmentid | 分片号 |
| rowid | 行号【某分片中的行号】 |
select segment_id||rowid,a,b from t001;
/*查看某表中3条数据的位置信息*/
数据的位置信息具有唯一性,同一个位置只能存储一条数据,因此在拼加一些内容后,可实现类似uuid或guid的某行数据的唯一值。
select segment_id||rowid||left(sha(a),20),a,b from t001;
/*根据长度需要,拼加部分内容*/
评论
登录后才可以发表评论
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526