历史版本23 :数据集函数概述 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

数据集中的数据列直接拖拽到单元格中后,如果想要条件显示某些数据列的值,那么可以使用数据集函数。

注:参数面板中无法使用这些数据集函数。

2. tablename.select编辑

1)概述


语法
tablename.select(colname,筛选条件1&&筛选条件2&&......)选出数据集某列中符合条件的数据,返回结果是一个数组,相同数据不会合并。
参数1tablename表示数据集名称,注意是报表数据集或者是服务器数据集名,而非数据库中的表名
参数2colname表示列名,不区分大小写。

2)注意事项

  • 筛选条件中的判断既可以使用单等号,也可以使用双等号;字符串也同时可以使用单引号或者是双引号,对结果均没有影响。

  • tablename.select() 与 sql() 的区别主要在于 tablename.select() 是从数据集取数,sql() 是从数据库取数,不需要先定义一个数据集。详情参见 SQL 函数

  • 在公式中,以 0 开头的字符串在匹配判断时,例如:ds1.select(colname,ID="003") 结果会返回对应 ID 为 0、03、003…… 的结果。若只希望返回 003 ,可以使用 EXACT 来做匹配判断。例如:ds1.select(colname,exact(ID,"003"))

3)示例

如数据集 ds1 取出内置 FRDemo 数据库中的「销量」表:

公式
结果
在单元格中输入=ds1.select(销售员)返回数据集 ds1 销售员列中的所有值。
在单元格中输入=ds1.select(销售员,地区 = "华东"&&销量 > 200)返回数据集 ds1 华东地区销售总额超过 200 的销售员。
在单元格中输入=ds1.select(销售员,地区="华东"||地区="华北")返回数据集 ds1 华东地区或华北地区的销售员。

3. tablename.group编辑

tablename.group(colname,筛选条件 1 && 筛选条件 2,升降序):选出数据集某列中符合条件的数据并分组,还可以按照该列进行升降序排列。

1)参数说明

  • tablename:表示数据集名称

  • colname:表示列名。

  • 升降序:为布尔值,true 表示升序,false 表示降序。

2)示例

如数据集 ds1 取出内置 FRDemo 数据库中的「销量」表:

  • 在单元格中输入=ds1.group(销售员),返回数据集 ds1 销售员列中的值,并且相邻数据若相同会进行合并

  • 在单元格中输入=ds1.group(销售员,地区 = "华东"&&销量 > 200),返回数据集 ds1 华东地区销售总额超过 200 的销售员,并且相邻数据若相同会进行合并。

  • 在单元格中输入=ds1.group(销售员,true,false)=ds1.group(销售员,,false),返回数据集 ds1 销售员列中的值,并且其中只要相同就会进行合并,结果为降序排列,中间的参数为条件,若没有条件,可以不写或者使用 true,但是不能省略。

  • 在单元格中输入=ds1.group(销售员,地区=="华东"),返回数据集 ds1 华东地区的销售员,并且相邻数据若相同会进行合并。

  • 在单元格中输入=ds1.group(销售员,地区=="华东",true),返回数据集 ds1 华东地区的销售员,并且会合并所有相同项,结果为升序排列。

4. tablename.select(#0)编辑

1)说明

返回数据集 ds1 中的行号。

2)示例

如数据集 ds1 取出内置 FRDemo 数据库中的「销量」表

在单元格中输入=ds1.select(#0),数据集 ds1 中一共有 45 条数据,因此返回行号 1,2,3,......45。

注:填报场景下 ds1.select(#0) 这个公式如果联动计算有异常,需要检查父子格关系。例如出现下图所示的计算结果时:

函数实现模板.png

注:remoteEvaluate(String) 方法不支持 tablename.select 函数。

5. tablename.value(row,col/colname)编辑

1)说明

获取数据集 ds1 中某行某列的值。

2)示例

如数据集 ds1 取出内置 FRDemo 数据库中的「销量」表:

  • 在单元格中输入=ds1.value(3,2),返回数据集 ds1 中第 3 行第 2 列的值。

  • 在单元格中输入=ds1.value(3,"销售员"),返回数据集 ds1 中第 3 行销售员列的值。

注1:报表的图表标题不支持 value 函数。

注2:决策报表里的图表块不支持该函数。

注3:JavaScript 中不支持该函数。

6. 实例编辑

6.1 实例一:数据集函数返回的数据进行扩展

直接将数据列拖拽到单元格时会自动从上到下扩展。但是使用数据集函数获得数据为一个数组,是显示在一个单元格中的,需要另外给单元格设置扩展属性,数据才会进行扩展。

6.2 实例二:根据不同条件选择使用哪个字段

在单元格中输入如下公式:

=if(条件,ds1.group(customerid),ds2.group(customerid))

并设置其扩展属性为从上到下。

说明条件为真,则单元格使用数据集 ds1 中的 customerid 列,否则使用 ds2 中的 customerid 列 。

6.3 实例三:对数据集函数返回的数据再进行运算

如公式=sum(ds1.select(销量)),返回数据集 ds1 销量列的总和。

sum 求和公式也可以换用其他如 count、max 等。