keyedStreamTable
语法
keyedStreamTable(keyColumn, X, [X1], [X2], …..)
或
keyedStreamTable(keyColumn, capacity:size, colNames, colTypes)
参数
keyColumn 是一个字符串或向量,表示主键。
第一种用法中: X, X1….是向量。
第二种用法中:
capacity 是正整数,表示建表时系统为该表分配的内存(以记录数为单位)。当记录数超过 capacity 时,系统会首先会分配 capacity 1.2~2 倍的新的内存空间,然后复制数据到新的内存空间,最后释放原来的内存。对于规模较大的表,此类操作的内存占用会很高。因此,建议建表时预先分配一个合理的 capacity。
size 是正整数,表示该表新建时的行数。注意,此处 size 必须为 0,表示建立一个空表。
colNames 是字符串向量,表示列名。
colTypes 是向量,表示各列的数据类型。
详情
创建键值流数据表。该表的主键不允许包含重复值。主键支持一个或多个字段。
向表中添加新记录时,系统会自动检查新记录的主键值:
如果新记录的主键值与已有记录的主键值重复时,已有的记录不会被更新。
一次性批量插入新记录时,若有多条记录具有相同的主键值,且该主键值与已有记录的主键值不同,只有第一条记录能成功插入。
例子
第一种用法:
$ id=`A`B`C`D`E
$ x=1 2 3 4 5
$ t1=keyedStreamTable(`id, id, x)
$ t1;
id |
x |
---|---|
A |
1 |
B |
2 |
C |
3 |
D |
4 |
E |
5 |
第二种用法:
$ t2=keyedStreamTable(`id,100:0,`id`x, [INT,INT])
$ insert into t2 values(1 2 3,10 20 30);
$ t2;
id |
x |
---|---|
1 |
10 |
2 |
20 |
3 |
30 |
往表 t2 中插入重复主键值的数据:
$ insert into t2 values(3 4 5,35 45 55)
$ t2;
id |
x |
---|---|
1 |
10 |
2 |
20 |
3 |
30 |
4 |
45 |
5 |
55 |
可以看到,id=3的记录并没有被覆盖。
主键为多个字段:
$ t=keyedStreamTable(`sym`id,1:0,`sym`id`val,[SYMBOL,INT,DOUBLE])
$ insert into t values(`A`B`C`D`E,5 4 3 2 1,52.1 64.2 25.5 48.8 71.9);
$ insert into t values(`A`B`R`T`Y,5 8 3 2 1,152.3 164.6 125.5 148.8 171.6);
$ t;
sym |
id |
val |
---|---|---|
A |
5 |
52.1 |
B |
4 |
64.2 |
C |
3 |
25.5 |
D |
2 |
48.8 |
E |
1 |
71.9 |
B |
8 |
164.6 |
R |
3 |
125.5 |
T |
2 |
148.8 |
Y |
1 |
171.6 |