Mergex()

Read(717) Label: merge, cursor sequence,

Here is how to use mergex() function.

CS.mergex()

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()

 

 Return a cursor composed of their common members, with STOCKID already ordered.

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()

 

 Return a new cursor in which

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:

A.merge()