update!
Syntax
update!(table, colNames, newValues, [filter])
Arguments
table is a DolphinDB table. It can be a partitioned in-memory table.
colNames is a string scalar/vector indicating the columns to be updated.
newValues is a piece of metacode with the operations for the specified columns. Metacode is objects or expressions within "<" and ">". For details about metacode, please refer to Metaprogramming.
filter (optional) is a piece of metacode with filterting conditions.
Details
Update columns of a table in place. If a column in colNames doesn't exist, create a new column; otherwise update the existing column. If a filter is specified, only rows satisfying the filtering condition will be updated.
This operation is parallel if the table is a partitioned table and if the parallel processing feature is enabled (when the configuration parameter localExcutors > 0).
Examples
n=20000000
workDir = "C:/DolphinDB/Data"
if(!exists(workDir)) mkdir(workDir)
trades=table(rand(`IBM`MSFT`GM`C`YHOO`GOOG,n) as sym, 2000.01.01+rand(365,n) as date, 10.0+rand(2.0,n) as price, rand(1000,n) as qty)
trades.saveText(workDir + "/trades.txt");
trades = ploadText(workDir + "/trades.txt")
select top 10 * from trades;
| sym | date | price | qty |
|---|---|---|---|
| MSFT | 2000.10.09 | 10.123936 | 569 |
| IBM | 2000.09.22 | 10.825785 | 834 |
| MSFT | 2000.09.13 | 10.467937 | 418 |
| IBM | 2000.08.06 | 10.159152 | 252 |
| IBM | 2000.09.01 | 10.614444 | 400 |
| MSFT | 2000.05.03 | 10.40847 | 253 |
| MSFT | 2000.02.20 | 11.470027 | 431 |
| YHOO | 2000.11.09 | 11.570013 | 518 |
| GOOG | 2000.03.02 | 10.206973 | 630 |
| C | 2000.07.09 | 10.477621 | 287 |
trades.update!(`qty, <qty+10>)
select top 10 * from trades;
| sym | date | price | qty |
|---|---|---|---|
| MSFT | 2000.10.09 | 10.123936 | 579 |
| IBM | 2000.09.22 | 10.825785 | 844 |
| MSFT | 2000.09.13 | 10.467937 | 428 |
| IBM | 2000.08.06 | 10.159152 | 262 |
| IBM | 2000.09.01 | 10.614444 | 410 |
| MSFT | 2000.05.03 | 10.40847 | 263 |
| MSFT | 2000.02.20 | 11.470027 | 441 |
| YHOO | 2000.11.09 | 11.570013 | 528 |
| GOOG | 2000.03.02 | 10.206973 | 640 |
| C | 2000.07.09 | 10.477621 | 297 |
trades.update!(`qty`price, <[qty*2, price/2]>)
select top 10 * from trades;
| sym | date | price | qty |
|---|---|---|---|
| MSFT | 2000.10.09 | 5.061968 | 1158 |
| IBM | 2000.09.22 | 5.412893 | 1688 |
| MSFT | 2000.09.13 | 5.233969 | 856 |
| IBM | 2000.08.06 | 5.079576 | 524 |
| IBM | 2000.09.01 | 5.307222 | 820 |
| MSFT | 2000.05.03 | 5.204235 | 526 |
| MSFT | 2000.02.20 | 5.735014 | 882 |
| YHOO | 2000.11.09 | 5.785007 | 1056 |
| GOOG | 2000.03.02 | 5.103487 | 1280 |
| C | 2000.07.09 | 5.238811 | 594 |
trades.update!(`qty`price, <[qty*2, price/2]>, <(sym in `IBM`MSFT`GM`GOOG) and date>=2000.07.01>)
select top 10 * from trades;
| sym | date | price | qty |
|---|---|---|---|
| MSFT | 2000.10.09 | 2.530984 | 2316 |
| IBM | 2000.09.22 | 2.706446 | 3376 |
| MSFT | 2000.09.13 | 2.616984 | 1712 |
| IBM | 2000.08.06 | 2.539788 | 1048 |
| IBM | 2000.09.01 | 2.653611 | 1640 |
| MSFT | 2000.05.03 | 5.204235 | 526 |
| MSFT | 2000.02.20 | 5.735014 | 882 |
| YHOO | 2000.11.09 | 5.785007 | 1056 |
| GOOG | 2000.03.02 | 5.103487 | 1280 |
| C | 2000.07.09 | 5.238811 | 594 |
