Here’s how to use conj() functions.
Description:
Get concatenation of all sequence-type members.
Syntax:
A.conj(x)
Note:
The function concatenates all the sequence-type members in sequence A; compute expression x by loop and then concatenate the results when parameter x is present.
A.conj(x,…) is equivalen to A.(x,…).conj().
Option:
@r |
Recursively concatenate members until there aren’t any sequence members |
@v |
Return a pure sequence when members of A are pure sequences/pure table sequences |
Parameter:
A |
A sequence whose members are sequences |
x |
An expression; can be omitted |
Return value:
Sequence
Example:
When members of A are sequences:
|
A |
|
1 |
=[[1,2,3],[4,5,6]].conj() |
[1,2,3,4,5,6]. |
2 |
=[[1,[2,3]],[2,5,6]].conj() |
[1,[2,3],2,5,6]. |
3 |
=[[1,2,3],[3],[7]].conj() |
[1,2,3,3,7]. |
4 |
=[[1,[2,3]],[2,5,6]].conj@r() |
Use @r option to recursively concatenate members until there isn’t any sequence member and return [1,2,3,2,5,6]. |
5 |
=[[1,2,3],[4,5,6]] |
|
6 |
=A5.conj(~**2) |
Return [2,4,6,8,10,12]. |
7 |
=A5.(~**2).conj() |
Same result as A5. |
When members of A are table sequences or record sequences
|
A |
|
1 |
=demo.query("select top 4 EID,NAME,GENDER from EMPLOYEE where GENDER = 'M' ") |
|
2 |
=demo.query("select top 4 EID,NAME,GENDER from EMPLOYEE where GENDER = 'F' ") |
|
3 |
=[A1,A2].conj() |
Compute concatenation of members of [A1,A2] and return result below:
|
4 |
=[A1,A2].conj(~.(NAME)) |
Compute concatenation of NAME fields of members of [A1,A2] and return ["Matthew","Ryan","Jacob","Daniel","Rebecca","Ashley","Rachel","Emily"] |
5 |
=[A1,A2].(~.(NAME)).conj() |
Same result as A4. |
Return a pure sequence:
|
A |
|
1 |
=[1,2,3].i() |
Return a pure sequence. |
2 |
=[4,5].i() |
Return a pure sequence. |
3 |
=[A1,A2].conj@v() |
Use @v option to return a pure sequence. |
4 |
=ifpure(A3) |
Judge whether A3 is a pure sequence and return true. |
Description:
Attach a computation to a channel, which will split each of its records and perform union on the splitting result.
Syntax:
ch.conj(x)
Note:
The function attaches a computation to channel ch, which will split each of its records according to result of computing expression x into a sequence or a record sequence, union the result members or records, and return the original channel ch.
This is an attachment computation.
Parameter:
ch |
A channel |
x |
An expression that returns a record sequence/table sequence |
Return value:
Channel
Example:
|
A |
|
1 |
=demo.cursor("select * from GYMNASTICSWOMEN") |
Return a cursor.
The above is content of GYMNASTICSWOMEN table. |
2 |
=channel() |
Create a channel. |
3 |
=A2.conj(create(ID,NAME,COUNTRY,SUBJECT,SCORES).record([ID,NAME,COUNTRY,"VAULT" ,VAULT,ID,NAME,COUNTRY,"UNEVENBARS",UNEVENBARS,ID,NAME,COUNTRY, "BALANCEBEAM",BALANCEBEAM,ID,NAME,COUNTRY,"FLOOR",FLOOR])) |
Attach a computation to channel A2, which will perform column-to-row transposition on VAULT, UNEVENBARS, BALANCEBEAM and FLOOR fields, and return the original channel. |
3 |
=A2.fetch() |
Execute the result set function in channel A2 and keep the current data in channel. |
4 |
=A1.push(A2) |
Be ready to push data in A1’s cursor into the channel, but the action needs to wait. |
5 |
=A1.fetch() |
Fetch data from cursor A1 while pushing data into the channel to execute the attached computation and keep the result. |
6 |
=A2.result() |
Get channel A2’s result:
|
Description:
Attach the action of splitting each of the records to a cursor and unioning the result members and return the original cursor.
Syntax:
cs.conj(…)
Note:
Attach a computation to cursor cs. The function computes expression x over each of the records in cursor cs, splits them into a sequence or a record sequence, unions the result members or records, and returns the original cursor cs.
This is a delayed function.
Parameter:
cs |
A cursor/multicursor |
x |
An expression that returns a record sequence (or a table sequence) |
Return value:
Cursor
Example:
|
A |
|
1 |
=demo.cursor("select * from GYMNASTICSWOMEN") |
Return a cursor, whose data is as follows:
|
2 |
=A1.conj(create(ID,NAME,COUNTRY,SUBJECT,SCORES).record([ID,NAME, COUNTRY,"VAULT",VAULT,ID,NAME,COUNTRY,"UNEVENBARS", UNEVENBARS,ID,NAME,COUNTRY,"BALANCEBEAM", BALANCEBEAM,ID,NAME,COUNTRY,"FLOOR",FLOOR])) |
Attach a computation to cursor A1 on which a column-to-row transposition on the cursor’s VAULT, UNEVENBARS, BALANCEBEAM and FLOOR fields will be performed and return the original cursor A1. |
3 |
=A1.fetch() |
Fetch data from cursor A1 on which A2’s computation is already executed (it would be better to fetch data in batches when data amount is huge):
|
Description:
Union the members of a cursor sequence, and return result as a multicursor.
Syntax:
CS.conj()
Note:
The function concatenates members of CS, a sequence of cursors, and returns result as a multicursor. This is actually the merging of data in the cursors. Each cursor in CS must have the same structure.
This is a delayed function.
Parameter:
CS |
A sequence of cursors |
Return value:
Multicursor
Example:
|
A |
|
1 |
=connect("demo").cursor("SELECT top 3 * FROM scores where SUBJECT='English' ") |
Return a cursor, whose data is as follows:
|
2 |
=connect("demo").cursor("SELECT top 3 * FROM scores where SUBJECT='Math' ") |
Return a cursor, whose data is as follows:
|
3 |
=connect("demo").cursor("SELECT top 3 * FROM scores where SUBJECT='PE' ") |
Return a cursor, whose data is as follows:
|
4 |
=[A1,A2,A3] |
Return a sequence consisting of the three cursors. |
5 |
=A4.conj() |
Concatenate records of members cursors in A4’s sequence and return a cursor. |
6 |
=A5.fetch() |
Fetch data from cursor A5: |
Related function:
Description:
Define a computation on a pseudo table, which splits each of its records and concatenates the result records.
Syntax:
T.conj(x)
Note:
The function defines a computation on pseudo table T, where each record will be split into a sequence or a record sequence according to computing expression x and members or records in the splitting result will be concatenated, and returns a new pseudo table.
Parameter:
T |
A pseudo table |
x |
An expression that returns a record sequence or a table sequence |
Return value:
Pseudo table
Example:
|
A |
|
1 |
=create(file).record(["gymn.ctx"]) |
Below is content of composite table gymn.ctx:
|
2 |
=pseudo(A1) |
Return a pseudo table object. |
3 |
=A2.conj(create(ID,NAME,COUNTRY,SUBJECT,SCORES).record([ID,NAME,COUNTRY ,"VAULT",VAULT,ID,NAME,COUNTRY,"UNEVENBARS",UNEVENBARS ,ID,NAME,COUNTRY,"BALANCEBEAM",BALANCEBEAM,ID,NAME,COUNTRY,"FLOOR",FLOOR])) |
Define a computation on A2’s pseudo table, which splits each of its records and concatenates records in the splitting result, and return a new pseudo table. |
4 |
=A3.cursor().fetch() |
Fetch data from A3’s pseudo table while the defined computation in A3 is executed on A2’s pseudo table, and return the following content:
|