cs.news()

Read(754) Label: field value, update, cursor,

Description:

Generate multiple records based on a record sequence, concatenate them into a new table sequence and return it to the original cursor.

Syntax:

cs.news(X;xi:Fi,…)

Note:

The function attaches a computation to cursor cs, which computes expression xi on record sequence X , makes the results values of the new field Fi, and generates multiple records to form a new table sequence, and returns the table sequence to the original cursor cs.

 

This is a delayed function.

Parameter:

cs

A cursor

X

Record sequence

xi

An expression, whose values are uses as the new field values. It is treated as null if omitted; in that case, : Fi can’t be omitted. The sign # is used to represent a field with a ordinal number

Fi

Filed name of the new cs; use the identifiers parsed from expression xi if it is omitted

Option:

@1

Left join, which creates an empty record when record sequence X is empty

Return value:

Cursor

Example:

 

A

 

1

=demo.cursor("select EID,NAME,DEPT,GENDER,BIRTHDAY,SALARY from EMPLOYEE")

Return a cursor.

 

2

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

Return a table sequence:

3

=A2.group(GENDER;~:gup)

Group table sequence A2 by GENDER field and return result set as follows:

4

=A1.groupx(GENDER;avg(SALARY):avg)

Group cursor A1 by GENDER field, compute average SALARY value in each group and return a cursor; below is data in the result cursor:

5

=A4.join(GENDER,A3:GENDER,gup)

Attach a computation to cursor A4, which performs foreign key join with A3 and return the original cursor A4; below is the data of cursor A4 where A5’s computation is executed:

6

=A4.news(gup;EID,#2:Lname,GENDER,age(~.BIRTHDAY):Age,SALARY+50: Salary,avg:AvgSalary)

Attach a computation to cursor A4 to compute gup field values, renames the 2nd field Lname using expression #2Lname, form a table sequence consisting of EID, Lname, GENDER, Age, Salary and AvgSalary to return cursor A4, and returns the original cursor.

7

=A4.fetch()

Fetch data from cursor A4 where A6’s computation is executed (it would be better to fetch data in batches when a huge amount of data is involved):

 

When @1 option works:

 

A

 

1

=demo.cursor("select  EID,NAME,DEPT,GENDER,BIRTHDAY,SALARY from EMPLOYEE")

Return a cursor.

 

2

=demo.query("select EID,NAME,DEPT,GENDER,BIRTHDAY,SALARY from EMPLOYEE where GENDER='M' ")

Return a table sequence:

3

=A2.group(GENDER;~:gup)

Group table sequence A2 by GENDER field and return result set as follows:

4

=A1.groupx(GENDER;avg(SALARY):avg)

Group cursor A1 by GENDER field, compute average SALARY value in each group and return a cursor; below is data in the result curso

5

=A4.join(GENDER,A3:GENDER,gup)

Attach a computation to cursor A4, which performs foreign key join with A3 and returns the original cursor A4; below is data in cursor A4 where the attached computation is executed:

6

=A4.news@1(gup;EID,NAME,GENDER,age(~.BIRTHDAY):Age,Salary,avg:AvgSalary)

Attach a computation to cursor A4 to compute gup field values, form a table sequence consisting of EID, NAME, GENDER, Age, Salary and AvgSalary to return cursor A4, and returns the original cursor. @1 option enables left join to create an empty record when the corresponding record in record sequence X is empty.

7

=A4.fetch()

Fetch data from cursor A4 where A6’s computation is executed; below is the result set:

Related functions:

A.news(X;xi:Fi,…)