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 sequence 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 #2:Lname, 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,…)