update!

语法

update!(table, colNames, newValues, [filter])

参数

table 是 DolphinDB 中 Table 类型的表。它可以是分区的内存表。

colNames 是一个字符串标量/向量,表示要更新的列。

newValues 是对指定列的操作的元代码。元代码是对象或表达式,它们包含在<>中。详情请参考元编程。

filter 是表示过滤条件的元代码。

详情

就地更新表中的列。如果 colNames 中的某列不存在,将会创建新列。如果指定了过滤条件,只有符合过滤条件的记录行会被更新。

如果 table 是分区表并且启用了并行处理功能(即配置参数 localExcutors > 0),那么该操作是并行操作。

例子

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