反馈已提交

网络繁忙

数据集函数概述

  • 文档创建者:lu123
  • 历史版本:43
  • 最近更新:TW 于 2023-10-16
  • 1. 概述

    1.1 应用场景

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

    1.2 注意事项

    1)参数面板中不支持使用。

    2)不支持模拟计算,模拟计算详情参见:2.4节

    3)不支持定义了 数据集参数 的数据集。

    4)暂不支持文件数据集。

    5)决策报表填报事件不支持使用数据集函数。

    6)FineVis 数据可视化 插件自 1.14.1 版本起支持该函数。

    2. tablename.select

    1)概述

    语法
    tablename.select(colname,筛选条件1&&筛选条件2&&......)

    筛选出数据集某列中符合条件的数据,返回结果是一个数组,相同数据不会合并

    注:当仅返回一条数据时,数据类型是「字符串」而不是数组。

    参数1tablename

    表示数据集名称,注意是「报表数据集」或者是「服务器数据集」名,而非数据库中的表名

    注:数据集名称尽量使用纯中文/纯英文,不要使用数字或特殊符号,否则函数可能失效。

    参数2colname

    表示列名,不区分大小写。

    注:若列名为中英数字混合,建议加上引号,确保正确读取。例如ds1.select("1月产品名称")

    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"))

    • 如果想要进行模糊查询,可通过与 Find 函数 嵌套实现,例如公式:ds1.select(产品名称,FIND("苹果",产品名称)!=0),如下图所示:

    3)示例

    例如数据集 ds1 取出内置 FRDemo 数据库中的「S产品」表,分别在单元格中输入以下公式:


    公式
    结果
    在 A2 单元格中输入=ds1.select(产品名称)

    返回数据集 ds1 产品名称列中的所有产品名称。

    在 B2 单元格中输入=ds1.select(产品名称,库存量>20&&订购量 > 30)

    返回数据集 ds1 库存量大于 20 且订购量大于 30 的产品。

    在 C2 单元格中输入=ds1.select(产品名称,供应商="1"||库存量>30)

    返回数据集 ds1 供应商为1或者库存量大于 30 的产品。


    3. tablename.group

    1)概述

    语法
    tablename.group(colname,筛选条件 1 && 筛选条件 2,升降序)筛选出数据集某列中符合条件的数据,若相邻数据相同则进行合并,还可以按照该列进行升降序排列。
    参数1tablename表示数据集名称,注意是「报表数据集」或者是「服务器数据集」名,而非数据库中的表名
    参数2colname表示列名,不区分大小写。
    参数3升降序

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

    注:若使用升降序参数,那么必须写筛选条件参数,若没有筛选条件,可以用 true 或者空格代替:例如=ds1.group(销售员,true,false)或者=ds1.group(销售员, ,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(#数字)

    1)概述

    语法
    tablename.select(#数字)返回数据集中的行号或者对应列数据
    参数1tablename表示数据集名称,注意是「报表数据集」或者是「服务器数据集」名,而非数据库中的表名
    参数2数字

    表示列号。

    如果tablename.select(#0)则输出数据表行号数组(数据条数)

    tablename.select(#1)则输出数据库表中第一列的数组数据

    2)注意事项

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

    函数实现模板.png

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

    3)示例

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

    公式结果
    在单元格中输入=ds1.select(#0)

    返回数据集中的行号

    在单元格中输入=ds1.select(#1)

    返回数据集中对应列数据

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

    1)概述

    语法
    tablename.value(row,col/colname)获取数据集 ds1 中某行某列的值。
    参数1tablename表示数据集名称,注意是「报表数据集」或者是「服务器数据集」名,而非数据库中的表名
    参数2row

    表示行号

    参数3col/colname表示列号或者列名

    2)注意事项

    • 报表的图表标题不支持该函数。

    • 决策报表里的图表块不支持该函数。

    • 决策报表里的报表块标题不支持该函数。

    • JavaScript 中不支持该函数。

    • FVS 中仅表格组件支持该函数。

    3)示例

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

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

    6. 应用

    6.1 根据不同条件选择使用哪个字段

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

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

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

    公式说明:

    公式说明
    =if(条件,ds1.group(customerid),ds2.group(customerid))

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


    6.2 对数据集函数返回的数据再进行运算

    在单元格输入公式=sum(ds1.select(销量)),返回数据集 ds1 销量列的总和。

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

    7. 注意事项

    7.1 数据集函数返回的数据进行扩展

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

    例如在单元格输入公式=ds1.group(销售员,地区=="华东",true),设置扩展方向为「纵向」,如下图所示:

    预览报表如下图所示:

    附件列表


    主题: 报表专题
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持