sortx()

阅读(2096) 标签: sortx,

本章介绍sortx()的多种用法。

ch.sortx()

描述:

对管道中的成员排序。

语法:

ch.sortx(x,…)

备注:

根据xch管道排序,返回成管道。

该函数为结果集函数。

参数:

ch

管道。

x

表达式,根据管道ch的成员升序排序。

返回值:

管道

示例:

 

A

 

1

=demo.cursor("select EID,NAME,DEPT,SALARY from EMPLOYEE order by EID desc")

返回取数游标。

2

=channel()

创建管道。

3

=A2.sortx(SALARY,EID)

根据字段SALARY,EID对管道成员排序。

4

=A1.push(A2)

将游标A1中的数据推送到管道A2

5

=A1.fetch()

A1游标中取数。

6

=A2.result()

结果返回成游标。

7

=A6.fetch()

cs.sortx()

描述:

对游标排序。

语法:

cs.sortx(x,…;n)

备注:

根据xcs游标排序,返回成游标。该函数返回的游标不可回转。

参数:

cs

游标。

x

表达式,根据游标cs的成员升序排序。

n

缓冲区行数,运算过程中如果分组数达到n,则把分组结果写入临时文件中;n<1时缓冲区用缺省值的n倍;缺省值由集算器自动计算。

选项:

@0

将值为null的数据排在最后;@0@n不能一起使用。

@n

提高效率x返回值是正整数时才可用该选项,可以直接用序号定义;@0@n不能一起使用。

@g

参数n解释为分段表达式,先根据表达式n分段,分段后再排序。

返回值:

游标

示例:

 

A

 

1

=demo.cursor("select NAME,BIRTHDAY,HIREDATE from Employee")

返回取数游标。

2

=A1.sortx(BIRTHDAY)

对游标中的BIRTHDAY字段排序。

3

=A2.fetch()

A2游标中取数。

4

=demo.cursor("select * from DEPT")

返回取数游标。

5

=A4.sortx@0(FATHER).fetch()

对游标中的FATHER字段排序,并且将值为null的数据排在最后。

6

=A4.sortx@g(DEPTID;FATHER==12).fetch()

FATHER==12的数据为一组,其它数据为另一组,先根据FATHER==12分组后,再组内根据DEPTID排序。

7

=A1.sortx(BIRTHDAY;2)

对游标中的BIRTHDAY排序,运算过程中分组数达到2,分组结果写入临时文件中。

8

=demo.cursor("select * from SCORES")

 

9

=A8.sortx@n(SCORE).fetch()

SCORE字段返回值是正整数,可以使用选项@n提高排序效率。

cs.sortx()

描述:

对集群游标排序。

语法:

cs.sortx(x,…;n)

备注:

集群游标cs根据x排序,返回集群游标。

选项:

@c

分机结果间不再归并,返回成集群游标,继承分布方式。

参数:

cs

集群游标。

x

表达式,根据集群游标cs的成员升序排序。

n

缓冲区行数,运算过程中如果分组数达到n,则把分组结果写入临时文件中;n<1时缓冲区用缺省值的n倍;缺省值由集算器自动计算。

返回值:

集群游标

示例:

 

A

 

1

[192.168.0.110:8281,192.168.18.143:8281]

 

2

=file("emp.ctx", A1)

 

3

=A2.open()

打开集群组表文件。

4

=A3.cursor()

返回集群游标。

5

=A4.sortx(EID)

将集群游标根据EID排序,结果返回集群游标。

 

f.sortx()

描述:

将数据文件/文件序列排序后生成新的文件。

语法:  

f.sortx(Fi,…;fn ,s)

将数据文件根据Fi排序后生成新的文件。

[fi,…].sortx(Fi,…;fn ,s)

将数据文件序列根据Fi排序后生成新的文件。参数Fi省略时表示简单合并。

备注:

将数据文件f /文件序列[fi,…]根据Fi排序后生成新的文件fn返回非null表示成功。 

参数:

f

集文件/文本文件对象。

[fi,…]

集文件/文本文件序列,其中fi,…为同构文件。

Fi

f中的字段名,用于排序的字段。

fn

集文件/文本文件对象,省略时生成临时文件并返回其上的游标。

s

自选分隔符,缺省默认分隔符是tab。省略参数s时,s前边的逗号可以省略。

f/[fi,…]为集文件/集文件序列时忽略s

选项:

@b

对集文件排序,f/[fi,…]为集文件/集文件序列时必须使用@b选项

@t

第一行记录作为字段名,f/[fi,…]为文本文件时使用。

@c

s缺省时用逗号作为分隔符,f/[fi,…]为文本文件时使用

返回值:

Boolean/游标

示例:

集文件排序:

 

A

 

1

=file("PERFORMANCE.btx")

集文件对象,文件内容如下:

2

=file("PER-cp.btx")

集文件对象

3

=A1.sortx@b(BONUS;A2)

PERFORMANCE.btx根据BONUS字段排序后生成新的集文件PER-cp.btx,内容如下:

4

=A1.sortx@b(BONUS)

省略参数fn,在临时目录中生成临时文件,并返回游标,游标中数据内容同A3

集文件序列排序:

 

A

 

1

=file("f_emp.btx")

集文件对象,文件内容如下:

2

=file("m_emp.btx")

集文件对象,文件内容如下:

3

=file("emp_all.btx")

 

4

=[A1,A2].sortx@b(SALARY,EID;A3)

f_emp.btxm_emp.btx根据SALARYEID字段排序后生成新的集文件emp_all.btx,内容如下:

5

=[A1,A2].sortx@b(SALARY)

省略参数fn,返回游标。

省略参数Fi,集文件序列简单合并:

 

A

 

1

=file("f_emp.btx")

集文件对象,文件内容如下:

2

=file("m_emp.btx")

集文件对象,文件内容如下:

3

=file("emp_gb.btx")

 

4

=[A1,A2].sortx@b(;A3)

f_emp.btxm_emp.btx简单合并后生成新的集文件emp_gb.btx,内容如下:

  文本文件排序:

 

A

 

1

=file("emp.txt")

emp.txt文件内容如下:

2

=file("emp-cp.csv")

 

3

=A1.sortx@ct(NAME;A2)

emp.txt内容按照NAME排序后,写入到文件emp-cp.csv中,emp.txt中字段分隔符为逗号,将第一行作为字段名。

4

=A2.import@t()

读取emp-cp.csv文件,返回结果如下: