registerSnapshotEngine
Syntax
registerSnapshotEngine(dbName, tableName, keyColumnName)
Arguments
dbName is a string indicating the name of a distributed database.
tableName is a string indicating the name of a table.
keyColumnName is a string indicating the name of a column.
Details
Register a snapshot engine for a distributed table. After registering the snapshot engine, we can get the most recent row of each group specified by keyColumnName with the following SQL statement:
select [HINT_SNAPSHOT] * from loadTable(dbName,tableName).
Please note that this command can be executed in single node mode. If used in a cluster, we cannot specify where
conditions in the SQL statement.
Only one snapshot engine can be registered for a distributed table. After a system restart, we need to register the snapshot engine again.
Use command unregisterSnapshotEngine to unregister a snapshot engine.
Examples
Create a partitioned table:
$ 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);
$ 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 |