run()

阅读(2557) 标签: run,

本章介绍run()函数的多种用法。

r.run(xi,…)

描述:

针对记录计算表达式,返回记录本身。

语法:

r.run(xi,…)

备注:

针对记录r计算表达式x,最后返回记录r。此函数通常用于修改r的字段值,例如xcol1=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

相关概念:

A.run(x1,x2, ......xi)

P.run(xi:Fi,…) 

P.run(xi:Fi,…)

描述:

针对排列中每条记录计算表达式。

语法:

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)

相关概念:

r.run()

A.run(x1,x2, ......xi)

A.run(x1,x2,......xi)

描述:

针对序列/排列中每个成员计算表达式,返回原序列。

语法:

A.run(x)

仅计算一个表达式

A.run(x1,x2, ......xi)

计算多个表达式

备注:

针对序列/排列A中每个成员计算表达式xi,计算过程中可能对A修改,最后返回修改后的A。例如xcol1=col2+1,结果将修改col1字段值,在表达式计算过程中,如果需要引用当前成员,直接使用"~"表示。

参数:

A

序列/排列

x

计算表达式,一般为字段名,或者由字段名组成的合法表达式,可使用"~"引用当前记录。

选项:

@m

数据量大的复杂运算中并行计算提升性能,计算次序不确定。

返回值:

修改后序列/排列A

示例:

利用 "run" 修改成员值

 

A

 

1

=[1,2,3,4,5]

 

2

=A1.run(~=~*~)

[1,4,9,16,25]"~"引用当前成员

 

利用 " run"函数实现EIDNAME的转换

 

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

相关概念:

r.run()

P.run(xi:Fi,…) 

ch.run()

描述:

针对管道中的每条记录计算表达式,返回原管道

语法:

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()

描述:

游标中的记录计算表达式

语法:

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()