schema
语法
schema(table|dbHandle)
参数
参数可为一个数据表,亦可为一个数据库句柄 (dbHandle) 。
详情
显示指定数据表或数据库的结构信息。各字段对应含义如下:
databaseDir:数据库的保存目录的路径。
partitionTypeName / partitionType:分区的类型名和对应的 ID。VALUE(1), RANGE(2), LIST(3), COMPO(4), HASH(5)。
partitionSites:若 database 函数配置了 locations 参数,则该字段将列出 locations 指定节点的 ip:port 信息。
partitionSchema:分区的结构。
chunkGranularity:分区粒度。
atomic:写入事务的原子性层级。
engineType:存储引擎的类型,可以是 OLAP 或者 TSDB。
keepDuplicates:数据保留策略,
sortKeyMappingFunction:索引列的映射函数。
sortColumns:数据表的排序列。
partitionColumnIndex:分区列在表字段中对应的下标。维度表时,该值为 -1。
partitionColumnName:分区列的名称。
partitionColumnType:分区列类型对应的 ID,参照数据类型章节。
colDefs:数据表各字段的结构信息。
name:列名
typeString:列的类型
typeInt:列类型对应的ID
extra:仅在列类型为 DECIMAL 时,显示 DECIMAL 的 scale
comment:列字段的注释信息
clusterReplicationEnabled:集群间异步复制的开启状态。若开启,则该值为 true,否则为 false。
相关函数:database, createTable, createPartitionedTable
例子
OLAP 引擎:
$ n=1000000
$ ID=rand(10, n)
$ x=rand(1.0, n)
$ t=table(ID, x)
$ db=database("dfs://rangedb101", RANGE, 0 5 10)
$ pt = db.createPartitionedTable(t, `pt, `ID)
$ pt.append!(t)
$ pt=loadTable(db,`pt);
$ schema(pt);
partitionSchema->[0,5,10]
partitionSites->
partitionColumnType->4
partitionTypeName->RANGE
chunkGranularity->TABLE
keepDuplicates->ALL
engineType->OLAP
chunkPath->
partitionColumnIndex->0
colDefs->
name typeString typeInt comment
---- ---------- ------- -------
ID INT 4
x DOUBLE 16
partitionType->2
partitionColumnName->ID
$ schema(db);
partitionSchema->[0,5,10]
partitionSites->
partitionTypeName->RANGE
partitionColumnType->4
atomic->TRANS
databaseDir->dfs://rangedb101
engineType->OLAP
chunkGranularity->TABLE
clusterReplicationEnabled->true
partitionType->2
TSDB 引擎:
$ n = 10000
$ SecurityID = rand(`st0001`st0002`st0003`st0004`st0005, n)
$ sym = rand(`A`B, n)
$ TradeDate = 2022.01.01 + rand(100,n)
$ TotalVolumeTrade = rand(1000..3000, n)
$ TotalValueTrade = rand(100.0, n)
$ schemaTable_snap = table(SecurityID, TradeDate, TotalVolumeTrade, TotalValueTrade).sortBy!(`SecurityID`TradeDate)
$ dbPath = "dfs://TSDB_STOCK"
$ if (existsDatabase(dbPath)){dropDatabase(dbPath)}
$ db_snap = database(dbPath, VALUE, 2022.01.01..2022.01.05, engine='TSDB')
$ schema(db_snap)
partitionSchema->[2022.01.01,2022.01.02,2022.01.03,2022.01.04,2022.01.05]
partitionSites->
partitionTypeName->VALUE
partitionColumnType->6
atomic->TRANS
databaseDir->dfs://TSDB_STOCK
engineType->TSDB
chunkGranularity->TABLE
clusterReplicationEnabled->true
partitionType->1
$ snap=createPartitionedTable(dbHandle=db_snap, table=schemaTable_snap, tableName="snap", partitionColumns=`TradeDate, sortColumns=`SecurityID`TradeDate, keepDuplicates=ALL, sortKeyMappingFunction=[myHashFunc])
$ schema(snap)
sortKeyMappingFunction->[def myHashFunc(x){
return hashBucket(x, 10)
}]
engineType->TSDB
keepDuplicates->ALL
partitionColumnIndex->1
colDefs->
name typeString typeInt extra comment
---------------- ---------- ------- ----- -------
SecurityID SYMBOL 17
TradeDate DATE 6
TotalVolumeTrade INT 4
TotalValueTrade DOUBLE 16
partitionType->1
partitionColumnName->TradeDate
partitionSchema->[2022.01.01,2022.01.02,2022.01.03,2022.01.04,2022.01.05]
partitionSites->
partitionColumnType->6
partitionTypeName->VALUE
sortColumns->[SecurityID,TradeDate]
chunkGranularity->TABLE
chunkPath->