A.new( xi : Fi ,…)

阅读(808) 标签: 计算, 生成,

描述:

计算序列后生成新序表。

语法:

A.new(xi:Fi,…)

备注:

对序列A计算表达式xi,生成一个记录数与A相同,且字段值为xi、字段名为Fi的新序表。

参数:

Fi

结果序表的字段名,缺省用xi ,当xi#i时使用原列名。

xi

表达式,结果作为字段值,缺省为null,省略xi时,不能省略: Fi

A

序列。

选项:

@m

并行计算提升性能。

@i

xi并且计算结果为空时,不生成该行记录。

@o

A是纯序表时,未改变的旧列直接引用,不再新产生,对结果序表进行更新操作时,会同时更新A的内容。

@z

逆向计算,仅适用于非纯序列。

返回值:

序表

示例:

Ø  从单个序表产生

 

A

 

1

=demo.query("select EID,NAME,DEPT,BIRTHDAY from EMPLOYEE")

2

=A1.new(EID:EmployeeID,NAME, #3:dept)

直接产生新序表,如与A1字段名相同,可以省略Fi

3

=A1.new(NAME,age(BIRTHDAY):AGE)

计算字段值生成新序表。

4

=A1.new@m(NAME,age(BIRTHDAY):AGE)

数据量大时提升性能。

5

=file("D:\\txt_files\\data1.txt").import@t()

data1.txt中内容如下:

6

=A5.new@i(CLASS,STUDENTID,SUBJECT,SCORE:score)

SCORE计算结果为空时,对应的该条记录不生成:

Ø  A为纯序表时

 

A

 

1

=demo.query("select EID,NAME,DEPT,BIRTHDAY from EMPLOYEE").i()

返回纯序表。

2

=A1.new@o(EID,NAME, #3:dept)

使用@o选项,未改变的旧列直接引用,不再新产生。

3

=A2(1).NAME="aaa"

修改列值时会同时修改源表的,执行后A2格结果如下:

此时A1格结果如下:

 

Ø  从同序的多个序表关联运算产生

 

A

 

1

=create(Name,Chinese).record(["Jack",99,"Lucy",90])

2

=create(Name,Math).record(["Jack",89,"Lucy",96])

3

=A1.new(Name:Name,Chinese:Chinese,A2(#).Math:Math)

通过A2(#)读取A2同位置的记录

 

Ø  逆向计算

 

A

 

1

=demo.query("select  * from SCORES ")

返回序表:

2

=A1.new(CLASS,STUDENTID,SUBJECT,SCORE,cum(SCORE;CLASS,STUDENTID):F1)

循环函数中迭代运算,对有相同CLASS,STUDENTID值的SCORE值累积计算,结果作为F1列的值,返回的新序表如下:

3

=A1.new@z(CLASS,STUDENTID,SUBJECT,SCORE,cum(SCORE;CLASS,STUDENTID):F1)

使用@z选项,逆向计算:

 

相关概念:

cs.new()