关于报表工具:报表工具对比选型系列用例多源分片报表

4次阅读

共计 7203 个字符,预计需要花费 19 分钟才能阅读完成。

润乾报表、帆软报表、Smartbi、永洪 BI、亿信 BI 这几款国内产品都把中国简单报表作为宣传点。咱们以常见的多源分片为报表为用例,来比照评测这些产品的解决能力(因为工夫和常识限度,个别很偏的性能点可能会有脱漏)。

内容比拟长,如果不想看细节,能够间接跳到最初看论断。

[](http://c.raqsoft.com.cn/forwa…

报表式样

数据结构

[订单表]

主数据存储在订单表中,该表通过雇员 ID 和销售员表关联,通过产品 ID 和产品表关联。

[销售员表]

销售员表中存储职务、姓名,报表左下角统计数据时依照职务和姓名统计,该表通过雇员 ID 和订单表关联。

[产品表]

产品表中蕴含类别 ID 和产品 ID,并且是一对多关系,报表中须要依照类别分组,也就是要按该类别下多个产品的信息汇总。通过产品 ID 和订单表关联

[类别表]

这是一个中文字典表,通过它将类别 ID 映射成中文名称。

假设数据都来自数据库,可用 SQL 语句取出。

报表特点剖析

1、这是一个典型的多源分片报表,报表能够分成左上、右上、左下、右下四片区域,每片数据来自不同数据表(甚至可能不同数据库),须要实现多个数据集之间的关联。

2、对字段数据的解决,数据库中存储的是订购日期,报表中须要依照年、月分组统计,须要依据日期解析出年、月,汇总区域是金额,数据库中存储的是单价、数量,须要对字段进行相乘操作。

3、上表头中的产品类别须要按确定的秩序排列,也就是维表 ID 的秩序。

4、左表头的档次不一样,上半两层,下半三层。

上面看下几款工具制作这个报表的过程和工作量。

对于工作量的评估,咱们假设使用者均相熟 SQL 语句且理解相应的报表工具,并只记录理论的制作和失常调试的工夫,不包含查阅产品函数材料的工夫,也就是一个生手的实现工夫。

[](http://c.raqsoft.com.cn/forwa…

制作过程

1、配置并连贯数据源,这个各个工具操作根本都相似,依照向导形式配置就行。

2、设置数据集

润乾报表反对多数据集,本例的数据存储在四个表内,所以在报表中减少四个数据集,只有别离取四个表的数据(select * from …),能够通过向导操作。

3、设计报表模板

多源分片报表是一个比拟根底的中国式报表,国内报表工具根本都反对,这里看下几个要害单元格的设置:

3.1、A3 单元格表达式:=ds1.group(year( 订购日期);year(订购日期):1)+“年”,需要中要求依照年月分组,而数据库中存储的是订购日期,所以此处先通过 year 函数取订购日期中的年份。

3.2、D3 单元格:=ds1.sum(数量_单价),报表统计项中的金额是通过单价_数量这两个字段生成。

3.3、E2 单元格依照类别 ID 分组统计,然而要求这个单元格显示中文,单元格有个显示值表达式属性:

中文能够来自独自的一个数据集,这样通过内置的函数就能够将 id 映射成中文。

3.4、E3 单元格:=ds1.sum(数量 * 单价, 产品 ID in ds4.select( 产品 ID)),多源分片最次要的要将多个数据源数据关联在一起,函数里边写入过滤条件就行,销售额在 ds1 数据集中,E2 单元格的类别来自 ds4 数据集,ds1 和 ds4 通过产品 ID 关联,ds4 中类别 ID 和产品 ID 是一对多的关系,所以此处关联用 in,这样报表右上方就能取出对应类别下的数据汇总。

3.5、报表第四行表达式相似,次要是 ds1 和 ds3 数据集之间的关联,这里就不细说了。

3.6、单元格边框、合并单元格,这些操作和 excel 中基本一致,依照需要设置就行。

运行后果

实现后点评

1、用时 0.5 小时。

2、惯例设置和操作 excel 相似,再加上报表内的函数,制作起来很快。

3、函数丰盛,比方 =ds1.group(year( 订购日期);year(订购日期):1)+“年”,对订购日期的年份进行分组,间接用 year 函数取年就行,不用对源数据集进行独自设置;相似地,=ds1.sum(数量 * 单价) 数据由其余字段组合生成时,间接应用函数,不须要独自写 sql 语句等,这样只关怀报表中几个函数的应用就行。

4、多源关联方便,比方:=ds1.sum(数量 * 单价, 产品 ID in ds4.select( 产品 ID)),还是通过函数内置的一些性能实现,不必在数据集中处理,绝大多数操作都是在单元格函数中管制。

5、产品类别用维表扩大(E2 格中用 ds2.group 依据类别 ID 分组),很容易保障秩序,再设置显示值就能显示相应的中文名称。

6、采纳类 Excel 操作,布局、款式设置依照以前的思维解决就行,包含一些数据汇总等等。

7、表达式基本上都是手填,尽管有表达式编辑界面,但还不如手填来得不便。

[](http://c.raqsoft.com.cn/forwa…

制作过程

1、配置并连贯数据源

2、设置数据集

帆软报表反对单元格中的多数据集关联,在报表中新增四个数据集,别离对应 4 个数据表。但订单表的 SQL 非凡一点,先要用 单价 * 数量 as 销售金额,报表中要对销售金额汇总,金额来自单价和数量两个字段的乘积。因为在报表中没找到字段相乘汇总的方法,所以在取数时新增一个列。

3、设计报表模板

3.1 别离依据订购日期的年份、月份分组,将 ds1 中的订购日期拖拽到单元格 A3 中,在自定义分组对话框中设置自定义公式:`year($$$)+”年”`,将 ds1 中的订购日期字段拖拽到 C3 中,同样减少自定义公式分组,分组表达式为 month($$$)+”月”

3.2 D2 单元格依照城市排序,程序里默认依照中文的 ASCII 码排序,如果想依照拼音排序则须要在单元格属性的扩大排序中设置公式,如:

应用该函数须要下载函数插件。类别字段是按 ID 排序,则不须要专门解决。

3.3 交叉点中的销售金额统计,在数据集中先做了解决生成了销售金额字段,此处间接进行求和操作。

3.4 多数据集单元格关联。帆软在做多源关联的时候,通过下拉抉择数据列,操作符和比拟的对象,通过点击减少按钮,主动生成关联的条件表达式。

3.5 显示值设置

对 C5 中雇员 ID 须要最终显示出雇员的姓名,在状态中要抉择数据查问,设置对应的显示值字段。

报表后果

实现后点评

1、用时,0.5 小时。

2、数据集设置里间接用向导取数,没有非凡的写法,制作这样的报表对写 SQL 能力要求不高。

3、到处都有可视化界面,操作体验对初学者十分良好。比方报表中多源关联时,通过下拉抉择数据列、操作符和比拟的对象,就能主动生成关联的条件表达式,不须要对源数据进行关联解决。

4、工具采纳类 Excel 操作,布局、款式设置依照以前的思维解决就行,包含一些数据汇总等等。

5、运算模型把字段和表达式别离解决的,须要减少自定义表达式能力拖拽填入,对生手略显啰嗦。

6、中文排序默认是依照 ASCII 排序,并不是依照惯例的首字母形式,要按首字母排序要用 StringPinyin() 函数转换下,须要独自下载插件,这里有点不不便。

7、销售金额来源于单价 * 数量,帆软单元格里不能间接先对字段相乘而后再求和,本例中是通过 SQL 语句新增字段,文本数据源或者 nosql 数据库无奈执行 SQL 时,只能在报表中减少暗藏行,会比拟麻烦。

[](http://c.raqsoft.com.cn/forwa…

制作过程

1、配置并连贯数据源。

2、筹备数据集

报表反对多数据集,这里依照须要筹备四个,每个数据集别离取自形容中数据结构的四个物理表。

其中订单数据集:“select _, 数量_单价金额,year(订购日期) 年,month(订购日期) 月 from 订单”,因为报表内要依据订购日期按 年和月分组,但 smartbi 没有对应的单元格函数反对,所以须要在数据筹备阶段把须要分组的字段独立成一个字段。汇总金额也是同样的,在数据集已有字段先算出“金额”。其余数据集取出相应数据就行。

3、设计报表模板

3.1 订单数据集中曾经解决了年、月、金额等,所以报表中间接应用解决后的字段,用鼠标将相应的字段拖拽到对应单元格就行,和其余类 Excel 开发工具相似,此处就不做过细阐明了。

3.2 多数据集间关联是通过“过滤”性能,一般条件类型抉择数据列,上面的过滤条件就能够间接能够和其余数据集的字段关联了,如下

设计界面

运行后果

实现后点评

1、用时:1 小时左右。

2、Smartbi 在 excel 中进行报表开发,比拟合乎惯例应用习惯,次要查看下具体函数应用以及关联操作就行。

3、关联间接在报表单元格中通过向导形式设置,简略的关联不须要手写代码。

4、只管是点选形式设置过滤表达式,不过有些可复用的表达式没法复制粘贴,都必须反复点选一次。

5、对于年、月分组的解决,没有可用的单元格函数,须要在数据筹备阶段,基于“订购日期”字段把年、月独自解决成独立字段。订单金额同样,须要在数据集中设置。如果数据起源是文本文件或者是 NOSQL 数据库,无奈写 SQL 语句解决这些字段,这类需要就很难实现了,只能更改数据结构或者报表中减少辅助行列(本例是汇总表,须要减少大量暗藏行列),可行性不大,所以在理论利用中还是有肯定限度的。

6、在设计过程中发现,当有增删行时,其余格子设置的主格不主动变动,这个有点吃力了,一旦有这种状况,都得查看改一遍。

7、没有实在值和显示值的分类,导致寄存在不同库的码表无奈把名称给显示进去。如果必须弄,须要借助“转换规则”,先建转换规则,而后给业务数据集的字段抉择规定,而后单元格属性勾选“应用显示值”这个货色是系统配置,也就是须要零碎性能配合能力做到 ID 反显名称。


[](http://c.raqsoft.com.cn/forwa… BI

制作过程

1、配置并连贯数据源

2、设置数据集

永洪中自在格局报表反对多数据源,依照向导形式新增四个数据集,每个数据集对应数据库中的一张表,造成销售员、订单、产品、类别名称四个数据集。永洪报表单元格内反对少数剧集关联的,但应用起来有问题,比方类别表和订单表关联是通过产品 ID,类别和产品 ID 是个一对多的关系,永洪单元格内关联不反对这种 in 的模式,所以没方法用它的多数据集模型来实现这张报表。只能换个思路,在数据集阶段将多个数据汇合成一个数据集。本例中本质上是一个事实表和三个维表的关联,还能够改用组合数据集,通过向导将多个数据集后果关联造成一个单数据集:

2.1、新建组合数据集,将曾经创立好的四个数据集通过关联字段关联起来,通过向导形式设置就行。

2.2、订购日期年、月的解决,在数据集设置中,能够在订购日期上新减少统计字段,用内置函数生成新的字段年和月

2.3、金额的话同样,能够新增字段,里边写入 单价 * 数量,生成新的计算列

3、设计报表模板

在数据集设置中,用“组合数据集”将多个数据集关联成了一个数据集,并且对年、月、金额等数据做了解决,所以报表中设计器来就比拟不便了,间接用鼠标将字段拖拽到对应的地位,设置扩大方向、合并格等就能够了。

运行后果

实现后点评

1、报表制作用时,1 小时多。数据集多数据源关联须要较长时间。

2、数据处理能力较强,提供“组合数据集”将已有的数据集(可跨库)关联成一个新的数据集。可能在数据集根底上新增统计列。

3、多源关联反对有肯定局限性,最好的关联形式应该是报表内单元格间多数据集的关联,这样就不必思考具体数据集的起源,永洪自身是反对单元格内做格间过滤的,然而关联只能用“=”,而像本例中的类别和产品一对多的关联要用 in 模式,它就不反对了,所以必须要转成单数据集。本例是一个事实表和三个维表的关联,还能转换成单数据集凑合,理论利用中数据集个数可能会更多,关联会更简单、甚至会呈现多对多的关联,就做不成单数据集了。而且即便是维表和事实表的简略关联,还须要思考 left join 等关联形式,设置工作量大增。本例制作时维表中有冗余数据,导致数据不精确,花了较长时间才发现问题,严格上来说并不是一个好计划。总体来看,永洪的多源关联能力还不够欠缺。

4、上表头的类别排序实现艰难,永洪中单元格不反对显示值属性的设置,要想显示中文单元格内只能从数据集中取中文字段,这样就会依照中文字段排序了,无奈达到依照 ID 排序需要,倒是能够加个暗藏行,里边依照 ID 分组排序,而后下边减少一行显示中文,须要减少辅助行,有点麻烦了。

5、报表中设置了表头斜线,后果中能显示,然而在设计模板中看不到成果,容易造成混同。包含单元格多选,不能像 excel 那样鼠标选中一片,要按 ctrl 键,不太不便。

[](http://c.raqsoft.com.cn/forwa…

制作过程

1、配置并连贯数据源。

2、设置数据集

亿信反对多个数据起源,在数据集中减少多个数据集,数据集类型分为主题表和维表,主题表是报表中用到的主数据起源,也就是事实表,比方本例的订单信息,维表用于中文显示值映射,也就是码表。依照向导设置,内容就是一般的 sql 语句,比方(select * from ……)。

亿信报表也反对数据来自多个数据集,然而如果两个数据集要关联取数的话报表单元格内是无奈做到的,要提前在数据集设置页面设置表间关系。比方本例中订单表和销售员表是通过雇员 ID 关联,那么要设置一下两个数据集间的表关联关系:

3、报表设计页面

亿信报表的计算和其余报表工具不同,其余报表是先执行数据集取数,而后报表内依据表达式从数据集后果中取数运算,而亿信是剖析单元格、解析单元格表达式、查找表间关系、拼 sql 取数返回到单元格,比方产品类别那列,第二行是 CHANPIN 数据集,第三行是 DINGDAN 数据集,

如果数据集创立阶段没有设置表间关系,那么会解析成两个 SQL 去数据库取数,因为报表单元格内无奈设置关联,这两段数据是没有任何关联的,本例要求取对应类别下的数据,所以在数据集处创立了 CHANPIN 和 DINGDAN 的关联,这样这块就会解析成相似:select price*num from DINGDAN,CHANPIN where DINGDAN. 产品 ID=CHANPIN. 产品 ID,将这个 SQL 发送到数据库端而后取后果返回,这样就能关联展现,这里能够看到,因为要解析成一个 SQL,所以要求两个数据集起源必须是同一个库。从这个意义讲,亿信并不能算严格反对多源关联报表,要害运算是转换成 SQL 丢给数据库去做的。

亿信的难点在于后期的数据整合、设置表间关联,报表设计的具体操作和其余工具就都比拟相似了,比方类别那能够取类别 ID 并依照 ID 排序,在设置显示值,具体这里就不一一阐明了。

运行后果

实现后点评

1、制作用时 1 小时。

2、多源关联时的解决,要对源数据进行数据的关联解决,数据集多时,找表间关联关系还要验证关联后的数据准确性,耗时较长。

3、能够通过函数对数据集字段操作,比方年、月维度的管制,销售金额来源于 danjia*shuliang,不须要在数据集中控制。

4、难点在数据关联解决,数据处理实现后,这个报表格局比较简单,理论报表制作次要通过鼠标拖拽还是比拟不便,当然这个如同多个报表工具操作都差不多。

5、多源关联反对是有问题的,亿信的机制是报表计算时解析单元格内的表达式而后寻找表间关系再拼成 SQL 形式去数据库取数(其实实质还是数据库内的关联),那么就要求多个数据集来自同一个库,这样无奈解决异库数据集间的关联,更无奈反对非数据库起源的数据。即便是同一数据库,在设置表关联时为保障维数据的不失落,还要思考 left join 等状况,实际操作起来还是有些难度的,还要避免出现多对多的状况,否则无奈保证数据的正确性,以后机制下解决多源关联类报表难度大。

[](http://c.raqsoft.com.cn/forwa…

多源分片报表是十分典型的简单报表,仅仅从这一个简略例子,也能看出各家产品的格调,而且,这些格调并不只局限于这一个报表,能够说是这些产品的基本特征。

  1. 如果不纠结细节的话,各家产品都能实现这个报表,从性能上讲算是都能过关的。
  2. 从报表开始起家的润乾和帆软显著要更强,制作过程流畅性要比永洪和亿信这两家以 BI 起家的产品好很多。后两者并不以简单报表作为次要卖点,但受市场压力,也要提供这种能力,基本上就是做到“能够用”的程度,但远远谈不上好用。Smartbi 介于这两类两头,它以 BI 起家,但年代要长远,受到简单报表的需要压力也较多,能力比永洪亿信要好很多,但和润乾帆软相比仍有肯定的差距。
  3. 报表模型上,润乾和帆软根本一样,Smartbi 也相似;永洪和亿信则相差较大。这种单元格扩大来解决分片报表的机制先由润乾创造,帆软之后追随,扩大模型层面基本上全抄,只是改了术语名称(主格改叫父格),因而是一样的,能力也根本相当。Smartbi 之后再抄过来(延用了帆软的术语,这外面还有故事就不说了),后果造成了类似的模型。而永洪和亿信的 BI 基因较强,对简单报表的逻辑了解还不够粗浅,模型就差了很多,能力当然也会差很多,这两家产品的简单报表只能算是入门阶段,和其它三家相比不在一个品位。
  4. 润乾和帆软的应用都较为晦涩,但格调也仍有不同。润乾制作过程中提倡手写表达式,而帆软则更多用可视化界面。看起来后者会对使用者更敌对,这也是业界经常说用润乾难帆软易的景象。但对于生手来讲,手写表达式的效率更高,而且能够随便灵便组合;应用界面编辑对生手门槛低,生手却会嫌烦,还就义灵活性。比方此例中帆软须要先定制数据集把表达式逻辑化成字段才行,而润乾对于表达式和字段是同一套规定,无需专门解决。
  5. 从这个意义上,润乾和帆软的扩大模型尽管都一样,但底层运算模型还是有差别。润乾的形象水平更深,数据计算能力也就更强,初期把握难度略大,但一旦把握就会发现可能横扫所有;而帆软思考的状况要简略,在简略状况下更棘手,但碰到非凡状况时还要再用非凡伎俩,反而进一步提高学习老本。后果的体现是:首次应用且没碰到简单状况时帆软的效率更高(选型考查产品时经常是这样的),长期重复应用时(总会碰到简单状况了)润乾的效率就会显著占优。
正文完
 0