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