返回首页

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

更新日期:2024年09月11日

STATISTICS
提供关于表索引的信息。
表 5-45 具体信息如下:
TABLE_CATALOG
数据表登记目录
TABLE_SCHEMA
索引所属表的数据库名
TABLE_NAME
索引所属的表名
NON_UNIQUE
如果索引不能包括重复词为0,如果可以则为1
INDEX_SCHEMA
索引所属的数据库名(一般与table_schema 相同)
INDEX_NAME
索引名称
SEQ_IN_INDEX
索引中列的序列号,从1 开始
COLUMN_NAME
索引的列名
COLLATION
列以什么方式存储在索引中,[A(升序)|NULL(无分类)]
CARDINALITY
索引中唯一值的数目的估计值
SUB_PART
如果列只是被部分地编入索引,则为被编入索引的数目,如果整
列被编入,则为NULL
PACKED
关键字如何被压缩,默认为NULL

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 311
NULLABLE
是否为空
INDEX_TYPE
索引的类型,[BTREE|PRIMARY|FULL TEXT|HASH|RTREE]
COMMENT
索引的注释、备注

GBA-02BR-0014
错误码
错误标识
错误信息
GBA-02BR-0014

Can't get datadir for gnode from cnf
错误出现原因

GBase 8a MPP Cluster 产品手册
7 附录
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1657

开窗子句range/row between 使用方法
语法:
func(expr)over([partition_clause][order_by_clause][windowing_clause]
OLAP 函数中开窗子句:[windowing_clause]子句
使用范围和具体语法如下:
支持windowing_clause 的OLAP func 函数有:sum、avg、count、max、min,不支
持distinct 关键字。
windowing_cluase 语法图如下

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
895
关键字说明:
Rows
指定行的范围
Range 指定值的范围
Unbounded 无限
Preceding 向上,减去,提前
Following 向下,加上,延后
Current row 当前行
示例:
表结构:create table t(a int,b int,c int,d datetime);
示例以a 列数据分组,
以b 列或者d 列数据排序,
输出同一分组内开窗子句指定范
围的c 列累加和sum(c)
需提前打开支持子句的控制参数:
set _t_gbase_new_window_function_support=1
示例1:指定行范围的窗口,从当前行的前一行,到当前行。
gbase> select a,b,c,sum(c)over(partition by a order by b,c rows between 1 preceding and current
row) as 'sum(c)' from t;
+------+------+------+--------+
| a
| b
| c
| sum(c) |
+------+------+------+--------+
|
2 |
1 |
1 |
1 |
|
2 |
2 |
1 |
2 |
|
1 |
1 |
2 |
2 |
|
1 |
2 |
4 |
6 |
|
1 |
3 |
5 |
9 |
+------+------+------+--------+
5 rows in set (Elapsed: 00:00:00.21)
示例2:指定行范围的窗口,从当前行的前一行,到当前行的后一行。
gbase> select a,b,c,sum(c)over(partition by a order by b,c rows between 1 preceding and 1 following)
as 'sum(c)' from t;
+------+------+------+--------+
| a
| b
| c
| sum(c) |
+------+------+------+--------+
|
2 |
1 |
1 |
2 |
|
2 |
2 |
1 |
2 |
|
1 |
1 |
2 |
6 |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
896
|
1 |
2 |
4 |
11 |
|
1 |
3 |
5 |
9 |
+------+------+------+--------+
5 rows in set (Elapsed: 00:00:00.07)
示例3:
指定值范围的窗口,
当前行数值列
(b列)
的值为x,
窗口为b列值在[ (x-2),x ]
闭区间范围,输出同组该范围内c 列的累加和。
gbase> select a,b,c,sum(c)over(partition by a order by b range between 2 preceding and current
row) as 'sum(c)' from t;
+------+------+------+--------+
| a
| b
| c
| sum(c) |
+------+------+------+--------+
|
2 |
1 |
1 |
1 |
|
2 |
2 |
1 |
2 |
|
1 |
1 |
2 |
2 |
|
1 |
2 |
4 |
6 |
|
1 |
3 |
5 |
11 |
+------+------+------+--------+
5 rows in set (Elapsed: 00:00:00.10)
示例4:
指定值范围的窗口,
当前行的日期列d 日期值为x,
窗口为d 列日期值在[ x
的前2 天,x 的后3 天] 闭区间的范围,输出同组该范围内c 列的累加和。
gbase> select a,d,c,sum(c)over(partition by a order by d range between 2 preceding and 3 following)
as 'sum(c)' from t;
+------+---------------------+------+--------+
| a
| d
| c
| sum(c) |
+------+---------------------+------+--------+
|
2 | 2010-10-10 10:00:00 |
1 |
2 |
|
2 | 2010-10-10 10:01:00 |
1 |
2 |
|
1 | 2010-10-08 10:00:00 |
2 |
6 |
|
1 | 2010-10-11 06:00:00 |
4 |
9 |
|
1 | 2010-10-12 10:00:00 |
5 |
9 |
+------+---------------------+------+--------+
5 rows in set (Elapsed: 00:00:00.36)
示例5:
指定值范围的窗口,
当前行的日期列d日期值为x,
窗口为d列日期值在[ 行
首,x 的后3 分钟] 闭区间的范围,输出同组该范围内c 列的累加和。
gbase> select a,d,c,sum(c)over(partition by a order by d range between unbounded preceding and
interval 3 minute following) as 'sum(c)' from t;
+------+---------------------+------+--------+
| a
| d
| c
| sum(c) |
+------+---------------------+------+--------+
|
1 | 2010-10-08 10:00:00 |
2 |
2 |
|
1 | 2010-10-11 06:00:00 |
4 |
6 |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
897
|
1 | 2010-10-12 10:00:00 |
5 |
11 |
|
2 | 2010-10-10 10:00:00 |
1 |
2 |
|
2 | 2010-10-10 10:01:00 |
1 |
2 |
+------+---------------------+------+--------+
5 rows in set (Elapsed: 00:00:00.07)
使用约束:
1.
_t_gbase_new_window_function_support 参数为控制支持windowing_clause
子句的参数,参数值默认为0,不支持windowing_clause 子句,设置为1 时支持
windowing_clause 子句。
set _t_gbase_new_window_function_support=1
2.
不支持windowing_clause 子句情况下,开窗方式是固定的,范围是:
Range between unbounded preceding and current row
3.
Partition 子句为空,则不分组,即说明全部数据为一组;order by 子句为
空,则每个分组中的所有数据不排序,即一个分组就是一个“子窗口”。
4.
between bound1 and bound2
bound1 定义窗口的起始位置,bound2 定义窗口的结束位置。
单独一个bound 时,为起始位置的定义,结束位置默认为current row,如:
select a,b,c,sum(c)over(partition by a order by b range 2 preceding) as 'sum(c)' from t;
5.
unbounded preceding
指明起始位置,即当前分组中的行首,不能出现在bound2 中。
6.
unbounded following
指明结束位置,即当前分组中的行尾,不能出现在bound1 中。
7.
current row
指明起始或结束位置为当前行。
8.
在如下情况时,order by 关键字后可以有多个表达式:
Range between unbounded preceding and current row
Range between unbounded preceding and unbounded following
Range between current row and current row

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
898
Range between current row and unbounded following
9.
value_expr preceding | value_expr following
起始位置为value_expr following 时,则结束位置应为value_expr following;
结束位置为value_expr preceding 时,则起始位置应为value_expr preceding。
10.
rows 关键字后接value_expr 时,不支持interval 子句
value_expr 为num 时,标识了行的偏移量,为数值常量,正整数(四舍五入)。
不可为负数、数值函数、表列。
11.
range 关键字后接value_expr 时支持interval 子句,且order by 后只能有一
个表达式:
value_expr 为num 时,order by 后的表达式只能为数值或日期(时间)类型;
value_expr 为interval 子句时,order by 后的表达式只能为日期(时间)类型;
value_expr 为num 时,标识了行的偏移量,为数值常量,正整数(四舍五入)。
不可为负数、数值函数、表列。
12.
range 关键字,order by 后接唯一表达式用于计算窗口范围时:
排序存在null 值且在行首时,除非unbounded preceding,该行不计入窗口范围;
排序存在null 值且在行尾时,除非unbounded following,该行不计入窗口范围;
当前行为null 值,除非unbounded preceding/following,窗口范围仅为该行。
13.
日期(时间)类型的支持范围:date、datetime 和timestamp。