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 算法)或 zstd
-
-
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:索引列的映射函数。
-
tableComment:表的注释。
-
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->