createTable
语法
createTable(dbHandle, table, tableName, [compressMethods])
参数
dbHandle database 函数返回的分布式数据库句柄。
table 一个表,系统将根据该表的结构在数据库中创建一个空的维度表。
tableName 一个字符串,表示维度表的名称。
compressMethods 一个字典,指定某些列使用 lz4 或者 delta 压缩算法存储。key 为字段名,value 为压缩算法(”lz4”或”delta”)。若未指定,默认采用lz4压缩算法。请注意,delta 算法仅可用于 SHORT, INT, LONG 与时间或日期类型数据。
详情
在分布式数据库中创建一个维度表。维度表是分布式数据库中没有进行分区的表,适用于存储不频繁更新的小数据集。
使用 loadTable
函数将维度表加载到内存后,其占用的缓存空间不会被系统自动释放,用户可以手动调用命令 clearCachedDatabase()
进行清理。因此,不建议用户将记录数超过200万条的表存储为维度表。
维度表与分区表都是根据设置参数 dfsReplicationFactor 决定副本的数量。维度表的读写操作也支持事务。
通过在配置项配置 enableConcurrentDimensionalTableWrite = true,可以支持对维度表进行并发的写入、修改或删除操作。
例子
例1
$ db=database("dfs://db1",VALUE,1 2 3)
$ timestamp = [09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12]
$ sym = `C`MS`MS`MS`IBM`IBM`C`C`C
$ price= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29
$ qty = 2200 1900 2100 3200 6800 5400 1300 2500 8800
$ t = table(timestamp, sym, qty, price);
$ dt=db.createTable(t,`dt).append!(t);
$ select * from dt;
timestamp |
sym |
qty |
price |
---|---|---|---|
09:34:07 |
C |
2200 |
49.6 |
09:36:42 |
MS |
1900 |
29.46 |
09:36:51 |
MS |
2100 |
29.52 |
09:36:59 |
MS |
3200 |
30.02 |
09:32:47 |
IBM |
6800 |
174.97 |
09:35:26 |
IBM |
5400 |
175.23 |
09:34:16 |
C |
1300 |
50.76 |
09:34:26 |
C |
2500 |
50.32 |
09:38:12 |
C |
8800 |
51.29 |
例2
$ db = database("dfs://demodb", VALUE, 1..10)
$ t=table(take(1, 86400) as id, 2020.01.01T00:00:00 + 0..86399 as timestamp, rand(1..100, 86400) as val)
$ dt = db.createTable(t, "dt", {timestamp:"delta", val:"delta"})
$ dt.append!(t)
相关函数: createPartitionedTable