f.create( C,…; x;b )

Read(1156) Label: file, create composite table,

Description:

Create a composite table based on a file.

Syntax:

f.create(C,…;x;b)

Note:

The function creates a composite table using composite table file f and generates a multizone composite table if f is a homo-name files group. Parameter C is a column, which is a dimension if it is preceded by #, of the would-be composite table, and parameter x is a zone table expression. The dimension and all fields before it must be ordered.

Parameter:

f

A composite table file object or a homo-name files group object

C

A column of the would-be composite table

x

A zone table expression, whose result is the integer representing the corresponding zone table

b

Block size, whose unit is byte. Default value is the “Composite table block size” configured in the configuration options; when esProc is integrated into a third-party application, the parameter’s default value is value of blockSize configured in raqsoftConfig.xml file

Option:

@u

Do not compress the file; default is to compress it

@r

Generate a row-wise file while default is columnar storage, which does not support the multicursor

@y

Force to re-create the file even if the target file already exists; defalut is to terminate computation

@p

Use the first field as the grouping key

@v

When columnar storage is used to generate the composite table, check whether each of its columns is pure during data maintenance and save the data type

@t

Create key for the composite table (including multizone composite table) using dimensions and the last key field is the time key; in this case no attached table is allowed

@d

Used on a multizone composite table; the first field after key fields is regarded as the update mark field, whose values fall in three types: null representing to-be-added, true representing to-be-deleted, and false meaning to-be-modified; the program retrieves data from a multizone composite table according to the update mark field valuep

Return value:

A composite table or a homo-name files group

Example:

 

A

 

1

=file("employee1.ctx")

Generate composite table file employee1.ctx.

2

=A1.create(#EID,NAME,GENDER)

Create A1’s base table whose columns are EID, NAME and GENDER; EID is the dimension.  

3

=connect("demo").cursor("select EID,NAME,GENDER,SALARY  from employee where GENDER='M' ").sortx(EID)

 

4

=connect("demo").cursor("select EID,NAME,GENDER,SALARY  from employee where GENDER='F' ").sortx(EID)

 

5

=[A3,A4].mcursor()

Return a multicursor.

6

=file("emp.ctx":[1,2])

Generate a homo-name files group, which contains two files 1.emp.ctx and 2.emp.ctx.

7

=A6.create@y(#EID,NAME,GENDER,SALARY;if(GENDER=="F",1,2))

Create a multizone composite table; if(GENDER=="F",1,2) is zone table expression and @y forces to re-create the target file even if it already exists.

8

=A7.append@i(A5)

Append data in A5’s multicursor to A7’s multizone composite table; each part of the multicursor uniquely corresponds to A7’s one zone table.

9

=file("1.emp.ctx").open().cursor().fetch()

View data in zone table 1.emp.ctx.

10

=file("2.emp.ctx").open().cursor().fetch()

View data in zone table 2.emp.ctx.

Use the first field as the segmentation key:

 

A

 

1

=file("CITIES.ctx")

Generate composite table file CITIES.ctx.

2

=A1.create@p(STATEID,#CID,NAME,POPULATION)

Create the base table of CITIES.ctx and use @p option to make the first field STATEID the grouping key; when the option is absent, use dimension field CID as the default grouping field.

Set the time key:

 

A

 

1

=file("transaction.ctx")

 

2

=A1.create@yt(#UID,#Time,Change,Amount)

Create the composite table’s base table; @t option works to set UID as the basic key and Time as the time key.

3

=file("transaction.txt").cursor@t().sortx(UID,Time)

Return a cursor ordered by UID and Time.

4

=A2.append@i(A3)

Append cursor A3’s data to the base table.

5

=A2.import()

Retrieve data of the base table.

When update mark field is present:

 

A

 

1

=connect("demo").cursor("select  EID,NAME,GENDER  from employee") 

 

2

=A1.derive(null:Defiled)

 

3

=A2.new(EID,Defiled,NAME,GENDER)

Return a cursor, whose content is as follows:

4

=file("ed.ctx":[1,2])

Homo-name files group: 1.ed.ctx and 2.ed.ctx.

5

=A4.create@yd(#EID,Defiled,NAME,GENDER;if(GENDER=="F",1,2))

Create a composite table, set EID as the key, use @d option to make Defield field the deletion mark, and put records where GENDER is F to 1.ed.ctx and the other records to 2.ed.ctx.

6

=A5.append@ix(A3)

Append cursor A1’s data to the multizone composite table.

7

=create(EID,Defiled,NAME,GENDER).record([1,true,,2,false, "ABC","F"]).cursor()

Return a cursor, whose content is as follows:

8

=file("ed.ctx":[3])

 

9

=A8.create@yd(#EID,Defiled,NAME,GENDER;3)

Add zone table 3.ed.ctx

10

=A9.append@i(A7)

Append cursor A7’s data to zone table 3.ed.ctx.

11

=file("ed.ctx":[1,2,3])

 

12

=A11.open()

Open A11’s multizone composite table.

13

=A12.cursor@w()

Return the multizone composite table as a cursor, use @w option to handle the update mark, which means the record where EID field value is 1 recognized as the to-be-deleted and the one where EID is 2 is recognized as to-be-modified.

14

=A13.fetch()

Fetch data in cursor A13.

We can see that the record where EID is 1 isn’t retrieved from the multizone composite table and NAME value of the one where EID is 2 is modified.