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->