Skip to content

Commit ed4df28

Browse files
feat: supports primary key (#250)
1 parent 5600867 commit ed4df28

File tree

2 files changed

+46
-11
lines changed

2 files changed

+46
-11
lines changed

zh_CN/sql-reference/statements/create.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ with(k=v,k1=v1)
3636

3737
对于时序(TimeSeries)引擎,至少有一个列需要为 **TIMESTAMP** 类型,且必须使用 `timestamp key` 语句来指定唯一的 timestamp key 列,这个列的类型必须为 **TIMESTAMP**
3838

39-
::: tip
40-
针对非 **TIMESTAMP** 类型,默认值只支持常量设置。针对 **TIMESTAMP** 类型,默认值除了常量外还支持输出`CURRENT_TIMESTAMP`,在写入数据时如果没有给出时间戳值将会使用写入时间。
39+
::: tips
40+
**TIMESTAMP** 类型字段,默认值支持数值常量、RFC3339 / ISO8601 格式时间字符串以及时间戳函数`CURRENT_TIMESTAMP`,在写入数据时对于缺失的 **TIMESTAMP** 类型字段会自动设置为当前时间。
41+
其他类型字段的默认值仅支持常量。
4142
:::
4243

4344
示例

zh_CN/sql-reference/table-engine/timeseries.md

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,38 @@
1010
```SQL
1111
CREATE TABLE [IF NOT EXISTS] [database.]table_name
1212
(
13-
name1 type1 [ DEFAULT default_expr ],
14-
name2 type2 [ DEFAULT default_expr ] ,
13+
name1 TIMESTAMP [ DEFAULT default_expr ],
14+
name2 type [ DEFAULT default_expr ],
15+
name3 type [ DEFAULT default_expr ] ,
1516
...
16-
TIMESTAMP KEY (expr),
17+
TIMESTAMP KEY (name1),
18+
[ PRIMARY KEY (name1, ...) ],
1719
...
1820
)
19-
PARTITION BY HASH(column_name) PARTITIONS 2
21+
PARTITION BY HASH(column_list) PARTITIONS 2
2022
[ENGINE=TimeSeries]
2123
[ WITH ( [ key = value] [, ... ] ) ]
2224
```
2325

2426
**说明**
2527

26-
* TIMESTAMP KEY: 用户必须指定唯一的 `TIMESTAMP KEY`,TIMESTAMP KEY 字段必须为 `TIMESTAMP` 类型。
27-
* ENGINE: 用于指定表引擎,时序引擎为: TimeSeries。
28-
* PARTITION: 在时序引擎中,一般将数据源唯一标识作为 partition key,并通过 PARTITIONS 设置分区数量(合理的设计分区数量有利于提升性能)。
29-
* 创建表时可以通过`WITH`参数对表进行配置。
28+
* TIMESTAMP KEY
29+
用户必须指定唯一的 `TIMESTAMP KEY`,TIMESTAMP KEY 字段必须为 `TIMESTAMP` 类型。
30+
* PRIMARY KEY
31+
用户可以指定 PRIMARY KEY,PRIMARY KEY 中必须包含 TIMESTAMP KEY,用于确定数据的唯一性。
32+
* PARTITION
33+
* **BY** 根据指定列进行分区。
34+
* **HASH** 表示按给定列的顺序依次计算 HASH 值,并按 HASH 结果计算分区。当前仅支持 HASH 算法。
35+
* **column_list** 必须是`PRIMARY KEY`中除了`TIMESTAMP KEY`列以外的列的子集或者全集(如果指定了`PRIMARY KEY`)。
36+
* **PARTITIONS** 表示分区数量,[合理的设置分区](../../development-guide/high-performance-writing.md#partition-数量)数量有利于提升性能。
37+
* ENGINE
38+
指定表引擎,未指定时默认为时序引擎 TimeSeries。
39+
* WITH
40+
指定 table options。
41+
42+
*注:创建表之后,不支持修改 TIMESTAMP KEY, PARTITION 以及 PRIMARY KEY。*
43+
44+
### 支持的 Table Options
3045

3146
| Name | Description |
3247
| ------------------------ |------------------------------------------------------------------------------------------------------------------------- |
@@ -46,7 +61,9 @@ PARTITION BY HASH(column_name) PARTITIONS 2
4661
| COMPACT_TIME | 非活跃窗口合并的工作时间,缺省值为当前系统设置时区的 `02:00~06:00`。支持 UTC 时区设置形式如: UTC,02:00\~06:00 支持多时间窗口设置形式如: UTC,02:00\~04:00,13:00\~15:00,不允许多个时间窗口重叠,允许时间跨凌晨如:23:00\~02:00 |
4762
| COMPACT_MODE | Compaction 支持的模式,缺省值为:`[COMPACT,TTL]`,支持选项:COMPACT,TTL,Delta,可以组合使用。当组合多个选项时,需以'[]'括起来,中间以英文逗号分隔,例如: `[COMPACT,TTL,Delta]`。如需关闭 Compaction,则指定为 Disable |
4863

49-
**示例**
64+
### 示例1
65+
66+
指定 ts 列为 TIMESTAMP KEY,同时按 sn 列进行分区,分区数量为6
5067

5168
```SQL
5269
CREATE TABLE sensor_info (
@@ -61,6 +78,23 @@ ENGINE=TimeSeries
6178
WITH (ttl='7d', memtable_size='512MiB')
6279
```
6380

81+
### 示例2
82+
83+
指定 ts 列为 TIMESTAMP KEY,ts、sn、zone 为 PRIMARY KEY,同时按 zone 列进行分区,分区数量为2
84+
85+
```SQL
86+
CREATE TABLE sensor_info (
87+
ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
88+
sn INT64 NOT NULL,
89+
zone string,
90+
speed DOUBLE,
91+
temperature REAL,
92+
TIMESTAMP KEY (ts)
93+
PRIMARY KEY (ts, sn, zone)
94+
)
95+
PARTITION BY HASH(zone) PARTITIONS 2
96+
```
97+
6498
## 修改表
6599

66100
```SQL

0 commit comments

Comments
 (0)