【扩展报表】报表执行报错,提示#BAD FUNCTION 或 Large amount of data display incomplete

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

【扩展报表】报表执行报错,提示#BAD FUNCTION 或 Large amount of data display incomplete

问题描述:

        如下图所示,报表执行报错,单元格中显示:#bad function!

        但缩小查询范围,可以查询出结果来。


        或者提示:#SYNTAX! Large amount of data display incomplete


        遇到这种情况,可以先打开扩展报表控制台(路径:报表工具 - 菜单栏“工具 - 扩展报表控制台”子菜单),再去执行报表。执行完,则在扩展报表控制台可以看到有如下错误,或者到客户端的log4j.log也可以看到报错日志。而且,此时找到扩展报表的这个数据集,双击执行数据集往往也会报同样的错(新版本数据集执行使用虚模式取数,即使数据量超出了限制也不会报错的)。


分析解答:

       单次查询不超过100万个单元格,即一次查询的数据不能超过100万(行*列)。这个限制不只是针对扩展报表,而是针对所有的查询请求。这个限制可以在BOS管理控制台-工具-控制台参数中看到,如截图:

        当查询结果集超过这个限制的时候,执行扩展报表的数据集时就会提示“fetched too much rows, cell number exceeding limit 1000000”,而执行报表的话就会提示“#bad function!”。

        如果数据量超过100万,则可以修改控制台的参数,但是结果集参数设置过大,相当于业务返回数据量可以更多,而EAS实例内存是固定的,返回数据量越多,则占用实例内存越大,从而会导致实例频繁宕机。(参考贴:https://vip.kingdee.com/article/43437546244997126


        另,如果只是提示“fetched too much rows:100001”,那说明没有超出exceptionCellNumber的限制,但是超出了行数限制:

Caused exception message is: fetched too much rows:100001 [Client -- String Serialize] at com.kingdee.bos.dao.query.server.QueryDataAccess.getRowSetForRealPage(QueryDataAccess.java:2595) at rpc_generate._PROXY_com_1_kingdee_1_bos_1_dao_1_query_1_server_1_IQueryDataAccess.pi29(Unknown Source)

这种场景,可以criticalIDList参数的值,如下图:


        注意:数据量较大,例如接近100w的时候,报表执行往往也会很慢。建议:

1)添加过滤条件以便减少数据量;

2)数据集的输出字段在报表中不展示,这样的字段不要查询出来,减少列也可以减少数据量;

3)如果报表是汇总型报表,可以在数据集中先做好汇总统计,这样可以减少数据量,而报表只做展示即可;

4)拆分报表,不要显示在一张报表中,例如使用报表联查,从汇总数据查看明细数据。

5)扩展报表是一次性取数、实模式展现数据的。可以开发序事簿页面虚模式或者使用轻分析工具(轻分析的介绍,详见帖:https://q.kingdee.com/support/index.html?version=1.0&docId=Tblcinblg


拓展:

    执行报表后单元格显示#bad function,往往都是因为数据集执行报错了,这种情况需要结合报错来分析数据集的sql查询脚本是否有问题。例如下面截图所示:


【扩展报表】报表执行报错,提示#BAD FUNCTION 或 Large amount of data display incomplete

问题描述: 如下图所示,报表执行报错,单元格中显示:#bad function! 但缩小查询范围,可以查询出结果来。 或者提...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息