remoteRun
Syntax
remoteRun(conn, script, args)
Arguments
conn represents a database connection.
script is a string indicating the script to be executed on the remote node.
args ... are the parameters for the function to be executed if script is a function name. It can have 0 items or multiple items.
Details
Send a script or function to a remote database for execution. The
remoteRun
function requires version compatibility when the
local server is 3.00 or higher.
Examples
The first use case: execute script on a remote node.
conn = xdb("localhost",81);
remoteRun(conn, "x=rand(1.0,10000000); y=x pow 2; avg y");
// output
0.333254
The second use case:
-
If functionName is quoted: execute a remote function on a remote node. The function is defined on the remote node, while the parameters of the function are given on the local node.
h=xdb("localhost",80); x=remoteRun(h, "sum",1..100); x; // output 5050
-
If functionName is not quoted: execute a local function on a remote node. The parameters of the function are given on the local node.
Assume on the local node we have a table "EarningsDates" with 2 columns: ticker and date. This table has the earnings announcement dates of 3 stocks for the 3rd quarter of 2006. There is a files USPrices.csv on a remote node with machine name "localhost" and port number 8081. It contains daily stock prices for all US stocks. We would like to get the stock prices from the remote node for all stocks in the table "EarningsDates" for the week after earnings announcement.
On the remote node, we import the data file to create the table "USPrices", and then share it across all nodes as "sharedUSPrices".
USPrices = loadText("c:/DolphinDB/Data/USPrices.csv");
share USPrices as USPrices;
When we create a connection to a remote node, the remote node will create a new session for this connection. This new session is completely isolated from other sessions on the remote node. This is convenient for developers as they don't have to worry about name conflicts. In this case, however, we do want to share data among multiple sessions on the same node. We can use the statement share to share the objects. Currently only tables can be shared in DolphinDB.
On the local node, we create the table EarningsDates
, and send it
with the script over to the remote node. After the execution, the result is sent
back to the local node.
EarningsDates=table(`XOM`AAPL`IBM as TICKER, 2006.10.26 2006.10.19 2006.10.17 as date)
def loadDailyPrice(data){
dateDict = dict(data.TICKER, data.date)
return select date, TICKER, PRC from objByName("sharedUSPrices") where dateDict[TICKER]<date<=dateDict[TICKER]+7
}
conn = xdb("localhost",8081)
prices = conn.remoteRun(loadDailyPrice, EarningsDates);
prices;
date | TICKER | PRC |
---|---|---|
2006.10.27 | XOM | 71.46 |
2006.10.30 | XOM | 70.84 |
2006.10.31 | XOM | 71.42 |
2006.11.01 | XOM | 71.06 |
2006.11.02 | XOM | 71.19 |
2006.10.18 | IBM | 89.82 |
2006.10.19 | IBM | 89.86 |
2006.10.20 | IBM | 90.48 |
2006.10.23 | IBM | 91.56 |
2006.10.24 | IBM | 91.49 |
2006.10.20 | AAPL | 79.95 |
2006.10.23 | AAPL | 81.46 |
2006.10.24 | AAPL | 81.05 |
2006.10.25 | AAPL | 81.68 |
2006.10.26 | AAPL | 82.19 |