目录

数据集函数

 数据集函数

 avg()

函数说明: 从数据集中,从满足条件的记录中,算出给定字段或表达式的平均值

语法: datasetName.avg(selectExp{,filterExp{,rootGroupExp{,containNull}}})

参数说明: selectExp 需要filterExp 过滤条件表达式计算平均值的字段或表达式,数值类型  rootGroupExp 是否root数据集表达式 containNull 是否对null元素进行计数

返回值: 实数

举例:

例1:ds1.avg(score,sex=="1") 表示从数据集的当前记录行集中过滤出sex为"1"的记录集合,求得其score字段的平均值,score字段要求为数值型。

例2:ds2.avg(quantity*price) 表示对数据集的当前记录行集求得表达式quantity*price的平均值

例3:ds1.avg(score,,,false) 求得数据集的当前记录行集中score字段的平均值,如果某条记录的score字段值为空,则此条记录不计入记录数,score字段要求为数值型

 bselect1()

函数说明: 此函数功能等同select1(),但是算法不同,采用二分法,适用于数据集记录已经按照参考字段排好序的情况,运算速度比select1()快

语法: datasetName.bselect1(selectExp,"referExp1,referDescExp1,referValueExp1")

参数说明: selectExp 选出字段或表达式 referExp1 参考字段表达式 referDescExp1 参考字段表达式的数据顺序,true表示降序排列,false表示升序排列 referValueExp1 参考字段的值表达式,一旦找到参考字段和该值相同的记录,即返回selectExp的值 ...... 参考字段及其值可以多个,如果是多个,则找到多个参考字段都和值匹配的记录才返回 rootGroupExp 是否root数据集表达式

返回值: 数据类型不定,由selectExp的运算结果决定

示例:

例1:ds1.bselect1(name,"id,false,value()") 采用二分法,找到数据集ds1中id和当前格的值相等的记录,返回其name字段值

例2:ds1.bselect1(name,"id,false,value();class,false,A1;sex,true,B1") 采用二分法,找到数据集ds1中id和当前格的值相等、class和A1相等且sex和B1相等的记录,返回其name字段值。注意这三个条件在表达式中的顺序必需和它们在数据集中的排序先后相同,也就是说,在数据集中是先对id升序排序,再对class升序排序,最后对sex进行降序排序的。

 colcount()

函数说明: 获得数据集的列数

语法: datasetName.colcount()

返回值: 整数

举例: 例1:ds1.colcount() 获得ds1数据集的列数,整数类型

 count()

函数说明: 计算数据集当前记录行集中,满足条件的记录数

语法: datasetName.count({filterExp{,rootGroupExp{,nullCheckExp}}})

参数说明: filterExp 条件表达式,如果全部选出,则不要此参数, rootGroupExp 是否root数据集表达式 nullCheckExp 检查某一条记录是否为空的标达式

返回值: 整数

举例:

例1:ds1.count() 表示对ds1中当前记录行集中所有记录进行计数,返回记录数。

例2:ds1.count(true) 含义同上,但是运算速度比ds1.count()慢,因此当记录全部选出时,建议不要true

例3:ds1.count(quantity>500) 表示从ds1当前记录行集中选出quantity>500的记录进行计数,返回记录数。 例4:ds1.count(,,ID) 表示当前记录行集中ID不为空的纪录数目

 dcount()

函数说明: 计算数据集当前记录行集中,满足条件的记录数,选出字段记录的行将被视为同一个记录

语法: datasetName.dcount(<select_exp>{filterExp,{rootGroupExp}})

参数说明: select_exp 要选择的字段列名/列号,,也可以是表达式。 列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 filterExp 条件表达式,如果全部选出,则不要此参数, rootGroupExp 是否root数据集表达式

返回值: 整数

举例:

例1:ds1.dcount( name ) 从数据源ds1中选取name字段列的所有值,name相同的纪录被视为同一纪律

 dselect()

函数说明: 从数据集的当前行集中选取符合条件的记录,选出字段相同的行将会只保留第一行

语法: datasetName.dselect( <select_exp>{, filter_exp{,rootGroupExp}} )

参数说明: select_exp 要选择的字段列名/列号,,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 filter_exp 数据过滤表达式,如果全部选出,则此参数省略,仅用“,”占位。 rootGroupExp 是否root数据集表达式

返回值: 一组数据的集合,数据类型由select_exp的运算结果决定

函数示例: 例1:ds1.dselect( name ) 从数据源ds1中选取name字段列的所有值,name相同的纪录只会保留第一个

 enumGroup()

函数说明: 根据表达式的不同计算结果,返回不同的值,然后按这些值进行分组。本函数:从左到右计算,先出现的表达式先算,如果出现满足的表达式,则返回相应的结果,后面的不再计算。如果没有一个表达式满足条件,而且有缺省值表达式,则返回缺省值,否则返回null。

语法: ds.enumGroup({,termExp1,resultExp1{,term2,resultExp2{,...{,defaultExp}}}})

参数说明: termExp(n) 条件表达式 resultExp(n) 返回结果表达式 defaultExp 缺省值表达式,如果所有表达式结果都不满足,则返回本表达式计算结果

 field()

函数说明: 获得数据集当前行或者当前组中第一行中,指定列的数据

语法: datasetName.field( stringExp ) datasetName.field( #colNo )

参数说明: stringExp 数据集列名的表达式 #colNo 数据集列号的表式方式,如第二列用#2,行号列用#0

返回值: 数据集的列对象,只能作为表达式的元素使用,不能作为最终单元格的值

说明: 此函数性能比较低,请慎用

举例:

例1:在报表中写入如下表达式

该报表相当于在B1中根据数据集ds2的列数进行横向扩展,在A3中根据数据集的行数进行纵向扩展,然后在B2和B3中动态获取列名和列对象,算出列值,这种用法可以实现动态列报表

该报表的预览结果如下:

图 


 filter()

函数说明: 从数据集中按顺序检索到符合过滤条件的所有记录,返回纪录的组,注意该函数不能返回具体值,函数只能用在附加数据集中

语法: datasetName.filter(filterExp{,rootGroupExp})

参数说明: filterExp 过滤条件 rootGroupExp 是否root数据集表达式

返回值: 返回行

示例:

例1:ds1.filter(name=="1") 返回数据集ds1中记录的name字段是"1"的所有行

例2:ds.filter(score>90) 从数据集ds1中检索出成绩大于90的记录

 filter1()

函数说明: 从数据集中按顺序检索到符合过滤条件的第一条记录,返回该行,注意该函数不能返回具体值,函数只能用在附加数据集中

语法: datasetName.filter1(filterExp{,rootGroupExp})

参数说明: filterExp 过滤条件 rootGroupExp 是否root数据集表达式

返回值: 返回行

特别说明: 当对数据集运用过滤条件后确定只剩一条记录时,虽然filter的运算结果一样,但是filter1运算效率高,因为他只要找到符合条件的记录,就不继续检索了,而filter要检索完所有的记录才返回。

示例:

例1:ds1.filter1(name=="1") 返回数据集ds1中第一条记录的name字段是"1"的行

例2:ds1.filter1(score>90) 从数据集ds1中检索出成绩大于90的记录

 filterCross()

函数说明: 从数据集中按顺序检索到符合过滤条件的所有记录,返回纪录的组,注意该函数不能返回具体值,函数只能用在附加数据集中

语法: datasetName.filterCross(filterExp{,rootGroupExp})

参数说明: filterExp 过滤条件 rootGroupExp 是否root数据集表达式

返回值: 返回行

示例:

例1:ds1.filterCross(name=="1") 返回数据集ds1中记录的name字段是"1"的所有行

例2:ds.filterCross(score>90) 从数据集ds1中检索出成绩大于90的记录

本函数与filter函数的唯一区别是:filter是拿当前行或者组的第一行与ds进行过滤,而本函数则是拿当前的行或者组与ds进行过滤.当过滤条件里用到的列是当前分组,或者列表中指定的列时,这两个函数运算的结果是相同的,这个时候要用filter.建议尽量少用这个函数,因为当数据量大时,本函数的运算速度极其慢.

 first()

函数说明: 从数据集满足条件的记录集合中,选出第一条记录,返回给定字段或表达式的值

语法: datasetName.first(selectExp{,descExp{,filterExp{,sortExp{,rootGroupExp}}}})

参数说明: selectExp 要选择的字段列,可以是字段列名/列号,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 descExp 排序的顺序,true代表逆序,false代表顺序 filterExp 过滤条件表达式 sortExp 排序依据表达式 rootGroupExp 是否root数据集表达式

返回值: 数据类型不定,由selectExp的计算结果决定

举例:

例1:ds1.first(name,true,score>90,id) 从ds1数据集中选出成绩大于90的记录,按照id逆序排列,返回第一条记录的name字段值

例2:ds1.first(name,true,,score) 对ds1数据集的所有记录按照成绩逆序排列,然后返回第一条记录的name字段值

例3:ds1.first(name) 返回数据集ds1中第一条记录的name字段值

 group()

函数说明: 根据分组表达式,从数据集中选出一组组集。

语法: datasetName.group( <selectExp>, ,<filterExp> ) //适用于不需要排序或数据集中已排好序 datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,groupSortExp{,groupDescExp{,rootGroupExp}}}}}})

参数说明: selectExp 选出的分组表达式,可以是字段列名/列号,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 descExp 分组前记录的排序顺序,true为逆序,false为顺序 filterExp 过滤表达式 sortExp 分组前记录的排序依据表达式 groupSortExp 分组后对组的排序表达式,一般是汇总运算的表达式,如组合计等 groupDescExp 组排序顺序,true为逆序,false为顺序 rootGroupExp 是否root数据集表达式

返回值: 一组数据的集合,数据类型由selectExp的运算结果来决定

示例:

例1:ds1.group(class) 把数据集ds1中所有记录按照class字段进行分组,并返回每组的class值组成的集合

例2:ds1.group(class, true ) 把数据集ds1中所有记录按照class字段降序排列,然后根据class进行分组,并返回每组的class值组成的集合

例3:ds1.group(class,false,sex=='1') 从数据源ds1中选取性别为"1"的记录,按照class字段升序排列,然后根据class进行分组,并返回每组的class值组成的集合

例4:ds1.group(class, true, sex=='1', id ) 从数据源ds1中选取性别为"1"的记录,按照id字段降序排列,然后根据class进行分组,并返回每组的class值组成的集合

例5:ds1.group(省份,true,,,ds1.sum(工业产值),true) 对数据集ds1按照省份进行分组,分组后求出每组的sum(工业产值),然后按照这个汇总值对组进行逆序排列

 groupEx

函数说明: 根据分组表达式,从数据集中选出一组组集。

语法: datasetName.groupEx(selectExp{,filterExp{, "sort_exp1, desc_exp1{;sort_exp2, desc_exp2{;...}}"{,groupSortExp{,groupDescExp{,rootGroupExp}}}}})

参数说明: selectExp 选出的分组表达式,可以是字段列名/列号,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 filterExp 过滤表达式 sort_exp1 数据排序表达式。按desc_exp1排序。 desc_exp1 指定数据排序的顺序,true表示降序排列,false表示升序排列。 sort_exp2 数据排序表达式。将sort_exp1相同的字段,按desc_exp2排序。 desc_exp2 指定数据排序的顺序,true表示降序排列,false表示升序排列。 ...... groupSortExp 分组后对组的排序表达式,一般是汇总运算的表达式,如组合计等 groupDescExp 组排序顺序,true为逆序,false为顺序 rootGroupExp 是否root数据集表达式 返回值: 一组数据的集合,数据类型由selectExp的运算结果来决定

示例:

例1:ds1.groupEx(sex,,"grade,true;name") 从数据源ds1中选取grade字段列的值并降序排列,然后把name相同的按成绩升序排列,然后按sex字段分组

 isfield()

函数说明: 判断数据集中是否有该列名

语法: datasetName.isfield( stringExp )

参数说明: stringExp 待判断的列名表达式

返回值: 布尔型

举例:

例1:ds1.isfield("score") 返回true,表示ds1中含有score这个列名

 last()

函数说明: 从数据集满足条件的记录集合中,选出最后一条记录,返回给定字段或表达式的值

语法: datasetName.last(selectExp{,descExp{,filterExp{,sortExp{,rootGroupExp}}}})

参数说明: selectExp 要选择的字段列,可以是字段列名/列号,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 descExp 排序的顺序,true代表逆序,false代表顺序 filterExp 过滤条件表达式 sortExp 排序依据表达式 rootGroupExp 是否root数据集表达式

返回值: 数据集中最后一条记录指定字段的值,数据类型由selectExp的运算结果决定

示例:

例1:ds1.last(name,true,,score) 将ds1数据集的记录按成绩逆序排列,并返回最后一条记录的name字段值

 max()

函数说明: 从数据集中,从满足条件的记录中,选出给定字段或表达式的最大值

语法: datasetName.max(selectExp{,filterExp{,rootGroupExp}})

参数说明: selectExp 需要获得最大值的字段或表达式如果用列号,列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 filterExp 过滤表达式 rootGroupExp 是否root数据集表达式

返回值: 集合中的最大值,数据类型不定,由selectExp的运算结果决定

示例:

例1:ds1.max(score) 获得数据集ds1中的score最大值

例2:ds1.max(score,sex=="1") 获得数据集ds1中sex=="1"的记录中score最大值

 min()

函数说明: 从数据集中,从满足条件的记录中,选出给定字段或表达式的最小值

语法: datasetName.min(selectExp{,filterExp{,rootGroupExp}})

参数说明: selectExp 需要获得最小值的字段或表达式如果用列号,列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 filterExp 过滤表达式 rootGroupExp 是否root数据集表达式

返回值: 集合中的最大值,数据类型不定,由selectExp的运算结果决定

示例:

例1:ds1.min(score) 获得数据集ds1中的score最小值

例2:ds1.min(score,sex=="1") 获得数据集ds1中sex=="1"的记录中score最小值

 plot()

函数说明: 根据数据值段进行分组,俗称“按段分组”

语法: datasetName.plot( valueExp, listExp{, filterExp{, eqExp{, ascExp{,rootGroupExp}}}} )

参数说明: valueExp 用于分组的值表达式 ListExp 数据值段列表,同valueExp数据类型相同的数组,要求其中元素从小到大排列 filterExp 过滤表达式 eqExp 返回布尔值的表达式,缺省为false,表示与元素比较时不包含等于 ascExp 返回布尔值的表达式,缺省为true,表示listExp返回的数组按从小到大排,否则为从大到小排 rootGroupExp 是否root数据集表达式

特别说明: ascExp为true(即listExp从小到大排列)时,eqExp为true时,与元素比较时采用<=,eqExp为false时,采用<;ascExp为false(即listExp从大到小排列)时,eqExp为true时,与元素比较时采用>=,eqExp为false时,采用>

返回值: 整数组,代表记录按值段分组后组的顺序,如list(0,1,2,3)代表第一组,第二组,第三组,第四组因此,定义完单元格数据值表达式后还需要定义显示值表达式,比如第一组代表不及格,第二组代表及格等等

示例:

例1:ds1.plot(成绩,list(60,80,90),,true,false) 返回值为list(0,1,2,3) 对数据集ds1的记录按成绩段进行分组,60分以下、60-80,80-90,90分以上等四组同时定义显示值表达式为:map(list(0,1,2,3),list(不及格,及格,良好,优秀))

例2:ds1.plot(成绩,arg1,,true,false) 其中arg1为整数组,其值为list(60,70,80,90)显示值表达式为:map(to(0,count(arg1)),arg2),其中arg2为字符串组,其值为{"不及格","及格","中","良好","优秀"}本例通过参数动态控制分组值段以及结果组的显示值

 select()

函数说明: 从数据集的当前行集中选取符合条件的记录

语法: datasetName.select( <select_exp>{, desc_exp{, filter_exp{, sort_exp{,rootGroupExp}}}} ) datasetName.select(<select_exp>, , <filter_exp> )//适用于不需排序或数据集中已排好序

参数说明: select_exp: 要选择的字段列名/列号,,也可以是表达式。 列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 desc_exp: 指定数据排序的顺序,true表示降序排列,false表示升序排列。 filter_exp: 数据过滤表达式,如果全部选出,则此参数省略,仅用“,”占位。 sort_exp: 数据排序表达式。当此项为空时先检查desc_exp是否为空,如果为空,则不排序,否则使用select_exp排序。 rootGroupExp 是否root数据集表达式

返回值: 一组数据的集合,数据类型由select_exp的运算结果决定 函数

示例:

例1:ds1.select( name ) 从数据源ds1中选取name字段列的所有值,不排序

例2:ds1.select( #2, true ) 从数据源ds1中选取第二个字段列的所有值并降序排列

例3:ds1.select( name,false,sex=='1') 从数据源ds1中选取性别为男性('1')的name字段列的值并升序排列

例4:ds1.select( name, true, sex=='1', id ) 从数据源ds1中选取性别为男性的name字段列的值并按id字段降序排列

 select1()

函数说明: 从数据集中按顺序检索到符合过滤条件的第一条记录,返回其selectExp值

语法: datasetName.select1(selectExp{,filterExp{,rootGroupExp}})

参数说明: selectExp 要选择的字段列名/列号,,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 filterExp 过滤条件 rootGroupExp 是否root数据集表达式

返回值: 数据类型不定,由selectExp的运算结果决定 特别说明: 当对数据集运用过滤条件后确定只剩一条记录时,虽然select的运算结果一样,但是select1运算效率高,因为他只要找到符合条件的记录,就不继续检索了,而select要检索完所有的记录才返回。

示例:

例1:ds1.select1(name) 返回数据集ds1中第一条记录的name字段值

例2:ds1.select1(name,score>90) 从数据集ds1中检索出成绩大于90的记录,返回第一条记录的name字段值

 selectEx()

函数说明: 从数据集的当前行集中选取符合条件的记录

语法: datasetName.selectEx( <select_exp>{filter_exp{, "sort_exp1, desc_exp1{;sort_exp2, desc_exp2{;...}}"{,rootGroupExp}}} )

参数说明: elect_exp 要选择的字段列名/列号,,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 filter_exp 数据过滤表达式,如果全部选出,则此参数省略,仅用","占位。 sort_exp1 数据排序表达式。按desc_exp1排序。 desc_exp1 指定数据排序的顺序,true表示降序排列,false表示升序排列。 sort_exp2 数据排序表达式。将sort_exp1相同的字段,按desc_exp2排序。 desc_exp2 指定数据排序的顺序,true表示降序排列,false表示升序排列。 ...... rootGroupExp 是否root数据集表达式

返回值: 一组数据的集合,数据类型由select_exp的运算结果决定

函数示例:

例1:ds1.selectEx( name,sex=='1',"name;grade,true") 从数据源ds1中选取性别为男性('1')的name字段列的值并升序排列,然后把姓名相同的按grade降序排列

 sum()

函数说明: 从数据集当前记录行集中检索出符合条件的记录集合,算出给定字段或表达式的汇总值

语法: datasetName.sum(selectExp{,filterExp{,rootGroupExp}})

参数说明: selectExp 需求和的字段或表达式 filterExp 条件表达式 rootGroupExp 是否root数据集表达式

返回值: 实数

示例:

例1:ds1.sum(quantity) 求得数据集ds1当前行集中quantity字段的汇总值

例2:ds1.sum(quantity,productid=="1") 从数据集ds1当前行集中检索出productid=="1"的记录集,求得其quantity字段的汇总值

 top()

函数说明: 从数据集中符合条件的记录中选取头num条并返回

语法: datasetName.top( <select_exp>,<num_exp>{, desc_exp{, filter_exp{,sort_exp{,rootGroupExp}}}} )

参数说明: select_exp:要选择的字段列,可以是字段列名/列号,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 num_exp 要取得记录个数表达式,该字段计算的最终结果为整型 desc_exp 指定数据排序的顺序,true表示降序排列,false表示升序排列。 filter_exp 数据过滤表达式。 sort_exp 排序表达式。 rootGroupExp 是否root数据集表达式

返回值: 一组数据的集合,数据类型由select_exp的运算结果决定

示例:

例1:ds1.top(name,10) 返回数据集ds1中头十条记录的name字段值

例2:ds1.top(name,10,true,,score)       将数据集记录按成绩降序排列,返回头十条记录的name字段值