addRangePartitions

语法

addRangePartitions(dbHandle, newRanges, [level=0], [locations])

参数

dbHandle 是数据库句柄。

newRanges 是向量,表示新的分区。它必须按升序排序,并且第一个元素必须与数据库的原分区方案的最后一个元素相同。

level 是整数。当分区类型为COMPO,并且每层分区为RANGE时,需要使用level参数指定RANGE分区所在的层。它是可选参数。默认值为0。

locations 是字符串标量或向量。如果目标数据库创建时,指定了locations参数,增加新的分区时可以使用locations参数指定新增分区的位置。它是可选参数。

详情

给数据库增加新的分区。目标数据库必须是RANGE分区类型或COMPO分区类型并且至少其中一层分区为RANGE类型。返回的结果是一个整数,表示新增的分区数量。

例子

下面的例子是给分区类型为COMPO的数据库新增[101, 150), [150,200)和[200,250)分区。

$ n=1000000
$ ID=rand(100, n)
$ dates=2017.08.07..2017.08.11
$ date=rand(dates, n)
$ x=rand(10.0, n)
$ t=table(date, ID, x);
$ dbDate = database(, VALUE, 2017.08.07..2017.08.11)
$ dbID=database(, RANGE, 0 50 101);
$ db = database("dfs://compoDB", COMPO, [dbDate,dbID]);
$ pt = db.createPartitionedTable(t, `pt, `date`ID)
$ pt.append!(t);

$ addRangePartitions(db,101 150 200 250,1)
3

添加新的分区后,需要重新加载数据库。

$ db=database("dfs://compoDB")
$ pt=loadTable(db,"pt")

$ t1=table(rand(2017.08.07..2017.08.11,n) as date, rand(101..249,n) as ID, rand(10.0,n) as x)
$ pt.append!(t1);

$ select count(*) from loadTable("dfs://compoDB","pt");
2000000