集算报表

集算报表
集算报表

集算报表:报表工具的二次革命

计算引擎

产生背景

报表工具是润乾的主打产品,我们在这方面积累了丰富的经验,当然,也有教训。

现代的报表工具主要解决两个环节的问题:一方面是呈现,也就是把数据以表格或图形的方式展现出来;另一方面是数据计算,即计算出源数据中没有和不能直接呈现的数据,比如一些公式格、分组汇总排序等等。

这里说的报表,主要是指用户事先确定好格式和数据运算规则的报表,我们俗称为固定报表。自助报表,也就是业务用户可以自己简单拖拽可以完成的报表,不在此类。自助报表的话题我们会专门再讲。

十年前润乾首先提出了非线性报表模型,带来了报表工具的第一次革命。这个模型从根本上解决了报表(特别是中国式报表)的复杂格式以及表内的计算问题,以此模型的润乾报表也因此取得了一定的成功,现在这个模型已经成为报表工具的标准了。

但是,有了这样的报表工具,报表开发是否就很好做了?

“并不是!”

报表工具常常会宣称自己支持“零编码开发报表”,润乾报表当然也不例外地喊过这个口号,但要认真分析下来,这是一句空话。

为什么呢?我们发现,数据库中的原始数据有时并不能直接用作报表工具的数据源去呈现,而需要一系列运算转换过程,有的过程还非常复杂。

有报表开发经验程序员都知道,为报表编写复杂SQL是经常的事,存储过程以及事先准备的中间数据也是家常便饭,有时SQL和存储过程不好写的运算还需要采用自定义数据源即JAVA程序来处理。总之都需要大量的程序编码。

虽然大部分报表还是相对简单的,这类复杂报表总数上并不算多,但其占用的开发工作量却会占绝对的大头,开发10个用报表工具能直接完成的简单报表所用的时间可能也做不了一个需要编码才能准备好数据的报表。

那么,提升报表工具的计算能力可否解决这个问题吗?

广义地说是可以的,这就是集算器的产生背景。

但是,由于数据量和数据转换具有分步性的特征,而报表工具在呈现环节的计算一般都是状态式和全内存方式,这样,无论在容量和复杂度方面都只能是很少部分地缓解这个问题而已,即使是润乾报表这样以计算能力为核心优势的报表工具也不行,数据源开发工作量依然很大,这也是我们这些年的经验。

提升报表工具的计算能力不能放在呈现环节,需要给报表应用结构中增加一个数据准备环节,这就是集算器的作用。

换句话说,当代的报表工具已经把呈现环节的格式及相关计算问题解决得很好,但在数据准备阶段仍然差得很远,需要有另外的计算手段来弥补,而集算器就是这个计算手段。

理解集算器

集算器是一种程序设计语言,它有自己的语法体系。和普通的程序设计语言一样,集算器也是由程序员编码代码后执行获得计算结果。与报表工具中的计算目标不同,集算器并不追求零编码,而是追求简单编码。

集算器不是面向对象的程序设计语言,没有复杂的类继承和重载概念,有BASIC这类初级程序设计水平的程序员都能很快掌握。集算器是解释执行的动态语言,可以在运行过程中拼出代码执行,这样可以获得更大的灵活性,进一步降低程序设计的复杂度。

与Java等高级语言相比,集算器中提供了大量与结构化计算相关的基础对象和方法,这类运算在数据分析及报表数据准备中非常常见,因而可以使得代码比Java要短得多。

大家都知道SQL用来实现很零碎的多步运算很不方便,特别是与次序相关的运算,程序员常常要把数据从数据库中取出来用Java等完成。而集算器则正好在这方面做了强化,相当于把SQL与Java的优势统一起来,让程序员可以既可享受到类似SQL的批量集合式计算、又能获得类似Java的灵活性。

集算器虽然在大多数情况下的语法要比SQL更简单易写,但并不能取代SQL。数据从数据库读出的IO成本相当高,有些涉及数据量太大的简单运算,数据读出的耗时远远超过运算本身,这种情况还是放在数据库中运算更合适。

集算器本身是用Java开发的,与Java有天然的兼容性,而且集算器的设计定位就是被集成,所以与Java的集成性非常好,特别地,对于Java报表工具,用集算器为之提供数据源非常方便。集算器提供标准的JDBC接口,报表工具可以象访问普通数据库一样访问集算器,集算器的jar包也可以和报表工具一起部署发布,完全无缝集成。

这一点与其它如perl,python,R等其它脚本语言不同,这些语言在某种程度上也方便用于实现许多结构化计算(细纠起来还是不如集算器专业),但很难被报表工具调用。

降低报表开发难度

降低开发难度从而提高开发效率是集算器的设计初衷,是最容易理解的作用,前面已有粗略介绍。

这方面的细节内容太多,我们会再做一个专门话题详细讲述集算器如何解决报表开发中的各种具体难题以及与常规手段的对比。在这里只做总结性地阐述。

比Java和SQL更易写

如前所述,集算器的设计目标是为了解决报表的数据准备,而目前这个工作一般采用Java或复杂SQL完成,存储过程及中间表也可以算作是SQL。

与Java这类没有提供直接结构化计算的语言相比,采用集合化语法的集算器代码会更为短小,这很容易理解,毕竟集算器基于Java提供了更高层的类库和方法。

短小不仅仅是写得快,而且还能容易理解和排错。一个页面内能看到更多的代码,从而能更完整地理解代码的含义。使用集算器编码时,伪实代码的比例大约是只有 1.5:1,绝大多数报表的数据准备算法可以在一个屏幕内显示出来。

而使用Java就很难这样,几十行代码下来仅仅能做个简单的汇总,一个完整的业务逻辑动辄需要几百行代码,翻看到后面时已经忘了前面是怎么做的了。

除了代码本身简短的外,集算器特有的网格式编码和调试方式还能进一步强化这个特色。程序员可以在一行写多句相关的代码,某句长代码不必完全显示出来从而不影响查看算法整体结构,循环可以用更直观的方式呈现,单步执行和单元格变量可以随时查看每一步的结果而提高调试效率。

这些,都可以让程序员专注于数据计算中的业务逻辑而非技术细节。

与SQL这类本身就支持结构化计算的语言相比,集算器完善了对分步计算、集合化、有序计算和对象引用等几方面的支持。对于日期和字串等运算,集算器也比大部分SQL提供了更丰富的方法。

许多情况用SQL也不是写不出来,但不能直接按自然思维实现,很费脑筋,这种代码放时间长了程序员自己都会忘了是怎么写出来的,给将来的维护也造成麻烦。

集算器代码则没有这些问题,符合自然思维习惯,即使是与SQL相同的思路也能更清晰地表达,很容易理解和维护。

比报表中计算更广泛

报表工具一般都可以完成计算列、分组排序等运算。基于非线性报表模型的工具还提供了跨行组和相对格与格集引用方案,可以完成相当复杂的运算。

报表呈现环节的计算是一种状态式的计算。所谓状态式计算,就是把所有计算表达式一次性都写出来,由报表工具根据依赖关系决定计算次序。这种直接把运算写到布局中的好处是很直观,在依赖关系不太复杂时能一目了然地了解各单元格的运算目标。

但是,在依赖关系较为复杂,计算需要分成多步时,这种状态式计算就显得困难了。还有的时候,计算的中间结果并不要呈现,这样就会出现隐藏格。隐藏格不仅将很大程度地破坏状态性运算的直观性,而且还会导致运算效率低下,占用更多内存。

比如要列出销售额占前一半的大客户,这时就有典型的过程性计算,在报表中要使用隐藏行列手段将不该列出来的条目隐藏,而不能直接过滤掉。再比如带明细的分组报表要按汇总值排序,这需要先分组再排序,而采用状态式计算的报表工具无法控制这个次序,这个报表也就无法完成了。

对于这类过程性计算或需要隐藏格的复杂报表,采用集算器在数据准备阶段完成计算,报表只负责呈现及少量的直观计算,可以有效地保留状态式计算的优势。把复杂运算到集算器完成,过程虽然多了一步,但结构更为清晰。

数据准备还能解决动态数据源和数据集的问题。报表使用的数据源一般是在报表工具中配置的,不能根据参数动态选择,而使用集算器数据源时就可以用脚本控制连接不同的数据源。通用查询报表要求数据集取数SQL不能简单地用参数控制,而要整体替换,支持宏的

报表工具能够一定程度地解决这个问题,但面对要将宏计算后才能拼进SQL的复杂场景也会感觉困难,而采用集算器数据集则无论是否支持宏、需要多复杂的宏计算都可轻松应对。

数据准备不仅能解决报表中的计算,还能协助处理格式。比如许多报表工具都支持纵向分栏,但很少有报表工具支持横向分栏,对这种需求无法处理。而采用集算器可以方便地将原数据集变换成横向拼接过的数据集,报表工作只要用普通的模板呈现一个列数更多的数据集即可。再比如许多报表工具不支持末页补足空行,也可以用集算器在返回数据集时补。

一致的多样性数据源支持

报表的数据源并不只是关系数据库,还可能是TXT或json等文件,而文件没有计算能力,所以常常要有一个过程将这些数据导进数据库,增加开发工作量。

如果采用集算器准备数据,则可以直接用这些文件作为数据源去生成报表,不需要导入数据库的过程。

数据库包括NoSQL数据库、文件包括HDFS文件,对于集算器来讲都是数据源。集算器自有的计算能力可以使这些计算能力不一的多样性数据获得通用一致的计算能力。比如文件几乎没有计算能力,MongoDB对JOIN和GROUP运算支持不足,各家SQL对窗口函数的支持程度不同、日期与字串处理能力也普遍不足且风格迥异。这些数据源都能基于集算器采用一致通用的方案来计算,而这将意味着更低的移植成本以及学习难度。

优化报表应用结构

虽然提高开发效率是集算器的初衷,但优化报表业务的应用结构才是集算器更重要的作用。可以说,集算器的出现是报表工具的二次革命。

解释执行降低应用耦合度

Java是编译型语言,代码需要事先编译才能执行,虽然也有动态加载技术,但在难度和复杂度都要大许多,一般应用程序员不常使用。这种情况下,采用Java编写报表数据准备算法将导致报表部分与主应用程序的高耦合性,具体来讲有这么两方面:

1.Java程序要和主应用一起编译并一般放在一起部署,这样用报表工具在外部开发出

的报表模板报表就需要和应用程序中数据准备算法配合才能工作,难以将本来相对

独立的报表功能作为一个模块处理。

2.相对于主程序,报表的修改更为频繁,如果牵涉到数据源的变动,则必须要改写相

应的Java程序,导致整个应用重新编译部署,很难做到热切换。

如果用集算器替换Java实现数据准备算法,则能有效地降低主应用程序与报表功能的耦合度:

1.集算器写出来的算法也是类似报表模板的外置文件,不需要和主应用程序一起编译

打包,而可以和报表模板放在一起管理维护,从而使报表功能模块化。

2.集算器是解释型执行的语言,在修改时不需要涉及主应用程序,只要把集算器脚本

替换就可以,很容易做到热切换。

另外,Java编写的算法一旦加载执行就会占据内存不再释放,即使相应的报表不再被访问。而使用集算器就不会有这个问题,算法执行完比后会立即释放,不再占用内存。

算法外置减少存储过程

采用存储过程实现数据准备算法和用Java类似,依然会造成耦合度的问题,只不过不是报表与主应用程序之间的耦合,而是报表与数据库之间的耦合:

1.存储过程存放在数据库中管理,报表模板在外部文件系统中管理,两者要对应起来

麻烦度很大

2.存储过程修改时需要申请一定的管理员权限做重编译,虽然不象Java那样难以做到

热切换,但数据库高权限的频繁使用会带来安全隐患。

3.比Java更糟糕的是,数据库及其中的存储过程可以被多个应用程序共享,如果管理

不善,很容易造成多个应用之间的高耦合,时间长了会搞不清楚某个存储过程在被

哪些应用调用,越来越混乱。

存储过程本身编写难度并不小,且强计算型代码的性能也不佳,原则上在报表业务中应当尽量少用存储过程,除非个别涉及数据量巨大难以移出库外计算的情况。

频繁使用存储过程要求高超的管理能力和巨大的管理成本,但这是大多数应用开发团队不具备的能力或不能承担的成本。

同样地,采用集算器也可以极大程度地减少数据库中的存储过程,算法外置后与报表模板一起存放管理,完全归属于应用本身,不仅降低与应用其它部分的耦合,更不会造成与其它应用的耦合。

数据外置减少中间表

所谓中间表,是指因为数据量或计算复杂等原因,直接基于源数据生成报表在性能和复杂度方面不可容忍,事先将数据整理汇总成的某个中间结果。报表的开发基于这些中间表进行,可以降低难度和提高性有

因为不可能为每个报表的每种参数状态计算中间结果,在生成报表时还需要进行一些即使较为简单的计算,也就是要求这些中间结果仍有计算能力。最容易获得的计算能力来自数据库,因此这些中间数据经常会被存储到数据库中。

与存储过程类似,使用中间表也会造成数据库管理的混乱。

关系数据库中的表是以线状方式存储的,相当于没有分类,各个应用用到的中间表混到一起,很难搞清楚。想管理好就需要强有力的控制能力,比如规定中间表的命名规则并保证得到执行,但强化管理常常是以牺牲开发效率为代价的。

如果管理不善,就会导致中间表越来越多,这其实是现实应用建设中经常看到的结果。有些数据库中会积累出上万个表,绝大多数都是为报表服务的,其中有相当多部分已经没有意义了,但因为不清楚有哪些应用还在使用这些表而只能保留,相应的ETL过程也仍然在毫无意义地浪费计算资源向其更新数据。

数据外置可以有效地减少中间表。

中间数据一般都是由不再改变的历史数据计算出来的,完全不需要数据库的事务一致性能力,因为是导出的冗余数据,也不需要很高级的安全稳定要求,存在数据库中仅仅为了获得计算能力。如果我们有办法让中间数据存放在文件系统中且拥有计算能力,那就没必要让这些数据占据昂贵的数据库空间了。

集算器能够实现这一目标。

外置的中间数据可以使用文件系统的树形结构管理,与报表模板及数据准备算法统一存储,而集算器可以使这些数据继续拥有强大的计算能力为报表服务。这样,不仅管理简单方便,而且可以少占用数据库空间而成本更低,再者,文件系统还有比数据库更高效的IO性能,更适应于报表业务。

混合运算实现T+0报表

关系数据库强大的事务一致性能力目前在业界尚无有效的替代者,为保证交易的完整性,当期还在变动的数据仍然有必要存放到关系数据库中。

然而,为了实现T+0报表,我们还需要把历史数据继续存放在当期数据库中一起计算,而历史数据常常要庞大得多,这会要求我们建设更大容量的数据库,显然会导致更高昂的成本。而且这个量并不可能一直增长上去,太大了会直接影响当期交易业务的性能。

为了解决这一矛盾,通常的办法是只保留部分历史数据在当期库中,把远期的历史数据被移出独立成库,这样的结果是只能查看近期的报表或远期的报表,但不能查看混合的报表,不能做到真正的T+0报表。

当然,还可以把当期交易库和远期历史库混合运算生成T+0报表,这就需要跨数据库的混合计算能力。

理论上许多数据库都支持这种跨库运算,一般是将外库数据映射进本库,实际运算时要取数据到本库执行,这样在应用中的性能和稳定性都较差,实施成本不低。而且历史库的容量较大但不需要事务一致性的功能,很可能被建设成与当期库类型不同的数据库,这样数据库厂商本身提供的跨库运算机制就更难实施。

集算器可以完成这个混合计算任务。

集算器自有的计算引擎不依赖于某个数据库,各库内的数据计算仍由各库进行,将各自的运算结果取到由集算器汇总处理,再将结果传给报表工具去呈现,从而即可实现全面的T+0报表。显然,这种机制还方便横向扩展,历史库可以有多个不同类型的数据库。

而且,在集算器的支持下,历史数据还不必一定要以数据库的形式存放,可以存储在IO 性能更好的文件系统中,配合集算器的集群服务,可以在更低廉的成本下获得更好的性能。

直接使用多样性数据源

集算器支持多样性数据源。比如NoSQL数据源,文件数据等,都可以被集算器直接计算而不必导入关系数据库,这样可以不再建设多余的数据库,成本更低而且降低数据不一致的风险。

这些非关系数据库在某些方面比关系数据库更强,只是计算能力不足或不同,如果用集

算器辅助,则可以保留其原有的优势。比如MongoDB的对追加型日志数据的吞吐能力就远远超过普通关系数据库,但结构化计算能力较弱,用集算器来弥补则可以数据继续保留在MongoDB中获得其高吞吐性能。

提升报表运算性能

集算器优于报表引擎

集算器的性能大多数情况优于报表引擎,这样如果把一些计算从呈现环节移出到数据准备环节,将会获得更好的运算性能。

多个数据集对齐呈现是很常见的报表形式。数据对齐是典型的JOIN运算,而在报表模板中,对齐关系是单元格之间用表达式各自定义的,这样在实现运算时只能采用遍历方式对齐,复杂度是平方级的。而采用集算器则可以事先将多个数据集对齐再提交报表工具用单数据集呈现,借鉴SQL的实现,集算器采用了更高效的HASH算法来完成JOIN,复杂度是线性级的。对于有序的数据集,集算器还可以采用二分查找算法定位,但用报表很难在单元格中描述这种运算。

报表引擎采用的状态式计算方案要么无法利用中间结果,每次计算都只能从原始数据和单元格开始,有些涉及单元格集合的运算效率会更低;要么就采用隐藏格来保持中间结果,这又会占用太多内存,而Java程序的性能对内存相当敏感。而且,报表计算时是带着单元格外观属性一起进行的,这会占用更多内存。

使用集算器事先准备数据则没有这些问题,过程式计算可以方便地复用中间结果,只进行纯粹的数据计算,不涉及隐藏格和外观属性,内存使用效率更高。

报表单元格之间复杂的依赖关系导致多线程并行计算非常困难,而集算器则天然支持并行计算,特别是涉及数据库文件等外存数据的时候,可以充分利用现代CPU多核的优势。

我们知道,数据库的JDBC性能较差,而报表性能又严重依赖于取数环节。如果数据库负担不沉重时,可以采用多线程并行的方式同时建立多个数据库连接从数据库分段取数,实际测试表明可以达到几倍的性能。但报表工具一般无法直接实现这个效果,借助集算器就可以很轻松地实现了。

使用缓存能够有效地改善用户响应速度方面的体验,高端的报表工具一般都提供缓存功能。但报表工具的缓存机制比较死板,要么全有要么全没有,不能只缓存报表的某个部分,两个报表有共同部分也无法复用缓存,难以分别缓存指定不同报表在不同参数下的不同生存周期。毕竟报表工具采用可视化的配置方案,很难设置过多复杂的参数。

采用集算器准备数据时则可以实现可控缓存的效果,集算器是程序代码,可以由开发者灵活决定使用缓存的时刻及范围的策略,这样就可以实现报表的部分缓存、多个报表之间缓存复用、以及不同缓存的不同生存周期。

集算器对数据库的性能优势

我们知道,文件系统的IO性能要好于数据库,这是因为数据库要为将来可能发生的写操作预留空隙,存储不够紧致且管理要复杂些。

实际测试也表明,基于Java的集算器对大数据量的遍历性能能优于基于C语言的Oracle 执行SQL,在使用多线程时差距会更明显。如果再考虑到数据库JDBC的性能损耗,使用文件数据源配合集算器运算的方案将比基于数据库存储数据获得好得多的性能。

在内存够大时可以事先将数据读入内存以获得更高的运算性能。集算器支持内存记录的引用,用这种方式表达的连接运算与传统SQL的外键对应方式相比,不仅运算描述更为简单,运算性能也高得很多。实际测试表明,集算器的指针连接方式能比同容量的Oracle外键连接方式快出一倍以上。

在脚本执行方面,测试表明,集算器代码解释执行性能也极大幅度地优于Oracle存储过程代码。这样,对于难以直接使用SQL写出的过程性复杂运算,如果有将数据外置使用集算器运算,将好于在库内使用存储过程运算。

与存储过程的低效不同,大多数情况下SQL的执行效率很高。但如果SQL过于复杂,有许多JOIN和GROUP等嵌套在一起时,SQL可能会表现出很糟糕的性能,原因是数据库不能正确地优化复杂SQL的执行路径,而SQL不提倡分步的语法让程序员实施干预相当困难。这时,采用步骤化的集算器指挥和辅助SQL运算可能缓解这个问题,相当于由程序员干预了执行路径。我们曾有过一个案例,将一句复杂SQL拆成多个子句分别执行后再由集算器汇总重这些结果返回给报表,获得了数倍的性能提高。

当然,也不是所有运算集算器的性能都占优。实际测试发现,集算器的文件索引性能要低于Oracle,目前还在进一步优化中。另外,Java程序的内存使用效率较低,同样内存容量可装载的数据量远小于基于C语言开发的数据库,在涉及数据量和内存容量基本相当时数据库的优势会更大。

是否使用文件系统加集算器替代数据库运算,需要根据实际情况具体决定。

多数据源集群汇总

集算器的多线程机制还可以用于操纵多个数据库以集群方式并行计算以获得更高性能,这个优势还可以横向扩展。

前述的T+0报表即可用于多数据库集群方案。多个数据库分别分段存储数据,每个数据库的数据量都不大。集算器以并行方式发出SQL要求各个数据库分别计算,收到结果集后在集算器端再汇总后输出给报表工具,常见的过滤、分组汇总等运算都可以很方便地完成。数据量进一步增长时可以再增加更多的数据库分段以实现横向扩展。

数据库本身的集群方式,无论是配置复杂度还是环境成本要求都远远高于这种方案。采用集算器实现多数据库集群还允许数据库不同构,比如可以将小型机上的Oracle与PC服务器上的MySQL集群起来。自有的计算引擎和多线程机制可以把这些分立的数据库有机地集合起来。

这个方案要求各个分段数据库的运算除了最后汇总外不再有关联,但实际运算时会发生所有分段数据都要与共同的维表做连接的现象,这时可以把维表冗余地复制到每个分段数据库中。一般业务系统中不可分段的维表都远小于可分段的事实数据,这种冗余方案可以有效减少节点之间的传输,而采用数据库本身的集群一般不能自由控制冗余方案。

另外,集算器本身也有可集群的服务器,这样可以将上一段所说的某些场合下文件系统配合集算器运算的高性能利用起来。这个问题不是这里的重点,我们会再做个专题讲述集算服务器的应用方案。

集算报表

集算报表用于面向程序员开发固定报表,可理解为原润乾报表4的升级版。

固定报表是指事先开发好、用户输入参数后由程序计算出结果的报表,这些报表一般都具有业务逻辑和计算过程复杂的特点。对应地,有些相对简单的报表可由业务用户自行编制,称为自助报表,润乾有另一款产品来解决。

集算报表是中间件产品,不是一个面向终端用户直接可用的应用系统,必须由程序员集成到应用中。集算报表没有提供用户权限以及管理看板、KPI分析等功能,这些需要应用程序员进一步封装。集算报表没有直接提供移动端APP,但可以输出基于HTML5和SVG的报表和图形,程序员可以轻松地定制出需要的APP。集算报表也不是交互分析产品,可以基于链接功能开发出关联报表以实现出钻取效果,但并不是专业的交互分析工具。

集算器和报表工具的集合体

在润乾报表中集成了集算器的运算引擎,就形成了集算报表,也就是集算器和报表工具的一个集合体,这从名字就能看出。

集成了集算器,当然前面所说的那些好处都可以在集算报表中得到体现。另外,由于都是自家产品,两者在在结合时仍有一些独到的优势。

Java程序之间的API调用会获得更高的效率,但要长期保持已开放API的兼容性会增加许多技术成本,而JDBC恰好是业界最常用的结果集返回标准,为了保证兼容性和应用广泛性,集算器对外的接口设计成标准的JDBC而没有放开普通的API调用。

但同一公司的产品就没有这个问题了,集算报表没有用JDBC方式与集算器连接,而是用了更高效的API调用。

以API方式集成了运算引擎后,集算报表就可以提供脚本数据集,对于简单的集算脚本可以直接在报表工具里写几行代码,和报表模板一起存储,而且能够共享报表模板中设置的数据源。这样不仅让报表开发更为简洁,而且管理一致性更容易得到保证,毕竟两个要配合使用的文件(报表模板与集算脚本)总不如一个合并文件管理更方便。

使用API方式连接,集算器脚本不仅可以返回数据集,还可以改写报表的宏(参数)值。使用宏可以使报表获更灵活,但有些宏值需要一些运算拼接后才能更好地应用(比如从基本字段列表拼出一个报表表达式),而报表工具没有这种运算能力,目前的方案一般是要求上

层传入已经拼好的宏值,信息重复且带来工作量。

API方式还可以返回JDBC接口不支持的层次结果集,这在报表中较为常见,比如主从式报表、分组报表。集算器本身支持多层数据的计算和处理,但JDBC标准不支持,在返回时必须转换成单层数据。而集算报表没有采用JDBC与集算器接驳,这样就可以直接接收多层数据做进一步呈现。

多层数据的好处有两个,一方面是呈现模板更简单,多层主从和分组表只要有一个数据集,不需要再做多个数据集的关联;另一方面是性能更好,在集算器准备数据阶段已经把关联计算完毕,报表环节只要直接呈现,无须再次计算关联。

集算器还支持图形绘制,提供了逻辑坐标体系,可以用于绘制一般统计图组件不能直接支持的图形,不过目前只支持平面静态图形,以后会逐步完善动画地图等功能。

由于JDBC接口标准并没有图形相关的尺寸属性,目前集算器还只能向Java程序返回绘制好的图形,不能直接返回给报表工具。而集算报表不使用JDBC,可以利用内部API接收集算器绘制的图形去呈现,让报表中出现更丰富的自定义图形。

呈现环节

集算报表延用了原润乾报表的内核,并在此基础上重点做了如下一些优化精简:

1.报表中函数和表达式改用了集算器的语法风格,保证学习的一致性

2.统计图外观做了优化,增加光照效果,以及支持移动设备的SVG图形等

3.增加对第三方开源图形包的支持,特别地可以集成第三方地图

4.增加对动态多层报表的支持以及更方便的数据集定位语法

5.剥离原有的填写功能,专心致力于BI目标的业务,填写功能另外发展

6.取消原有的语义层,专注于固定报表,自助报表功能也另行发展

7.取消了附加数据集,用集算脚本和数据集定位语法实现

集算报表在呈现环节上继承了非线性报表模型,因而也能继续支持多源分片、行列对称、灵活格间计算等复杂报表功能。非线性报表模型已经这成当前国内报表业界的标准,其细节这里就不再赘述了。

可视化是近年较热门的话题。广义地讲,报表也是数据可视化的一种形式,但我们一般所说的可视化一般是指将数据以图形方式呈现,特别是用动画效果呈现数据的特征。

可视化在技术上主要有两个环节的难点,一是图形(或动画)呈现,二是数据准备。图形(动画)本身是个较专业的领域,涉及种类繁多,而且缺乏统一的模型,一般都只能逐个实现,工作量非常巨大。好在近来业内出现了许多功能强大的开源图形包,能让开发者以较少的工作量即获得很好的可视效果。

同报表类似,图形要呈现的数据往往也不是直接就有的,仍然需要复杂的计算过程才能准备好。

集算报表开放了集成第三方图形包的接口,程序员可以将自己熟悉的开源图形包嵌入到集算报表的单元格中,利用集算引擎准备数据,并通过报表传送给图形包,从而实现丰富的可视化效果。

移动呈现也是近期的热点,许多报表厂商自己提供了移动端APP。但作为中间件产品,

集算报表没有也不能直接提供移动端APP,APP是完整功能应用的一环,其中会涉及用户权限、资源组织等各种与应用场景密切相关的管理类功能,无法事先做好。事先做好的APP 常常不能匹配现场管理规则而无法使用,且又缺乏集成性,难以再编程。

集算报表提供能适应移动端呈现的HTML5输出格式,支持纯javascript的图形绘制,并为移动端增加了长按事件,确保开发人员能轻松地将集算报表嵌入到自己写的APP中,实现适应实际业务规则的APP。

对比理解

国内的报表工具产品基本都已采用了非线性报表模型,因而在呈现环节上与集算报表的差别不大;但在数据准备环节仍然是传统的硬编码方式,和集算报表没有可比性。所谓零编码制作报表只能适应很简单的报表,虽然数量并不少,但所占工作量并不大。

国外的报表工具大都仍在采用落后的条带控件式模型,在报表呈现环节就效率低下,而且有相当多格式并不算很特别的报表根本无法完成,特别是涉及多数据源的情况。在数据源准备环节更是完全没有。

报表工具是国内产品大幅优于国外产品的领域。

OLAP产品常常是报表工具厂商进一步发展的方向。与专业的报表工具相比,OLAP虽然也能完成一些报表呈现,但都是规律性很强的简单报表,其擅长点在于针对报表实现交互式的变换。另外,OLAP产品的集成性相对较差,不方便嵌入到应用系统中。集算报表不提供这些自动交互功能(可以用链接功能实现有钻取效果的关联报表),但能开发复杂得多的报表,而且集成性非常好。

还有些报表工具厂商会基于报表工具实现报表应用系统,将用户权限、报表发布管理等功能功能都加进去,用户直接可用,但普遍集成性较差,难以二次开发。集算报表则专心实施中间件策略,以优秀的集成性由行业集成商完成这些外围有行业和地域特征的功能。

华能国际和国电电力财务报表分析比较报告

财务报表分析案例 华能国际(600011)与国电电力(600795)财务报表 分析比较报告 一、研究对象及选取理由 (一)研究对象 本报告选取了能源电力行业两家上市公司——华能国际(600011)、国电电力(600795)作为研究对象,对这两家上市公司公布的2001年度—2003年度连续三年的财务报表进行了简单分析及对比,以期对两个公司财务状况及经营状况得出简要结论。 (二)行业概况 能源电力行业近两、三年来非常受人瞩目,资产和利润均持续较长时间大幅增长。2003年、2004年市场表现均非常优秀,特别是2003年,大多数公司的主营业务收入出现了增长,同时经营性现金流量大幅提高,说明整体上看,能源电力类上市公司的效益在2003年有较大程度的提升。2003年能源电力类上市公司平均每股收益为0.37元,高出市场平均水平95%左右。2003年能源电力行业无论在基本面还是市场表现方面都有良好的表现。 且未来成长性预期非常良好。电力在我国属于基础能源,随着新一轮经济高成长阶段的到来,电力需求的缺口越来越大,尽管目前电力行业投资规模大幅增加,但是电力供给能力提升速度仍然落后于需求增长速度,电力供求矛盾将进一步加剧,尤其是经济发达地区的缺电形势将进一步恶化。由于煤炭的价格大幅上涨,这对那些火力发电的公司来说,势必影响其盈利能力,但因此电价上涨也将成为一种趋势。在这样的背景下,电力行业必将在相当长的一段时期,表现出良好的成长性。 因此,我们选取了这一重点行业为研究对象来分析。 (三)公司概况 1、华能国际 华能国际的母公司及控股股东华能国电是于1985年成立的中外合资企业,它与电厂所在地的多家政府投资公司于1994年6月共同发起在注册成立了股份。总股本60亿股,2001年在国发行3.5亿股A股,其中流通股2.5亿股,而后分别在、纽约上市。 在过去的几年中,华能国际通过项目开发和资产收购不断扩大经营规模,保持盈利稳步增长。拥有的总发电装机容量从2,900兆瓦增加到目前的15,936兆瓦。华能国际现全资拥有14座电厂,控股5座电厂,参股3家电力公司,其发电厂设备先进,高效稳定,且广泛地分布于经济发达及用电需求增长强劲的地区。目前,华能国际已成为中国最大的独立发电公司之一。 华能国际公布的2004年第1季度财务报告,营业收入为64.61亿人民币,净利润为14.04亿人民币,比去年同期分别增长24.97% 和24.58%。由此可看出,

润乾集算报表呈现输出之分页控制

润乾集算报表呈现输出之分页控制 润乾集算报表提供了丰富的分页控制方式,以满足报表用户在不同情况下的需求,包括:按纸分页、按行分页、不分页、行后分页、列后分页等。下面就集算报表的分页控制详细加以介绍。 按纸分页 按纸分页主要用于打印,也是集算报表默认的分页方式,报表在打印时按照报表设定的纸张(默认是A4)大小进行自动分页,超出纸张的部分会在下一页打印,这种分页方式适用于用户对一页纸上打印几条记录没有要求,希望记录数充满纸张时设置。 在“报表属性-分页”选项下可以设置报表分页方式为:按纸分页。 由于集算报表提供了多种纸张类型(包括自定义纸张),使用按纸分页可以满足对打印纸张有特殊要求的报表用户需求。 与上述描述一致,按纸分页的应用场景是为打印服务,设置按纸分页的报表打印预览时可以看到如下效果: 第一页 最后页 按行分页 有时报表除了打印还需要需要在WEB 上呈现,这时常常希望每页显示的固定指定行数的记录,按设定的每页显示的数据行数自动进行分页,超出设定的行数的数据在下一页。 在“报表属性-分页”选项下可以设置报表分页方式为:按行分页,并设置每页行数。

按行分页主要用于报表展现,在页面上每页显示固定行数,设置按行分页(每页10行)的报表在页面上预览可以看到如下效果: 第一页第二页 设置按行分页的报表最后打印时也可以得到固定行数的打印效果。 有时最后一页的数据较少,打印出来的最后一页明显比前几页会短一些,这时用户可能希望最后一页补足空行,此时就可以通过设置按行分页来完成。补足空行除了设置按行分页(如每页10行)外,还需要在报表中新增一行并设置其首格表达式为:to(1,10-ds1.count()%10),并取消其首格“可视”属性。 不分页 除了按纸和按行分页,集算报表还可以不分页,报表在页面展现时有时希望所有信息展现在一页中,并通过页面滚动来查看所有报表信息。 在“报表属性-分页”选项下可以设置报表分页方式为:不分页。 与按行分页类似,不分页常用于报表页面展现,较大的报表设置不分页在页面上可以通过滚动条查看报表信息,在页面上查看如下:

国电电力公司财务报告分析

国电电力公司财务报告分析 陈晓敏 (福建农林大学东方学院11级国际会计1班) 摘要:本文以国电电力股份有限公司为研究对象,以其最近五年的财务报表为基础,对其经营成果和财务状况进行分析,并找出存在问题以及提出建议。报告分析共分 为四章,第一章介绍的是该公司的简介,第二章主要说的是国电电力股份有限公司 财务分析,本章中主要运用比较分析法、比率分析法等财务分析方法对该公司的财 务状况进行分析。第三章说的是国电电力股份有限公司的综合财务分析,在此章节 中借助杜邦分析模型来对该公司进行分析。第四章是针对此公司财务分析而得出的 结论和建议。通过以上的分析我们了解公司的运营情况和财务状况,发现缺点和问 题,并提出解决问题的办法,为管理层了解企业财务状况作出相应经济决策提供支 持。 关键词:国电电力股份有限公司财务分析比较分析法比率分析法杜邦分析 一、公司简介: 国电电力发展股份有限公司(股票代码600795)是中国国电集团公司控股的全国性上市发电公司,是中国国电集团公司在资本市场的直接融资窗口和实施整体改制的平台。公司于1992年经辽宁省经济体制改革委员批准正式成立,1997年3月18日在上海证券交易所挂牌上市,2002年底进入中国国电集团公司。截至2013年6月底,公司股本总额172.30亿股,其中中国国电集团公司持股52.35%,全国社会保障基金理事会持股5.32%,其他流通股持股42.33%。公司总资产2153.16亿元,净资产544.71亿元。 国电电力目前拥有直属及控股企业57家,参股企业18家,筹建处7家。公司资产结构优良,所属企业分布东北、华北、华东、华南、西南、西北等地24个省、市、自治区。近年来,国电电力大力推进新能源发展和创新型企业建设,积极转变发展方式,不断加快结构调整和企业转型步伐,形成了突出发电业务,煤炭、煤化工、多晶硅、铁路、金融等相关产业多元

润乾集算报表实现动态层次钻取报表(一)

润乾集算报表实现动态层次钻取报表(一) 在报表项目中有时会有动态层次报表,而且还需要层次钻取的场景,开发难度较大。这里记录了使润乾集算报表开发《各级部门KPI报表》的过程。 《各级部门KPI报表》初始状态如下图: 当前节点是根节点“河北省”,要求报表显示当前节点的下一级节点“地市”汇总的KPI 数值。Kpi又分为普通指标和VIP指标两类,共四项。如果点击“石家庄”来钻取的时候,要求能够将石家庄下一级的KPI汇总指标显示出来,如下图: 点击“中心区”钻取,要求能够将下一级的KPI汇总指标显示出来,以此类推,直到显示到最后一级。如下图: 前四级固定是“省、地市、区县、营业部”,后边则是动态的“架构4、架构5、架构6. . . 架构13”(根节点“省”对应“架构0”)。 这个报表对应的oracle数据库表有两个,tree(树形结构维表)和kpi(指标事实表),如下图:

Tree表 Kpi表 Tree表的叶子节点,通过id字段与kpi表关联。这个报表的难点在于1、动态的多层数据、标题;2、树形结构数据与事实表关联。 采用润乾集算报表实现的第一步:编写集算脚本tree.dfx,完成源数据计算。集算脚本 A1:连接预先配置好的oracle数据库。 A2:新建一个序列,内容是“省、地市、区县、营业部、架构4、架构5、架构6. . . 架构13”。 A3:使用oracle数据库提供的connect by语句编写sql,从数据库中取出指定id(节点编号)

的所有父节点id、name。id是预先定义的网格参数,如果传进来的值是104020,那么A3的计算结果是: A4:为A3增加一个字段title,按照顺序,对应A2中的层级。结果是: A5:计算变量level,是A3序表的长度,也就是输入节点“104020”的层级号“4”(“省”为第一级)。 A6:计算输入节点“104020”的下一级对应的层级名称“架构4”,赋值给变量xtitle。 A7:编写sql,从tree表中取出输入节点“104020”的所有叶子节点,并拆分sys_connect_by_path字符串,得到这些叶子节点对应的输入节点“104020”的下一级节点。形成临时表leaf与kpi表关联分组汇总。为了能够得到输入节点“104020”的下一级节点的name,leaf还需要与tree关联一次。需要注意的是,如果输入节点号本身就是叶子节点,结果中的name将为空。完整的sql如下: with leaf as( SELECT tree.id id,REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(id, ';'),'[^;]+',1,2) x FROM tree where connect_by_isleaf=1 START WITH ID = ? CONNECT BY NOCYCLE PRIOR id = pid ) select nvl(leaf.x,max(leaf.id)) id,'"+xtitle+"' title,max(https://www.360docs.net/doc/ab6189605.html,) name, sum(kpi.kpi1) kpi1,sum(kpi.kpi2) kpi2,sum(kpi.vipkpi1) vipkpi1,sum(kpi.vipkpi2) vipkpi2 from leaf left join kpi on leaf.id = kpi.id left join tree on leaf.x=tree.id group by leaf.x order by leaf.x 计算的结果是: A8:关闭数据库连接。 A9:向报表返回A4、A7两个结果集。 第二步:在报表设计器中定义报表参数和集算数据集,调用tree.dfx。如下图:

华能国际和国电电力财务报表分析

以上是华能国际和国电电力两家上市公司的财务报表。 一、偿债能力分析 1、流动比率=流动资产/流动负债 2、速动比率=速动资产/流动负债 3、资产负债比率=(负债总额/资产总额)*100% 二、营运能力分析 1、应收账款周转率=销售收入/应收账款平均 2、存货周转率=营业成本/平均存货余额 3、流动资产周转率=营业收入/流动资产平均余额 4、总资产周转率=营业收入/平均资产总额 三、盈利能力分析 1、营业毛利率=(营业收入-营业成本)/营业收入*100% 2、营业利润率=营业利润/营业收入*100% 3、营业净利率=净利润/营业收入*100% 4、资产净利率=净利润/平均资产总额*100% 5、净资产收益率=净利润/平均净资产*100% 根据以上公式和财务报表可以计算出以下数据。 华能国际2013 华能国际2014 国电电力2013 国电电力2014 流动比率0.3449 0.3577 0.2184 0.1873 速动比率0.2784 0.2922 0.1898 0.1609 资产负债率0.7155 0.6935 0.7370 0.7561 应收账款周转率8.6840 89.0098 存货周转率14.2751 397.5036 流动资产周转率 3.5771 2.6408 总资产周转率0.4711 0.7193 营业毛利率23.14%25.04%13.89%14.26% 营业利润率13.71%14.79%16.71%18.10% 营业净利率9.79%10.66%13.90%14.82% 资产净利率 5.02%10.66% 净资产收益率16.21% 30.01% 分析: 1、流动比率反映企业用可在短期内转变为现金的流动资产偿还到期流动负债的能力。华能国际2014年的流动比率比2013年高,表示企业短期偿债能力率有提高。而国电电力2014年的数据比2013年小,短期偿债能力下降。华能国际的偿债能力在2013年和2014年都明显高于国电电力。 2、速动比率剔除了存货等变现能力差的资产,更能反映企业偿还流动资产的能力。数据与流动速率反映的信息基本一致。华能国际短期偿债能力率2014年比2013年有提高。而国电电力短期偿债能力在2014年呈下降。华能国际的偿债能力在2013年和2014年都明显高于国电电力。 3、资产负债率表明企业资产总额中债权人提供的资金所占的比重,以及企业资产对债权人权益的保障程度。华能国际的资产负债率2014年比2013年低,表明资产对债权人的保障程度有提高,国电电力的资产负债率2014年比2013年高,表明资产对债权人的保障程度降低了。华能国际的资产负债率比国电电力的低,说明华能国际资产对债权人的保障程度高于国

润乾集算报表呈现输出之票据套打

润乾集算报表呈现输出之票据套打 实际项目开发中,很多情况会用到票据的打印。即在一张印刷好的空白票据上,准确无误地打印上票据的内容。用传统的报表工具,我们通常会用尺子量每一个数据区域的位置,然后在屏幕上根据尺子量出的尺寸设计每个格子的位置,反复调试。这样制作一张票据打印的报表费时费力,而且一旦票据格式发生变化,报表制作人员又要重新制作报表。 集算报表采用底图描绘的方案解决套打时的报表绘制问题。将需要套打的票据扫描成图片,插入到报表设计的界面上,然后依照底图进行报表描绘,可保证每一个单元格都和单据上的数据区域严格对齐。这样设计出来的报表,打印到空白票据上,不会产生错位。 具体操作如下: 准备扫描空白票据,使用扫描仪,注意要设置像素单位,使得其和标准纸张大小一样,或者扫描之后用画图软件将图片压缩成标准纸张大小,扫描分辨率一般使用72dpi。得到空白票据图片如下图。请注意发票名称、表格线、表格中的各个标题都是空白发票已经印刷好的,报表需要填写生成的是空白部分。 使用集算报表设计器新建空白报表,并插入背景图片。 在工具菜单中选择【报表属性】,弹出报表属性窗口,选择【其它】标签,在【URL 或 表达式】中选择我们要做为背景图案的票据扫描件,点【确定】即可如图所示:

此时报表会以扫描票扫描件为背景图片,我们调整报表的行高和列宽,使报表中要要填入数据的单元格与扫描件空白区域对应,比如:C2单元格对应”发票单位”,D5单元格对应”日期”等,如图中蓝色字体所示。本例中是直接填写的字符串,实际应用中也可以从相应数据集中读取。 设置报表打印属性 1、在工具菜单中选择【报表】--【报表属性】,弹出报表属性窗口,选择”打印”标签,将 【打印背景图】选中,如图所示:

财务报表分析国电电力

国电电力财务报表分析(2013年) 目录 一、经营环境与经营战略分析 (2) 1、基本面分析 (2) 1.1、公司简介 (2) 1.2、经营范围 (2) 1.3、主营业务 (2) 2、经营环境宏观分析 (2) 3、经营战略分析 (3) 二、财务报表分析 (4) 1、资产负债表分析 (4) 1.1、整体变化分析 (9) 1.2、结构分析 (9) 2、利润表分析 (11) 2.1、整体分析 (12) 2.2、结构分析 (12) 3、现金流量表分析 (14) 3.1、整体分析 (16) 3.2 、结构分析 (16) 三、财务效率分析(选取代表性的指标) (18) 1、偿债能力分析 (18) 1.1、短期偿债能力 (19) 1.2 、长期偿债能力 (20) 2、营运能力分析 (20) 2.1、流动资产运营能力分析 (21) 2.2、非流动资产与总资产运营能力分析 (22) 3.盈利能力分析 (22) 3.1、净利润的变化 (22) 3.2、重要的盈利能力指标 (23) 4、投资报酬分析 (24) 4.1、企业角度指标 (24) 4.2、股东角度指标 (24) 5、发展能力分析 (25) 6、综合财务分析(杜邦分析法) (26) 四、总结 (28) 五、建议 (29)

一、经营环境与经营战略分析 1、基本面分析 1.1、公司简介 国电电力发展股份有限公司(股票代码600795)前身是大连东北热电发展股份有限公司,是以热电业务为主的地方性电力企业。2000年国家电力公司对东北热电进行资产重组,从此公司步入了高速发展的历程。2001年公司股票进入"道琼斯中国指数",综合绩效列国内A股上市公司第四位,之后又先后入选上证180指数、上证50指数、中信标普50指数和300指数,多次被评为全国上市公司50强,确立了公司绩优蓝筹的市场形象。目前,国电电力拥有全资企业14家,控股企业17家,参股企业18家,筹建单位9家。是我国最大的电力上市公司之一。 1.2、经营范围 电力、热力生产、销售;煤炭产品经营;新能源与可再生能源项目、高新技术、环保节能产业的开发及应用;多晶硅开发与应用;信息咨询,电力技术开发咨询、技术服务;写字楼及场地出租;发、输、变电设备检修、维护;通讯业务;水处理及销售(后三项仅限于分支机构)。 1.3、主营业务 电力、热力生产和销售,电网经营;新能源项目、高新技术、环保产业的开发及应用;信息咨询。 2、经营环境宏观分析 自2008年以来,我国受世界金融危机影响,经济社会发展面临的环境变得更加复杂,不确定因素增多,经济发展速度下缓,但国家稳中求进的工作总基调和更有效的宏观调控能确保我国经济继续保持平衡较快发展,据统计2008年至今,全国国内生产总值增速平均在8.0%-9.0%之间,我国电力消费需要将继续稳步增加,但增速将有所回落,随经济发展速度进一步放缓。

集算报表与润乾报表的函数语法对比

集算报表与润乾报表的函数语法对比 集算报表5.0在保留润乾报表V4.x的核心功能外,进行了优化和精简,其中报表函数也做了适当优化,这里就常见计算来比较一下二者函数语法之间的差异。 对比函数一览表 1数据集函数 1.1d s.group() 润乾报表: datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,groupSortExp{,groupDescExp{,rootGr oupExp}}}}}}) 集算报表: datasetName.group({,filter_exp};{sort1}{:order1},…;{ groupSortExp }:{ groupOrderExp })

选项: @r 是否root数据集表达式 主要改变: 1、增加@r函数选项,取代原rootGroupExp表达式参数 2、取消分组前记录的排序顺序descExp参数 3、更改排序表达式和排序顺序参数语法 举例: 1.2d s.select()/ds.select1() 润乾报表: datasetName.select( {, desc_exp{, filter_exp{, sort_exp{,rootGroupExp}}}} ) datasetName.select1(selectExp{,filterExp{,rootGroupExp}}) 集算报表: 将原ds.select()和ds.select1()合并为ds.select()语法如下 datasetName.select({: order_exp},{ filter_exp },{num_exp},{distinct_exp})选项: @r 是否root数据集表达式 主要改变: 1、增加@r函数选项,取代原rootGroupExp表达式参数 2、取消数据的排序顺序descExp参数 3、更改排序顺序参数语法 举例:

财务报表计算公式大全

计算公式部分 第一章: 1.变动百分比=分析项目金额—分析基准金额分析基准金额 ×100% P19 2.构成比率=某项指标值总体值 ×100% P23 3.定比动态比率=分析期数额固定基期数额 ×100% P28 4.环比动态比率=分析期数额前期数额 ×100% P28 第二章: 5.营运资本=流动资产—流动负债。 P127 6.流动比率=流动资产流动负债 P129 7.流动比率=(流动资产—流动负债)+流动负债流动负债 P129 8.流动比率=营运资金+流动负债流动负债 P129 9.流动比率=1+ 营运资金流动负债 P129 注:(6—9流动比率的计算公式)中流动资产包括:货币资金、短期投资、应 收票据、应收账款、其他应收款、存货等。 流动负债包括:短期借款、应付票 据、应付账款、其他应付款、应付利息、应付股利、应付税费、应付职工薪酬 等。其中,流动资产通常指流动资产净额。 10.速动比率=速动资产流动负债 P133 11.速动资产=货币资金+短期投资+应收票据+应收账款+其他应收款 P134

第五章: 12.现金比率=现金+短期有价证券流动负债 P137 13.资产负债率=负债总额资产总额 P144 14.股权比率=所有者权益总额资产总额 P147 15.资产负债率+股权比率=负债总额+所有者权益总额资产总额 ×100% P147 16.资产负债率+股权比率=负债总额资产总额 ×100% + 所有者权益总额资产总额 ×100% P147 17.资产负债率+股权比率=100% P147 18.股权比率=1—资产负债率。 P148 19.产权比率=负债总额所有者权益总额 ×100% P149 20.产权比率=负债总额/资产总额所有者权益总额/资产总额 ==资产负债率股权比率 P149 21.产权比率=资产总额—所有者权益总额所有者权益总额 =1股权比率 —1 P149 22.权益乘数=资产总额所有者权益总额 P150 23.权益乘数=负债总额+所有者权益总额所有者权益总额 P150 24.权益乘数=1+产权比率 P150 25.权益乘数=资产总额所有者权益总额 =1股权比率 P151

财务报表各指标计算公式

财务报表各指标计算公式 偿债能力分析 短期偿债能力分析 计算公式:1.流动比率=流动资产/流动负债 2.速动比率=(流动资产-存货)/流动负债 3.现金比率=(现金+现金等价物)/流动负债 4.现金流量比率=经营活动现金净流量/流动负债 长期偿债能力分析 资产负债率=负债总额/资产总额×100% 计算公式:1. 2.负债股权比率=负债总额/股东权益总额 3.有形净值债务率=负债总额/(股东权益-无形资产净值) 4.利息保障倍数=(税前利润+利息费用)/利息费用 5.现金利息保障倍数=(经营活动现金净流量+现金利息支出)/现金利息支出 流动比率越高,说明企业偿还流动负债能力越强,流动负债得到偿还的保障越大。2:1更好。 速动比率越高,说明企业短期偿债能力越强。1:1更好。 现金比率越高,偿债越有保障,但是比率过高,意味着企业拥有过多的获利能力较低的现金类资产,企业的资产未能得到有效运用。 资产负债率越高,企业偿债能力越差,反之越强。 负债股权比率越低,说明企业长期财务状况越好债权人贷款安全越有保障,企业财务风险越小。 营运能力分析 计算公式:

存货周转率:存货周转率=营业成本/平均存货 平均存货=(期初存货余额+期末存货余额)/2 存货周转天数=360/存货周转率=平均存货×360/销售成本 应收账款周转率:应收账款周转率=赊销收入净额/应收账款平均余额 应收账款平均余额=(期初应收款+期初应收款)/2 应收账款平均收账期=360/应收账款周转率 =应收账款平均余额×360/赊销收入净额 流动资产周转率:流动资产周转率=销售收入/流动资产平均余额 流动资产平均余额=(流动资产期初余额+流动资产期末余额)/2 固定资产周转率:固定资产周转率=销售收入/固定资产平均净值 固定资产平均净值=(期初固定净资产+期末固定净资产)/2 总资产周转率:总资产周转率=销售收入/资产平均余额 资产平均余额=(期初资产总额+期末资产总额)/2 获利能力分析 计算公式: 销售毛利率和销售净利率:销售毛利率=销售毛利/销售收入净额×100% =(销售收入净额-销售成本)/销售收入净额×100% 销售净利率=净利润/销售收入净额×100% 营业利润率:营业利润率=营业利润/营业收入×100% 成本费用净利率:成本费用净利率=净利润/成本费用总额×100% 总资产报酬率:总资产报酬率=净利润/资产平均总额×100% 股东权益报酬率:股东权益报酬率=净利润/股东权益平均总额×100% 股东权益平均总额=(期初股东权益+期末股东权益)/2 股东权益报酬率=资产报酬率×平均权益乘数

财务报表

一、财务报表模块 (一)概述 财务报表是以货币为计量单位,综合反映企业在某一时点的资产状况以及一定时期内财务状况和经营成果的书面文件,是会计核算的最终成果,也是会计核算工作的总结。 UFO报表 User Friend Office用友办公软件 1、财务报表的分类 (1)按使用对象划分,分为对内财务报表和对外财务报表 (2)按报表的编制时间划分,分为月报、季报、半年报和年报。 (3)按反映的内容划分,可分为个别报表和合并报表。 2、报表的基本结构 (1)标题;(2)表头;(3)表体;(4)表尾。 通用报表的结构 资产负债表标题主管部门:会股01表 编制部门:*** 公司2007年06月30号单位:元 表头资产行次期初数期末数 流动资产 货币资金 1 882200.00 存货10 554000.00 表体资产合计 会计主管制表人表尾 3、财务报表模块的特点。 (1)数据来源途径多。 (2)生成报表的算法复杂。 (3)对外报表格式大同小异。 (4)对内报表要求多变。 (5)与其它会计核算系统存在密切的联系。 (6)财务报表模块操作 Excel 化。 (二)财务报表数据处理流程图

(三)财务报表模块的基本操作 1、财务报表模块的功能结构 UFO 报表的主要功能 (1)文件管理功能 UFO 提供了各类文件管理功能,除能完成一般的文件管理外,UFO 的数据文件还能够被转换成不同的文件格式。 (2)格式设计功能 会计凭证会计账簿 审核 设计报表格式 会计报表格式文件 其他业务子系统、其他报表 数据采集计算 会计 报表 外部数据 合并 报表 汇 总 表 分析 结果 合并 汇总 计算 报表管理 子系统 报 表 管 理 数 据 处 理 报 表 分 析 报 表 输 出 格 式 管 理 文 件 管 理

决算报表编制说明

2015年度部门决算报表编制说明 一、编报范围 (一)单位范围:本套决算编报范围包括列入2015年度部门预算编报范围的行政事业单位、企业和企业集团;未实行部门预算的地区,按行政事业单位预算范围编报本套决算。具体包括:各级国家机关、政党组织、事业单位和社会团体,纳入部门预算编报范围的企业和企业集团。未纳入部门预算编报范围的单位,不需向财政部门报送部门决算报表。 解放军、武警部队决算不纳入本套决算编报范围,其决算布置文件另行下发。 (二)资金范围:本套决算编报内容包括预算单位的全部收支情况,编报口径与单位预算衔接一致。财政部门拨付未纳入部门预算编报范围单位的资金,不需编报本套决算。 二、填报口径 (一)本套决算收支报表均不包括偿还性资金。 (二)本套决算中“基本建设类资金”指单位按照《基本建设财务管理规定》管理的资金,根据单位基建账并入会计“大账”后相关数据填报(未实行基建并账的单位,参照有关会计制度并账要求填报)。其中:财决05至05-2表、财决

08至08-2表中“基本建设支出”和财决06-2表中“基本建设支出拨款”指由本级发展与改革部门集中安排的用于购置固定资产、战略性和应急性储备、土地和无形资产,以及购建基础设施、大型修缮所发生的一般公共预算财政拨款收支,不包括政府性基金、财政专户管理资金以及各类拼盘自筹资金等。 (三)纳入本套决算编制范围的单位,参照“会计科目与部门决算报表对应关系表”设定的口径填报本套决算。 三、录入级次 (一)纳入本套决算编报范围、独立编报预算的单位,都应作为独立核算机构逐户编制和录入本套决算。 (二)县级以下(含县级)不具备分户录入条件的预算单位,可以汇总录入本套报表。县级预算单位原则上应分户录入到二级预算单位。乡镇级预算单位原则上应分户录入到一级预算单位,也可按乡镇汇总录入,两种录入方式由各省(自治区、直辖市、计划单列市)统一规定。 (三)预算单位应按照财务管理关系或单位预算级次,逐级汇总建立决算数据的树形结构。树形结构应规范、清晰。地方财政部门应按行政区划建立汇总节点。 四、填报要求 (一)一级预算单位应对部门本级、所属单位和本级代编决算报表进行审核、汇总,并对有关收入支出重复汇总数

中国神华财务报表分析

中国神华财务报表分析一、公司背景 (一)公司历史 1、公司成立 中国神华能源股份有限公司(中国神华)由神华集团有限责任公司独家发起(中国神华),于2004年11月8日在中国北京注册成立,注册资本为1988960万元。中国神华H股于2005年6月在香港联合交易所上市,A股于2007年10月在上海证券交易所上市。 2、公司主营业务 中国神华是世界领先的煤炭为基础的一体化能源公司,主营业务是煤炭;发电;煤化工;运输。2005年以H股上市时公司以煤炭和电力的生产与销售、铁路和港口运输为主营业务。2010 年,增加了航运业务;2013 年,增加了煤制烯烃业务。公司以煤为基础的产业链进一步延伸,竞争优势进一步巩固。一般经营项目:项目投资;煤炭的洗选、加工;矿产品的开发与经营;专有铁路内部运输;电力生产;开展煤炭、铁路、电力经营的配套服务;船舶的维修;能源与环保技术开发与利用、技术转让、技术咨询、技术服务;进出口业务;化工产品、化工材料、建筑材料、机械设备的销售;物业管理;以煤炭为原料,生产、销售甲醇、甲醇制烯烃、聚丙烯、聚乙烯、硫磺、C4、C5。 2.1 公司2014年主营业务状况

从上表看出,煤炭是神华的发展之本、利润之源,发电收入占主营业务总收入的33.5%,且所占比重在增大,运输和煤化工收入占比较小。 (1)煤炭

单位:百万吨 公司以市场化定价机制为核心,强化市场预判,根据用户需求组织适销煤种,积极开发新用户。2014 年,商品煤产量达到 306.6 百万吨,销售量达到451.1 百万吨。其中,国内下水煤销量达到 234.3 百万吨,占全国主要港口煤炭内贸发运量的比例约为 34.7%,较上年提高 0.7 个百分点。2014 年公司国内煤炭销售量为 439.6 百万吨(2013 年:503.8 百万吨),同比下降 12.7%,占煤炭销售总量的 97.4%,主要是公司减少了贸易煤和进口煤的销售量。2014 年公司国内销售中自产煤及采购煤的下水销量为 234.3 百万吨(2013 年:224.6 百万吨),同比增长 4.3%,占同期全国主要港口煤炭内贸发运量 675.2 百万吨的 34.7%(2013 年:34.0%),较上年提高 0.7 个百分点。2014 年公司对前五大国内煤炭客户销售量为 48.8 百万吨,占国内销售量的 11.1%。其中,最大客户销售量为 12.5 百万吨,占国内销售量的 2.8%。前五大国内煤炭客户主要为燃料公司及发电公司。 (2)发电 单位:十亿千

年度部门决算报表设计及

年度部门决算报表设计及 主要调整变动情况说明 一、报表设计基本情况 (一)报表设计思路 《年度部门决算报表》总体设计思路是:按照“科学、合理、简便、适用”的原则,依据新的政府收支分类科目,加强与部门预算的衔接,注重与行政事业单位会计制度的衔接,注重与公共财政改革进程紧密衔接,使部门决算报表能全面、准确反映行政事业单位预算执行情况,完整、真实反映行政事业单位的财务收支活动,全面揭示行政事业单位资产变动情况和事业发展成效,努力提高补充资料表的准确性和有用性。 (二)报表体系结构 年度部门决算报表体系仍包括基础数据表、填报说明、分析报告和分析表个部分。其中,基础数据表包括主表、附表和补充资料表,主要反映预算单位资金收支、资产负债、人员机构、资产配置使用以及事业发展成效等信息;填报说明主要用于解释和说明决算汇编的基本情况、公式审核情况以及决算编报中的特殊事项,以对部门决算报表与单位会计账的差异进行说明,提高决算数据的真实性和准确性;分析表是通过设定的分析表样和决算

软件的自动提数功能,重点从部门预算执行情况、财政性资金收支和有关政策性指标的落实等方面,对部门决算数据进行分析,为报表使用者提供清晰、直观的决算分析资料;分析报告是在基础数据表、填报说明和分析表的基础上,全面反映部门(单位)年度预算执行情况、事业发展情况的综合财务报告。 (三)报表填报口径 .部门决算编报范围 部门决算编报范围要求与部门预算编报单位范围和资金范围一致。但近两年在部门决算编审中发现,一些中央部门和地方省市将未纳入部门预算的自收自支单位财政直接列支的社保基金和政策性补贴等支出也列入部门决算,虚增了部门决算收支。预决算编报口径一致,是准确反映预算执行情况、分析预决算差异、提高预算编制准确性的前提。对此问题,统一要求为:()纳入部门决算编报的单位范围:按照预算编报口径编报部门决算,即:纳入部门预算编报范围的部门和单位,同时纳入部门决算范围;未纳入部门预算编报范围的单位,也不纳入部门决算编报范围,以便于进行预决算对比分析。 ()纳入部门决算编报的资金范围:纳入部门预算编报范围单位的全部资金都应纳入部门决算编报范围,其中一般预算财政拨款、政府性基金拨款、预算外资金拨款等财政性资金应与财政部门与预算单位的拨款对账单核对一致;由财政部门列收列支的

财务实习报告-----国电电力发展股份有限公司

国电电力发展股份有限公司财务报表分析

国电电力发展股份有限公司财务报表分析 [摘要]文章主要对国电电力发展股份有限公司07、08、09三年的财务会计报表进行了报表分析、财务能力分析等分析,得出了相应的分析评价。 [关键词] 国电电力财务报表分析 第一部分:引言 通过财务报表分析课程设计,目的在于使我们进一步熟练掌握财务报表分析的知识要点,把财务报表分析技术应用于具体的实务案例。加深我们对财务报表的理解,使我们能熟练掌握运用财务报表分析和评价企业经营成果、财务状况及现金流量的方法,基本具备通过财务报表评价过去和预测未来的能力,以及帮助利益关系集团改善决策的能力。 能源电力行业近两、三年来非常受人瞩目,资产和利润均持续较长时间大幅增长。2003年、2004年市场表现均非常优秀,特别是2003年,大多数公司的主营业务收入出现了增长,同时经营性现金流量大幅提高,说明整体上看,能源电力类上市公司的效益在2003年有较大程度的提升。2003年能源电力类上市公司平均每股收益为0.37元,高出市场平均水平95%左右。2003年能源电力行业无论在基本面还是市场表现方面都有良好的表现。 电力在我国属于基础能源,随着新一轮经济高成长阶段的到来,电力需求的缺口越来越大,尽管目前电力行业投资规模大幅增加,但是电力供给能力提升速度仍然落后于需求增长速度,电力供求矛盾将进一步加剧,尤其是经济发达地区的缺电形势将进一步恶化。由于煤炭的价格大幅上涨,这对那些火力发电的公司来说,势必影响其盈利能力,但因此电价上涨也将成为一种趋势。在这样的背景下,电力行业必将在相当长的一段时期内,表现出良好的成长性。 第二部分:公司简介 国电电力发展股份有限公司(股票代码600795)是中国国电集团公司控股的全国性上市发电公司,是中国国电集团公司在资本市场的直接融资窗口和实施整体改制的平台。公司于1992年经辽宁省经济体制改革委员批准正式成立,1997年3月18日在上海证券交易所挂牌上市,2002年底进入中国国电集团公司。截至2010年9月,公司股本总额123.95亿股;其中,中国国电集团公司持股59.86%,社会公众股东持股40.14%;总资产1240.26亿元,净资产291.94亿元。 国电电力目前拥有直属及控股企业51家,参股企业19家,筹建处10家。公司资产结构优良,所属企业分布东北、华北、华东、华南、西南、西北等地23个省、市、自治区。几年

2017年度部门决算报表编制说明

2017年度部门决算报表编制说明 代编决算代编报表的具体填报方法如下: 1.报表封面信息中“单位基本性质”按用款单位实际情况填列;“单位执行会计制度”选择“其他”填列;“报表类型”选择“经费差额表”填列;其他项目标识全部按单位实际情况填列。 2.表中内容按支出功能分类科目划分,需要按项目填列的要逐项填列。 3.代编经费报表的单位原则上仅限于一级预算单位,各级财政部门不得使用“经费差额表”。 (三)中央和地方预算单位收到非本级财政部门的经费拨款,如单位已纳入所在地区部门预算编报范围,则应使用“经费差额表”向拨出款项的财政部门编报有关经费报表,包括财决01表至财决11表等。按单位整体情况反映的报表,如“资产负债简表”(财决12表)、“基本数字表”(财决附03表)和“机构人员情况表”(财决附04表)等,原则上仅按预算管理关系报送,但实际由非本级财政部门负担人员经费的,财决附03表中人员情况应按经费比例或实际负担人数拆分报送。如单位未纳入所在地区部门预算编报范围,则不需编报本套决算。

(四)一级预算单位和各级财政部门汇总本套决算时应进行单位户数核对,检查新报因素和上年代码填报是否正确。 (五)一级预算单位和各级财政部门汇总本套决算时应进行枚举字典检查,检查部门标识代码等封面信息以及填列的各类政府收支分类科目是否符合规范。 (六)本套决算审核公式分为基本平衡公式、逻辑性公式和核实性公式三种类型。 1.基本平衡公式:用于审核表内平衡关系。软件中报错公式表现为红色,报错单元格表现为红色。应保持公式审核全部正确,不出现报错信息。 2.逻辑性公式:用于审核表内、表间相关数据逻辑关系。软件中提示公式表现为紫色,提示单元格表现为红色。原则上不应出现提示信息。如有公式提示,单位经核实并出具相关文件依据等,可保留提示信息,并在填报说明中列示有关依据。 3.核实性公式:用于审核表内、表间有关数据的合理性。软件中提示公式表现为绿色,提示单元格表现为黄色。如有公式提示,单位应根据会计账簿和有关台账进行核实,有错调整,无错保留,并在填报说明中进行说明。 审核中如出现多条公式提示或同一条公式提示涉及多个单位,应从明细报表或基层单位开始核查。多条公式或多

润乾集算报表交互分析之可钻取统计图

润乾集算交互分析之可钻取统计图 交互分析过程中不仅会对报表进行钻取,经常还需要需要统计图也具有钻取功能,统计图与统计图之间,统计图与报表之间进行多层级钻取。这需要报表工具具备相应功能,润乾集算报表中可以设置统计图超链接实现钻取需求。这里通过一个示例来说明使用过程。 编制汇总报表 这里以某年度按地区销售情况汇总报表为例,点击柱形图中的柱子钻取到指定地区下的二级汇总图表。设置报表年份参数year,并编辑报表表达式如下: 由于只显示统计图,第1、2行设置隐藏。 其中,A4中统计图定义如下:

设置统计图超链接 在统计图设置窗口切换到“显示外观”选项下,在图形超链接中设置目标URL:="{APPMAP}/reportJsp/showReport.jsp?rpx=/detail.rpx&year="+@year+"&area=@category" 。

在超链接属性中可能会用到@legend、@category 和{APPMAP}。 @legend:指代当前图例的显示值。在超链接中引用@legend,报表引擎运算时会将其替换成当前图例的显示值。 @category:指代当前图例的分类值。在超链接中引用@category,报表引擎运算时会将其替换成当前图例的分类值。 {APPMAP}:指代web应用的相对路径,在超链接中引用{APPMAP},报表引擎运算时会将其替换成web应用的相对路径。 报表引擎运算时会把@category、@legend 等当成宏,进行宏替换,所以需要注意上图中的超链接中{APPMAP}和@category均写在“”(双引号)内,使用时要尤其注意。 此外,从上图中可以看到,除了可以设置图形超链接,还可以设置图例超链接,用户可以根据实际需要进行选择。 编制目标报表 统计图钻取的目标报表为指定地区下的二级汇总图表,设置报表参数year和地区参数area,用于接收超链接传递的参数。编辑报表如下:

财务报表计算公式大全

财务报表计算公式大全标准化管理部编码-[99968T-6889628-J68568-1689N]

计算公式部分第一章: 1.变动百分比=分析项目金额—分析基准金额 分析基准金额 ×100% P19 2.构成比率=某项指标值 总体值 ×100% P23 3.定比动态比率= 分析期数额 固定基期数额 ×100% P28 4.环比动态比率=分析期数额 前期数额 ×100% P28 第二章: 5.营运资本=流动资产—流动负债。 P127 6.流动比率=流动资产 流动负债 P129 7.流动比率=(流动资产—流动负债)+流动负债 流动负债 P129 8.流动比率=营运资金+流动负债 流动负债 P129 9.流动比率=1+ 营运资金 流动负债 P129 注:(6—9流动比率的计算公式)中流动资产包括:货币资金、短期投资、应收票据、应收账款、其他应收款、存货等。流动负债包括:短期借款、应付票据、应付账款、其他应付款、应付利息、应付股利、应付税费、应付职工薪酬等。其中,流动资产通常指流动资产净额。 10.速动比率=速动资产 流动负债 P133 11.速动资产=货币资金+短期投资+应收票据+应收账款+其他应收款 P134第五章: 12.现金比率=现金+短期有价证券 流动负债 P137

13.资产负债率=负债总额 资产总额 P144 14.股权比率=所有者权益总额 资产总额 P147 15.资产负债率+股权比率=负债总额+所有者权益总额 资产总额 ×100% P147 16.资产负债率+股权比率=负债总额 资产总额 ×100% + 所有者权益总额 资产总额 ×100% P147 17.资产负债率+股权比率=100% P147 18.股权比率=1—资产负债率。 P148 19.产权比率= 负债总额 所有者权益总额 ×100% P149 20.产权比率= 负债总额/资产总额 所有者权益总额/资产总额 == 资产负债率 股权比率 P149 21.产权比率=资产总额—所有者权益总额 所有者权益总额 = 1 股权比率 —1 P149 22.权益乘数= 资产总额 所有者权益总额 P150 23.权益乘数=负债总额+所有者权益总额 所有者权益总额 P150 24.权益乘数=1+产权比率 P150 25.权益乘数= 资产总额 所有者权益总额 = 1 股权比率 P151 26.有形资产债务比率= 负债总额 有形资产总额 ×100% P152 27.有形资产债务比率= 负债总额 资产总额—无形资产 ×100% P152 28.有形净值债务比率= 负债总额 有形净值总额 ×100% P152 29.有形净值债务比率= 负债总额 所有者权益总额—无形资产 ×100% P152

DT铜鼻子技术参数【电气计算表格】.pdf

DT铜鼻子技术参数(国标与非标差距很大) A型(DT)国标铜鼻子技术参数 A型螺丝孔板宽板厚管内径管外径穿线深度长度重量规格Φ b S d D L1 L 克 G DT-10 8.5 16 2.3 5.2 9 30 63 22 DT-16 8.5 16 2.5 6.2 10 32 66 27 DT-25 8.5 18 2.8 7.2 11 35 70 32 DT-35 10.5 20.5 3 8.5 12 37 78 41 DT-50 10.5 23 3.5 9.7 14 41 85 62 DT-70 12.5 26 3.8 11.5 16 45 93 82 DT-95 12.5 28 4.5 13.5 18 49 104 115 DT-120 14.5 30 5 15.1 20 51 112 146 DT-150 14.5 34 5.4 16.5 22 54 117 190 DT-185 17 37 5.8 18.5 25 58 125 252 DT-240 17 40 6.5 20.7 27 60 135 320 DT-300 21 46 8 23.2 30 68 155 461 DT-400 21 50 8 26.2 34 74 165 632 DT-500 21 60 8 29.5 38 75 190 985 DT-630 无孔78 10 34.5 45 85 220 1700

B型(DT)非标铜鼻子技术参数 B型螺丝孔板宽板厚管内径管外径穿线深度长度重量规格Φ b S d D L1 L 克 G DT-10 8.5 14.5 1.8 5.2 8 28 58 15 DT-16 8.5 14.5 2 6.2 9 30 60 17 DT-25 8.5 16 2.4 7.2 10 30 65 23 DT-35 10.5 18 2.6 8.5 11 32 70 27 DT-50 10.5 20.5 3 9,7 13 35 75 43 DT-70 12.5 23 3.1 11.5 15 40 85 57 DT-95 12.5 26 3.4 13.5 17 41 91 77 DT-120 14.5 28 3.7 15.1 19 44 96 100 DT-150 14.5 30 4 16.5 21 46 100 126 DT-185 17 33 4.2 18.5 24 50 110 173 DT-240 17 35 4.5 20.7 26 55 120 212 DT-300 21 42 5.5 23.2 29 62 138 321 DT-400 21 50 8 26.2 34 74 163 576 DT-500 21 55 8 29.5 38 73 175 890 DT-630 21 60 10 34.5 45 80 205 1350

相关文档
最新文档