schema

语法

schema(table|dbHandle)

详情

显示指定数据表或数据库的结构信息。schema返回一个无序字典,包含以下字段(按首字母排序):

  • atomic:写入事务的原子性层级。

  • chunkGranularity:分区粒度。

  • clusterReplicationEnabled:集群间异步复制的开启状态。若开启,则该值为 true,否则为 false。

  • colDefs:数据表各字段的结构信息。

    • name:列名

    • typeString:列的类型

    • typeInt:列类型对应的ID

    • extra:仅在列类型为 DECIMAL 时,显示 DECIMAL 的 scale

    • comment:列字段的注释信息

  • compressMethods:分布式表各列的压缩算法类型。

    • name:列名

    • compressMethods:压缩算法类型。lz4 或 delta (即 delta-of-delta encoding 算法)

  • databaseDir:数据库的保存目录的路径。

  • databaseOwner:数据库创建者名称。

  • engineType:存储引擎的类型,OLAP 或者 TSDB。

  • keepDuplicates:数据保留策略。

  • partitionColumnIndex:分区列在表字段中对应的下标。维度表时,该值为 -1。

  • partitionColumnName:分区列的名称。

  • partitionColumnType:分区列类型对应的 ID,参照数据类型章节。

  • partitionSchema:分区的结构。

  • partitionSites:若 database 函数配置了 locations 参数,则该字段将列出 locations 指定节点的 ip:port 信息。

  • partitionTypeName / partitionType:分区的类型名和对应的 ID。VALUE(1), RANGE(2), LIST(3), COMPO(4), HASH(5)。

  • sortColumns:数据表的排序列。

  • softDelete:创建的表开启了软删除。仅在通过 TSDB 存储引擎创建的库中的表的 schema 返回值中可见。该功能开启时,softDelete 返回字段中显示为 true;否则显示为 false。

  • sortKeyMappingFunction:索引列的映射函数。

  • tableOwner:表创建者名称。

参数

参数可为一个数据表,亦可为一个数据库句柄 (dbHandle)。

例子

应用于 OLAP 引擎下的数据库:

n=1000000  // 设置变量n为1000000
ID=rand(10, n)  // 生成一个随机整数数组ID
x=rand(1.0, n)  // 生成一个随机浮点数数组x
t=table(ID, x)  // 创建表t,包含ID和x两列
db=database("dfs://rangedb101", RANGE, 0 5 10)  // 创建分布式数据库dfs://rangedb101,使用RANGE分布方式
pt = db.createPartitionedTable(t, `pt, `ID)  // 创建分区表pt,使用ID作为分区键
pt.append!(t)  // 将表t的数据追加到分区表pt中
pt=loadTable(db,`pt);  // 从数据库db中加载分区表pt
schema(db);  // 显示数据库db的模式信息

返回:

databaseDir->dfs://rangedb101
partitionSchema->[0,5,10]
partitionSites->
atomic->TRANS
chunkGranularity->TABLE
partitionType->2
partitionTypeName->RANGE
partitionColumnType->4
clusterReplicationEnabled->1
databaseOwner->admin

应用于 OLAP 引擎下的数据表时:

schema(pt);

返回:

chunkGranularity->TABLE
tableOwner->admin
compressMethods->
name compressMethods
---- ---------------
ID   lz4            
x    lz4            

colDefs->
name typeString typeInt comment
---- ---------- ------- -------
ID   INT        4              
x    DOUBLE     16             

chunkPath->
partitionColumnIndex->0
partitionColumnName->ID
partitionColumnType->4
partitionType->2
partitionTypeName->RANGE
partitionSchema->[0,5,10]
partitionSites->

应用于 TSDB 引擎下的数据库:

n = 10000 // 设置变量n为10000
SecurityID = rand(`st0001`st0002`st0003`st0004`st0005, n) // 从指定的证券ID中随机选择n个值赋给SecurityID
sym = rand(`A`B, n)  // 从符号A和B中随机选择n个值赋给sym
TradeDate = 2022.01.01 + rand(100,n) // 从2022年1月1日至100天后的日期中随机选择n个日期赋给TradeDate
TotalVolumeTrade = rand(1000..3000, n)  // 生成n个介于1000和3000之间的随机整数赋给TotalVolumeTrade
TotalValueTrade = rand(100.0, n)  // 生成n个小数赋给TotalValueTrade
schemaTable_snap = table(SecurityID, TradeDate, TotalVolumeTrade, TotalValueTrade).sortBy!(`SecurityID`TradeDate)  
// 创建表schemaTable_snap,并按SecurityID和TradeDate排序

dbPath = "dfs://TSDB_STOCK"  // 设置数据库路径为dfs://TSDB_STOCK
if (existsDatabase(dbPath)){dropDatabase(dbPath)}  // 如果数据库路径存在,则删除该数据库
db_snap = database(dbPath, VALUE, 2022.01.01..2022.01.05, engine='TSDB')  // 创建名为db_snap的数据库,时间范围为2022年1月1日至2022年1月5日,引擎为TSDB

schema(db_snap)  // 显示db_snap的模式信息

返回:

databaseDir->dfs://TSDB_STOCK
partitionSchema->[2022.01.01,2022.01.02,2022.01.03,2022.01.04,2022.01.05]
partitionSites->
engineType->TSDB
atomic->TRANS
chunkGranularity->TABLE
partitionType->1
partitionTypeName->VALUE
partitionColumnType->6
clusterReplicationEnabled->1
databaseOwner->admin

应用于 TSDB 引擎下的数据表:

// 定义名为myHashFunc的函数,该函数接受一个参数x,并返回x的哈希桶编号,桶数为10
def myHashFunc(x){
  return hashBucket(x, 10)
}

// 使用db_snap中的schemaTable_snap创建一个分区表snap,表名为"snap"
// 以TradeDate分区,以SecurityID和TradeDate排序
// 保留重复值,排序键映射函数为myHashFunc
snap = createPartitionedTable(dbHandle=db_snap, table=schemaTable_snap, tableName="snap", partitionColumns=`TradeDate, sortColumns=`SecurityID`TradeDate, keepDuplicates=ALL, sortKeyMappingFunction=[myHashFunc])

// 显示snap表的模式信息
schema(snap)

返回:

engineType->TSDB
keepDuplicates->ALL
chunkGranularity->TABLE
sortColumns->["SecurityID","TradeDate"]
sortKeyMappingFunction->["def myHashFunc(x){
  return hashBucket(x, 10)
}"]
softDelete->0
tableOwner->admin
compressMethods->
name             compressMethods
---------------- ---------------
SecurityID       lz4            
TradeDate        lz4            
TotalVolumeTrade lz4            
TotalValueTrade  lz4            

colDefs->
name             typeString typeInt extra comment
---------------- ---------- ------- ----- -------
SecurityID       SYMBOL     17                   
TradeDate        DATE       6                    
TotalVolumeTrade INT        4                    
TotalValueTrade  DOUBLE     16                   

chunkPath->
partitionColumnIndex->1
partitionColumnName->TradeDate
partitionColumnType->6
partitionType->1
partitionTypeName->VALUE
partitionSchema->[2022.01.01,2022.01.02,2022.01.03,2022.01.04,2022.01.05]
partitionSites->