Here is how to use mergex() function.
Description:
Merge data of the member cursors of a cursor/composite table cursor sequence.
Syntax:
CS.mergex(xi,…)
Note:
CS is a sequence of cursors ordered by [xi,…], and from each cursor a sequence of records can be output. The function merges the records of these cursors by the expression xi. Members of the cursor sequence must be of the same structure. If members are multicursors, they must have the same number of parallel cursors and be segmented synchronically.
When parameter CS is a sequence of composite table cursors or one of multicursors, the merge will be performed automatically by the dimension and the fields before it.
Parameter:
CS |
A sequence of cursors/composite table cursors. |
xi |
An expression. If performing merge by multiple fields, use comma to separate them, for example, x1,x2... |
Option:
@u |
Union operation. Remove the duplicate records from the resulting cursor obtained by unioning the cursor members of CS in certain order. By default, the duplicate records are included |
@i |
Intersection operation. Return a cursor composed of common members of members of CS, the sequence of cursors. |
@d |
Difference operation. Create a new cursor by removing members of CS2&…CSn from CS1 |
@0 |
Put records with null values at the end |
@x |
Only merge distinct records in member cursors |
Return value:
A cursor
Example:
|
A |
B |
C |
|
|
||
1 |
=demo.cursor("select * from STOCKRECORDS") |
|
|
Retrieve data and return a cursor |
|
||
2 |
For |
|
|
|
|
||
3 |
|
=A1.fetch(500) |
|
Fetch data from the cursor |
|||
4 |
|
if B3==null |
break |
|
|||
5 |
|
else |
|
|
|||
6 |
|
|
=B3.sort(STOCKID) |
Sort by STOCKID |
|||
7 |
|
|
=file("D:\\"+"a"+string(A2)+".txt").export@t(C6) |
Store data retrieved each time in a file. |
|||
8 |
|
|
=B1=B1|file("D:\\"+"a"+string(A2)+".txt") |
File object sequence |
|||
9 |
for B1 |
|
|
|
|||
10 |
|
=A9.cursor@t() |
|
|
|||
11 |
|
=C1=C1|B10 |
|
File cursor sequence |
|||
12 |
=C1.mergex(STOCKID) |
|
|
Merge members of the sequence in order by STOCKID. |
|||
13 |
=A12.fetch() |
|
|
Get records from the merged cursor |
|||
14 |
=directory@p("D://*.txt") |
|
|
Below are several txt files: |
|||
15 |
for A14 |
|
|
|
|||
16 |
|
=file(A15).cursor@t() |
=B14=B14|B16 |
|
|||
17 |
=B14.mergex@i(STOCKID) |
=A17.fetch() |
|
|
|||
18 |
=directory@p("D://*.txt") |
|
|
The txt files are the same as the above |
|||
19 |
for A18 |
|
|
|
|||
20 |
|
=file(A19).cursor@t() |
=B18=B18|B20 |
|
|||
21 |
=B18.mergex@u(STOCKID) |
=A21.fetch() |
|
duplicate records have been removed. STOCKID is already ordered.
|
|||
22 |
=directory@p("D://* txt") |
|
|
The txt files are the same as above |
|||
23 |
for A22 |
|
|
|
|||
24 |
|
=file(A23).cursor@t() |
=B22=B22| 24 |
|
|||
25 |
=B22.mergex@d(STOCKID) |
=A25.fetch() |
|
A new cursor created by removing from the first cursor the members of the other cursors; STOCKID is already ordered. |
|||
26 |
=directory@p("D://*.txt") |
|
|
|
|||
27 |
for A26 |
|
|
|
|||
28 |
|
=file(A27).cursor@t() |
=B26=B26|B28 |
|
|||
29 |
=B26.mergex@x(STOCKID) |
=A29.fetch() |
|
Get dinstinct recors from the cursors to create a new cursor ordered by STOCKID |
|||
Related function: