本章介绍run()函数的多种用法。
描述:
针对记录计算表达式,返回记录本身。
语法:
r.run(xi,…)
备注:
针对记录r计算表达式x,最后返回记录r。此函数通常用于修改r的字段值,例如x为col1=col2+1, 结果将更改col1的字段值。
参数:
r |
记录 |
xi |
计算表达式,一般为字段名,或者由字段名组成的合法表达式,"~"表示当前记录 |
返回值:
经过表达式x运算后的r
示例:
|
A |
|
1 |
=[[12,23]].new(~(1):col1,~(2):col2) |
|
2 |
=A1(1).run(col1=col2+1) |
|
3 |
=A1(1).run(col1=col2+1,col2=col1+col2) |
|
注意:
r.(x)和r.run(x)的区别:r.(x)的目的在于计算x表达式的值,并返回该表达式的值;r.run(x)的目的在于通过x的运算对r做出修改,从而返回修改后的r。
相关概念:
描述:
针对排列中每条记录计算表达式。
语法:
P.run(xi:Fi,…)
备注:
针对排列/序表中每条记录计算表达式xi,结果赋给Fi,返回修改后的P。在表达式计算过程中,如果需要引用P的当前成员,直接使用"~"表示。
参数:
P |
序表/排列 |
xi |
Fi的字段新值 |
Fi |
A的字段名 |
返回值:
修改后的序表P
示例:
|
A |
|
1 |
=demo.query("select DEPT,NAME,BIRTHDAY from EMPLOYEE") |
|
2 |
=A1.derive(age(BIRTHDAY):Age) |
|
3 |
=A2.run(Age+10:Age) |
|
相关概念:
描述:
针对序列/排列中每个成员计算表达式,返回原序列。
语法:
A.run(x) |
仅计算一个表达式 |
A.run(x1,x2, ......xi) |
计算多个表达式 |
备注:
针对序列/排列A中每个成员计算表达式xi,计算过程中可能对A进行修改,最后返回修改后的A。例如x为col1=col2+1,结果将修改col1字段值,在表达式计算过程中,如果需要引用当前成员,直接使用"~"表示。
参数:
A |
序列/排列 |
x |
计算表达式,一般为字段名,或者由字段名组成的合法表达式,可使用"~"引用当前记录。 |
选项:
@m |
数据量大的复杂运算中并行计算提升性能,计算次序不确定。 |
返回值:
修改后序列/排列A
示例:
利用 "run" 修改成员值
|
A |
|
1 |
=[1,2,3,4,5] |
|
2 |
=A1.run(~=~*~) |
[1,4,9,16,25],"~"引用当前成员 |
利用 " run"函数实现EID和NAME的转换
|
A |
|
1 |
=demo.query("select * from EMPLOYEE") |
|
2 |
=demo.query("select * from DEPARTMENT") |
|
3 |
=A2.run(MANAGER=A1.select@1(EID==A2.MANAGER).NAME) |
|
4 |
=demo.query("select * from EMPLOYEE") |
|
5 |
=demo.query("select * from DEPARTMENT") |
|
6 |
=A5.run@m(MANAGER=A4.select@1(EID==A5.MANAGER).NAME) |
数据量大的运算中提升性能。 |
利用 "run" 函数实现表间关联
|
A |
|
1 |
=demo.query("select * from EMPLOYEE").keys(EID) |
|
2 |
=demo.query("select * from DEPARTMENT") |
|
3 |
=A2.run(MANAGER=A1.select@1(EID== A2.MANAGER)) |
|
4 |
=A2.MANAGER.STATE |
California,字段值为记录时,可用点操作符逐级引用 |
注意:
A.(x)和A.run(x)的区别:
A.(x)的目的在于计算x表达式的值,并返回该表达式的值组成的序列;
A.run(x)的目的在于通过x的运算对A做出修改,从而返回修改后的序列/排列A。
相关概念:
描述:
针对管道中的每条记录计算表达式,返回原管道
语法:
ch.run (xi:Fi,…)
备注:
针对管道中每条记录计算表达式xi,结果赋给Fi,最后返回原管道ch。
该函数属于附加计算动作。
参数:
ch |
管道 |
xi |
Fi的字段新值 |
Fi |
ch的字段名 |
返回值:
管道
示例:
|
A |
|
1 |
=demo.query("select * from EMPLOYEE") |
|
2 |
=channel() |
创建管道 |
3 |
=A2.run(SALARY+1000:SALARY) |
给管道附加ch.run()计算动作,计算SALARY+1000返回成原管道 |
4 |
=A2.fetch() |
A2管道附加结果集函数ch.fetch(),保留管道当前数据 |
5 |
=A1.push(A2) |
将序列A1中的数据推送到管道 |
6 |
=A2.result() |
|
描述:
游标中的记录计算表达式
语法:
cs.run (xi:Fi,…)
备注:
针对游标中每条记录计算表达式xi,结果赋给Fi,返回原游标。支持多路游标。
参数:
cs |
游标 |
xi |
表达式 |
Fi |
cs的字段名 |
返回值:
原游标cs
示例:
|
A |
|
1 |
=connect("demo").cursor("select * from EMPLOYEE ") |
|
2 |
=A1.run(SALARY+1000:SALARY) |
|
3 |
=A2.fetch() |
|
4 |
=connect("demo").cursor("select DEPT,NAME,BIRTHDAY,1 as AGE from EMPLOYEE ") |
|
5 |
=A4.run(age(BIRTHDAY):AGE) |
|
6 |
=A5.run(AGE -20:AGE) |
|
7 |
=A6.fetch() |
|
相关概念: