返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

GROUP BY GROUPING SETS 函数
语法
GROUP BY GROUPING SETS( (…),(…),…)
功能
对GROUPING SETS 后面括号里的n 个字段或表达式分别做GROUP BY 操作,
最后将结果合并在一起。
详细解释
GROUP BY GROUPING SETS (A,B,C) (A、B、C 代表语法中的“(…)”)
首先对(A)进行GROUP BY,然后对(B)进行GROUP BY,然后对(C)进行GROUP
BY,最后将所有结果合并在一起(相当于UNION ALL 操作),如果n 个字段或
表达式中的一个或多个在某一分组中不出现在GROUP BY 后面,用NULL 代替
不出现的字段或表达式。
示例
示例中所用的表及数据:
DROP TABLE IF EXISTS t3;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
884
CREATE TABLE t3 (color_type varchar(20),color_count int, in_date date);
INSERT INTO t3 (color_type,in_date,color_count)
VALUES('black','2010-09-11',18),
('black','2010-10-05',18),('black','2010-10-13',31),
('blue','2010-09-21',23),('blue','2010-09-30',15),
('blue','2010-10-11',62),('red','2010-09-12',41),
('red','2010-10-01',12),('red','2010-10-05',11);
示例1:GROUP BY GROUPING SETS(color_type,f_YearMonth)
gbase> SELECT color_type,in_date,color_count FROM t3 ORDER BY
color_type,in_date;
+------------+------------+-------------+
| color_type | in_date
| color_count |
+------------+------------+-------------+
| black
| 2010-09-11 |
18 |
| black
| 2010-10-05 |
18 |
| black
| 2010-10-13 |
31 |
| blue
| 2010-09-21 |
23 |
| blue
| 2010-09-30 |
15 |
| blue
| 2010-10-11 |
62 |
| red
| 2010-09-12 |
41 |
| red
| 2010-10-01 |
12 |
| red
| 2010-10-05 |
11 |
+------------+------------+-------------+
9 rows in set
gbase> SELECT NVL(color_type,'') as color_type_show,DECODE(color_ty
pe,NULL,f_YearMonth || '合计',NVL(f_YearMonth,color_type || ' 小计'))
AS f_YearMonth_show,SUM(color_count) FROM (SELECT color_type,DA
TE_FORMAT(in_date, '%Y-%m') as f_YearMonth,color_count FROM t3)
t GROUP BY GROUPING SETS(color_type,f_YearMonth) ORDER BY
color_type,f_YearMonth;
+-----------------+------------------+------------------+
| color_type_show | f_YearMonth_show | SUM(color_count) |
+-----------------+------------------+------------------+
| black
| black 小计
|
67 |
| blue
| blue 小计
|
100 |
| red
| red 小计
|
64 |
|
| 2010-09 合计
|
97 |
|
| 2010-10 合计
|
134 |
+-----------------+------------------+------------------+
5 rows in set

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
885

MOT 恢复
MOT 恢复的主要目标是在有计划停机(例如维护)或计划外崩溃(例如电源故障后)
后,将数据和MOT 引擎恢复到一致状态。
MOT 恢复是随着GBase 8c 数据库其余部分的恢复而自动执行的,并且完全集成到
GBase 8c 恢复过程(也称为冷启动)。
MOT 恢复包括两个阶段:

检查点恢复:
必须通过将数据加载到内存行并创建索引,
从磁盘上的最新检查点文件恢
复数据。

WAL 重做日志恢复:从检查点恢复中使用检查点后,必须通过重放之后添加到日志中
的记录,从WAL 重做日志中恢复最近的数据(在检查点中未捕获)。
GBase 8c 管理和触发WAL 重做日志恢复。

配置恢复。

虽然WAL 恢复以串行方式执行,但可以将检查点恢复配置为以多线程方式运行(即由
多个工作线程并行运行)。

在mot.conf 文件中配置checkpoint_recovery_workers 参数,见恢复(MOT)中的描述。

(1 row)

hll_add_agg(hll_hashval, int32 log2m, int32 log2explicit)
描述:
把哈希后的数据按照分组放到hll中,
依次指定参数log2m、
log2explicit。
log2explicit
取值范围是0 到12,0 表示直接跳过Explicit 模式。该参数可以用来设置Explicit 模式的阈
值大小,在数据段长度达到2log2explicit 后切换为Sparse 模式或者Full 模式。若输入-1 或
者NULL,则log2explicit 采用内置默认值。
返回值类型:hll
示例:

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
308
gbase=# select hll_cardinality(hll_add_agg(hll_hash_text(c), NULL, 1)) from
t_data;
hll_cardinality
------------------