数据集函数

avg

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

语法:datasetName.avg(selectExp{,filterExp{,isRootGroupExp{,isContainNull}}})

参数说明:

  1. selectExp 需要计算平均值的字段或表达式,数值类型
  2. filterExp 过滤条件表达式
  3. isRootGroupExp 是否root数据集表达式,默认为false
  4. isContainNull 是否对null元素进行计数

返回类型:数值类型

举例说明:

  1. 例1:ds1.avg(单价),计算数据集ds1中“单价”的平均值。
  2. 例2:ds1.avg(单价,单价>1.2),计算数据集ds1中“单价”大于1.2的平均值。
  3. 例3:ds1.avg(单价*数量)计算数据集ds1中“单价*数量”的平均值。

colcount

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

语法:datasetName.colcount()

参数说明:

返回类型:整数

举例说明:

  1. 例1:ds1.colcount(),假设数据集ds1中列数为7,则结果就为7。

count

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

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

参数说明:

  1. filterExp 过滤条件表达式
  2. isRootGroupExp 是否root数据集表达式,默认为false

返回类型:整数

举例说明:

  1. 例1:ds1.count(单价=2.0),计算数据集ds1中单价等于2.0的记录数。
  2. 例2:ds1.count() 对ds1中当前记录行集中所有记录进行计数,返回记录数。
  3. 例3:ds1.count(,true) 对根记录行集中所有记录进行计数,返回记录数。

countEx

函数说明:计算数据集中,满足条件的、唯一的记录数

语法:datasetName.countEx(selectExp{,filterExp{,isRootGroupExp}})

参数说明:

  1. selectExp 要选择的字段列名
  2. filterExp 过滤条件表达式
  3. isRootGroupExp 是否root数据集表达式,默认为false

返回类型:整数

举例说明:

  1. 例1:ds1.countEx(name) 对ds1中当前记录行集中所有记录进行计数,选出的字段值相同的记录将被视为同一个记录,返回记录数。
  2. 例2:ds1.countEx(name,,true) 对ds1根记录行集中所有记录进行计数,选出的字段值相同的记录将被视为同一个记录,返回记录数。
  3. 例3:ds1.countEx(name,age>35) 从ds1当前记录行集中选出age>35的记录进行计数,选出的字段值相同的记录将被视为同一个记录,返回记录数。

first

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

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

参数说明:

selectExp 选出字段或表达式

descExp 排序的顺序,true代表逆序,false代表顺序

filterExp 过滤条件表达式

sortExp 排序依据表达式

isRootGroupExp   是否root数据集表达式,默认为false

举例说明:

  1. 例1:ds1.first(单价),显示数据集ds1中字段为“单价”的第一条记录。
  2. 例2:ds1.first(单价,true),将数据集ds1按单价逆序排序,然后显示第一条“单价”字段的值。
  3. 例3:ds1.first(单价,false,单价>1.2),将数据集ds1按“单价”顺序排序,然后显示“单价”大于1.2的第一条记录的值,若当前第一条记录不符合条件,那就继续往下找,直到找到符合条件的第一条记录并显示。
  4. 例4:ds1.first(单价,false,单价>1.2,数量),将数据集ds1按“数量”顺序排序,然后显示“单价”大于1.2的第一条记录的值。

getfield

函数说明:获取数据集矩阵中指定坐标位置的字段值,如果只指定x的值,则返回整行数据

语法:datasetName.getfield(x{,y})

参数说明:

x 行坐标(从0开始,不可以为空)

y 列坐标(从0开始,可以为空)

举例说明:

例1:假设数据集ds1中存放了一张九九表,我们将九九表第一行看做是x行,第一列看做是y列,那么:

ds1.getfield(2,3),结果为:6

ds1.getfield(4,7),结果为:28

getone

函数说明:从数据集中根据选出字段或表达式以及选出条件,选出一个数据

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

参数说明:

selectExp  选出字段或表达式
filterExp  过滤条件

举例说明:

  1. 例1:ds1.getone(name,id=@value),当id与当前值相等时,将数据集ds1中与id相对应的name显示。
  2. 例2:ds1.getone(name,id=B3),当id与B3值相等时,将数据集ds1中与id相对应的name显示。

group

函数说明:根据分组表达式,从当前操作的数据集中选出一组组集,在扩展方式为纵向扩展或横向扩展时, 所有附属单元格所用的同一数据集的数据在同一组(Group)

语法:datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,hasSortedExp}}}})

参数说明:

selectExp  选出的分组表达式

descExp 分组结果排序顺序,true为逆序,false为顺序

filterExp  过滤表达式

sortExp  分组后排序依据表达式,为空时按照selectExp进行排序

hasSorted  查询得到的记录集是否已经过排序,用来优化效率,默认为false

举例说明:

  1. 例1:ds1.group(订单ID,false),按数据集ds1中的“订单ID”字段分组,并顺序排序。
  2. 例2:ds1.group(订单ID,true,订单id>=1033),按数据集ds1中的“订单ID”字段分组,并逆序排序,而且筛选出大于等于1033号的订单ID。
  3. 例3:ds1.group(订单ID,false,订单id>=1033,数量),按数据集ds1中的“订单ID”字段分组,按“数量”字段顺序排序,并筛选大于等于1033号的订单ID。

groupEx

函数说明:自定义过滤条件分组函数。对每一条记录依次计算过滤条件表达式,如果满足则把该条记录加入到相应的组里。如果有多个组满足,则这些组中都会含有此条记录。如果都不满足并且有缺省值表达式,则把该条记录加入到缺省组中

语法:datasetName.groupex({hasNullGroup},termExp1,resultExp1{,term2,resultExp2{,...{,defaultExp}}})

参数说明:

hasNullGroup  布尔表达式,true返回空组,false不返回空组,默认值false

termExp(n)  分组过滤条件表达式

resultExp(n)  返回分组条件对应的结果表达式

defaultExp 缺省值表达式,如果所有表达式结果都不满足,则返回计算结果

举例说明:

例1:ds.groupex(true,地区=="华北","华北",城市=="北京","    其中:北京",城市=="天津","    其中:天津",地区=="华南","华南",城市=="深圳","    其中:深圳",地区=="华东","华东","其他"),效果图如下:

last

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

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

参数说明:

selectExp  选出字段或表达式

descExp  排序的顺序,true代表逆序,false代表顺序

filterExp  过滤条件表达式

sortExp  排序依据表达式

isRootGroupExp  是否root数据集表达式,默认为false

举例说明:

  1. 例1:ds1.last(数量),显示数据集ds1中字段为“数量”的最后一条记录。
  2. 例2:ds1.last(数量,true),将数据集ds1按单价逆序排序,然后显示最后一条“数量”字段的值。
  3. 例3:ds1.last(数量,false,数量 >1.2),将数据集ds1按“数量”顺序排序,然后显示“数量”大于1.2的最后一条记录的值,若当前最后一条记录不符合条件,那就继续往上找,直到找到符合条件的最后一条记录并显示。

  4. 例4:ds1.last(数量,false,数量 >1.2,单价),将数据集ds1按“单价”顺序排序,然后显示“数量”大于1.2的最后一条记录的值。

max

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

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

参数说明:

selectExp  需要获得最大值的字段或表达式

filterExp  过滤表达式

isRootGroupExp  是否root数据集表达式,默认为false

举例说明:

  1. 例1:ds1.max(数量),取出数据集ds1中“数量”字段的最大值。
  2. 例2:ds1.max(数量,数量<12),取出数据集ds1中“数量”少于12的记录的最大值。
  3. 例3:ds1.max(数量*单价),取出数据集ds1中“数量*单价”中的最大值。

min

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

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

参数说明:

selectExp 需要获得最小值的字段或表达式

filterExp  过滤表达式

isRootGroupExp  是否root数据集表达式,默认为false

举例说明:

  1. 例1:ds1.min(数量),取出数据集ds1中“数量”字段的最小值。
  2. 例2:ds1.min(数量,数量>12),取出数据集ds1中“数量”大于12的记录的最小值。
  3. 例3:ds1.min(数量*单价),取出数据集ds1中“数量*单价”中的最小值。

rgroup

函数说明:从根数据组(即包含数据集所有记录的组)中选取符合条件的一组组集,并分组。与group的区别在于:group对数据集当前记录行集操作,而rgroup对数据集所有记录操作,所有参数均和group相同。

语法:datasetName.rgroup(selectExp{,descExp{,filterExp{,sortExp{,hasSortedExp}}}})

参数说明:

selectExp: 要选择的字段列,可以是字段列名,也可以是以“#列序号”的形式,#0表示记录行号,#1表示数据源中的第一个字段列......以此类推。当然也可以是表达式

descExp: 指定数据排序的顺序,true表示降序排列,false表示升序排列

filterExp: 数据过滤表达式。

sortExp: 数据排序表达式。为空时按照selectExp进行排序。

hasSorted: 查询得到的记录集是否已经过排序,用来优化效率,默认为false

举例说明:

rselect

函数说明:从根数据组(即包含数据集所有记录的组)中选取符合条件的一组组集。

语法:datasetName.rselect(selectExp{,descExp},filterExp{,sortExp}}

参数说明:

selectExp  选出字段或表达式

descExp  分组表达式结果数据的排序顺序,true为逆序,false为顺序

filterExp  过滤表达式

sortExp  排序依据表达式

举例说明:

select

函数说明:从当前数据组中取出一组数据,在扩展方式为纵向扩展或横向扩展(含默认时自动计算出来的)时, 所有附属单元格所用的同一数据集的数据在同一行(Row)

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

参数说明:

selectExp  选出的字段或其表达式

descExp  选出数据的排序规则,true为逆序,false为正序

filterExp  过滤表达式

sortExp  排序依据表达式

举例说明:

  1. 例1:ds1.select(订单ID,false),将数据集ds1中的“订单ID”字段以列表的形式显示,并顺序排序。
  2. 例2:ds1.select(订单ID,true,订单id>=12),将数据集ds1中的“订单ID”字段以列表的形式显示,并逆序排序,而且筛选出大于等于12号的订单ID。
  3. 例3:ds1.select(订单ID,false,订单id>=12,数量),将数据集ds1中的“订单ID”字段以列表的形式显示,按“数量”字段顺序排序,并筛选大于等于12号的订单ID。

selectex

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

语法:datasetName.selectex(selectExp{,filterExp{,sortExp1:descExp1{,sortExp2:descExp2{,……}}}})

参数说明:

selectExp  选出的字段或其表达式

filterExp  数据过滤表达式

sortExp1  第一优先数据排序表达式,按descExp1排序

descExp1  指定数据的排序顺序,true表示降序排列,默认为false表示升序排列

sortExp2  第二优先数据排序表达式,按descExp2排序

descExp2  sortExp2的排序顺序,true表示降序排列,默认为false

…….  支持多组排序参数

举例说明:

  1. 例1:ds1.selectex(订单ID,订单ID>12),将数据集ds1中的订单ID大于12的记录显示。
  2. 例2:ds1.selectex(订单ID,订单ID>12,数量:false),将数据集ds1中的订单ID大于12的记录显示,并以“数量”字段顺序排序。
  3. 例3:ds1.selectex(订单ID,订单ID>12,数量:false,单价:true),将数据集ds1中的订单ID大于12的记录显示,先以“数量”字段顺序排序,以此为基础,再以“单价”字段逆序排序。

注意

selectex函数中,排序表达式和排序顺序之间用英文“:”号隔开

split

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

语法:datasetName.split(valueExp,listExp{,filterExp{,eqExp{,ascExp{,isRootGroupExp}}}})

参数说明:

valueExp 用于分组的值表达式

ListExp 数据值段列表,同valueExp数据类型相同的数组,要求其中元素从小到大排列

filterExp 过滤表达式

eqExp 返回布尔值的表达式,缺省为false,表示与元素比较时含下限,即值大于等于下限小于上限;当布尔值为true时,表示与元素比较时含上限,即值大于下限小于等于上限

ascExp 返回布尔值的表达式,缺省为true,表示listExp返回的数组按从小到大排,否则为从大到小排

isRootGroupExp   是否root数据集表达式,默认为false

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

举例说明:

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

sum

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

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

参数说明:

selectExp  需求和的字段或表达式

filterExp  条件表达式

isRootGroupExp  是否root数据集表达式,默认为false

举例说明:

  1. 例1:ds1.sum(数量),将数据集ds1中的“数量”字段的所有值求和。
  2. 例2:ds1.sum(数量,数量>12),将数据集ds1汇总的“数量”字段大于12的值求和。
  3. 例3:ds1.sum(数量*单价),将数据集ds1中的“数量”和“单价”字段相乘并求和。

top

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

语法:datasetName.top(selectExp,numExp{,descExp{,filterExp{,sortExp{,isRootGroupExp}}}})

参数说明:

selectExp:要选择的字段列,可以是字段列名,也可以是以“#列序号”的形式,#0表示记录行号,#1表示数据源中的第一个字段列......以此类推。当然也可以是表达式

numExp:要取得记录个数表达式,该字段计算的最终结果为整型

descExp:指定数据排序的顺序,true表示降序排列,false表示升序排列。

filterExp:数据过滤表达式。

sortExp:排序表达式

isRootGroupExp:是否root数据集表达式,默认为false(默认为当前组)

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

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