该报告无疑是最常用的文件之一。比如日常采购要打印采购台账;仓库应每天输出收据或装运明细;销售需要每天打印订单明细。因此,报表的设计占据了ERP系统开发的大部分时间。但是在实践中,有些开发人员过于复杂,无法设计ERP报表。从技术上来说,实现这样复杂的报告并不是很难。但是从实用的角度,或者从准确性的角度,会发生什么呢?
1.报告越复杂,越难把握准确性
一般来说,一份报告越复杂,越难把握其准确性。其实从统计学的角度来说,没有ERP系统也能得出这个结论。现在这个表单由三个数据模块组成。就像三个抽屉。当然,它抽屉里的数据远比10个数字加载。让我们想象一下,从一个单独的模块。也许企业允许的误差率是5%。即100条记录中,允许有5条记录偏离实际情况。现在三部分信息合在一起形成一个报表,最后需要根据三部分信息的内容计算出一个值,那么有多少记录会有误差呢?这又是一个排列组合的问题。如果假设每部分信息有5个有偏差的条件,那么最终的理论误差记录是125。显然,这个错误率比较大。同时可以看出,涉及的基本表格和模块越多,最终结果的准确性就越难保证。当数据精度不高时,其实用性会相应降低。
2.报告关联越多,性能越低
报告越复杂,它涉及的后台数据库中的表就越多。虽然允许多个表之间的相关查询,但是相关关键字越多,查询效率越低。尤其是在关联条件下,有时候并不是关键词之间的关联。如果日期之间存在可能的关联(字符数据类型的关联),此时查询效率会较低。另外,复杂报表的查询时间会很长。作者已经测试过,根据以上用户需求,设计的报表查询时间需要近三分钟,是一个优化的查询。另外,由于这个报表的查询涉及到很多基础表,数据库基本上需要访问硬盘上的数据文件,但是不能使用缓存。这可能会导致硬盘上严重的输入/输出冲突。从而影响其他数据的查询效率。因此,考虑到数据库和应用软件的整体性能,不建议采用更复杂的报表视图。毕竟当性能下降,查询时间变长的时候,报表的实用性也会降低。
3.复杂报表设计中的注意事项
因此,原则上禁止设计两个以上模块的数据报表,最好将报表的范围限制在单个模块。这样,性能和数据准确性都将得到保证。但是,如果用户真的需要实现复杂的报表,这种情况下应该怎么做呢?
使用固化视图提高数据库性能。
复杂报表带来的第一个不利影响是报表查询速度慢、性能低。因此,当涉及复杂报表时,开发人员可以考虑使用固化视图来提高数据库的性能。例如,在Oracle数据库中,固化视图也称为物化视图。通过固化视图,可以提前计算并保存表连接或聚合等耗时的操作结果。简而言之,报表的查询结果存储在一个单独的表中。这样,在执行查询时,我们可以避免使用这些耗时的操作,同时减少磁盘上的I/O冲突,从而在最短的时间内得到用户想要的结果。一般来说,固化视图可以为复杂报表提供三种功能。例如,可以提高查询性能。如果固化视图对应用程序是透明的,那么物化视图的添加和删除不会影响应用程序中SQL语句的正确性和有效性。例如,当基表改变时,物化视图将同时更新。但是需要注意的是,物化视图也会带来一些负面影响。比如物化视图的数据会保存在硬盘里,会占用额外的存储空等。总之,在设计复杂的报表时,开发人员可以咨询数据库工程师,采用固化视图。如果可能,需要尽可能使用固化视图。
将复杂报表设计成多个报表时,最好采用模块化设计。
例如,一个视图涉及近20个基表。设计视图时,避免将其放在一条SQL语句中。而是要借鉴应用的模块化设计,设计成不同层次的视图,然后进行连接查询。和上面的情况一样,至少可以分为四层。最基础的一层是基础数据表,第二层是零件发货信息、当月采购信息等数据,第三层是根据第二层的数据进行计算分析;第三层视图连接这些视图。这样便于后续维护和查询。同时也可以提高查询速度。为什么这么说?例如,在二级视图设计中,可以过滤基本表的数据。此时由于基础数据的缺乏,后续报表的查询速度会加快。所以对于复杂报表的设计,要考虑分层设计的思想。从而提高报表的查询性能和灵活性。
考虑数据检查的需要。
复杂的报告可能涉及许多不同的部门。如上图,涉及仓库、采购、销售、开发等部门。而最终的计算结果需要基于这些部门的信息。因此,为了提高数据的准确性,需要多个部分积极合作。那么我们该怎么做呢?这些视图可以分为模块化设计。例如,与不同部门相关的信息首先被设计成不同的报告。在某个特定的时间,比如月底,让各部门的人员先检查一下相关数据。检查无误后,计算相关数据。而不是一开始就在一个报表上显示所有数据。这样会导致查各个部门数据的麻烦,也就是各个部门不利于查与自身相关的数据。其实这和上面说的视图分层设计差不多。在企业资源规划系统上,报告的内容应该反映在不同的模块中。这样有利于用户核对确认数据。然后再整合。这种各个击破的方法有利于提高数据的准确性。
可见复杂的报表视图原则上还是比较少见的。因为很难控制性能或者数据精度。如果真的要构建一个复杂的视图,那么在设计开发中,顾问要听取数据库工程师的意见,考虑如何提高数据的查询性能,并采取措施提高数据的准确性。
微信微信官方账号:ERDS企业管理软件平台
1.《erp系统报表 解析ERP系统报表的复杂性》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《erp系统报表 解析ERP系统报表的复杂性》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guonei/672058.html