registerSnapshotEngine

语法

registerSnapshotEngine(dbName, tableName, keyColumnName)

参数

dbName 是一个字符串,表示分布式数据库的名称。

tableName 是一个字符串,表示分布式表的名称。

keyColumnName 是一个字符串,表示分组列的名称。

详情

为分布式表注册一个快照引擎。快照引擎将分布式表按照 keyColumnName 指定的列分组,获取每个组的最新记录。注册快照引擎后,我们可以通过select [HINT_SNAPSHOT] * from loadTable(dbName,tableName)来获取每个分组的最新记录。

使用 unregisterSnapshotEngine 函数可以取消注册快照引擎。

注意:

  • 该功能目前只能在单实例模式下运行。

  • 一个分布式表只能注册一个快照引擎。

  • 系统重启后,需要重新注册快照引擎。

例子

创建分布式表:

$ db1=database("",VALUE,2018.09.01..2018.09.30)
$ db2=database("",VALUE,`AAPL`MSFT`MS`C)
$ db=database("dfs://compoDB",COMPO,[db1,db2])
$ t=table(1:0,`date`sym`val,[DATE,SYMBOL,DOUBLE])
$ pt=db.createPartitionedTable(t,`pt,`date`sym);

注册快照引擎来获取分布式表pt中每个股票代码对应的最新记录。

$ registerSnapshotEngine("dfs://compoDB","pt","sym");

写入数据,获取每个股票代码对应的最新记录。本例使用的是随机生成的数据,因此执行的结果有可能会与本例的结果不同。

$ def writeData(batch){
$     pt=loadTable("dfs://compoDB","pt")
$     tmp=table(batch:0,`date`sym`val,[DATE,SYMBOL,DOUBLE])
$     dates=take(2018.09.01..2018.09.30,batch)
$     syms=take(`AAPL`MSFT`MS`C,batch)
$     vals=rand(100.0,batch)
$     insert into tmp values(dates,syms,vals)
$     pt.append!(tmp)
$ }

$ writeData(1000);
select [HINT_SNAPSHOT] * from loadTable("dfs://compoDB","pt");

date

sym

val

2018.09.29

AAPL

24.945753

2018.09.29

MS

14.034453

2018.09.30

C

3.89175

2018.09.30

MSFT

17.720025

$ writeData(1000);
$ select [HINT_SNAPSHOT] * from loadTable("dfs://compoDB","pt");

date

sym

val

2018.09.29

AAPL

86.296883

2018.09.29

MS

48.17885

2018.09.30

C

83.7821

2018.09.30

MSFT

44.415456