版本与授权

获得永久免费授权

推荐内容

快逸视频教程

快逸做的更好

您的位置:首页 > 版本与授权 > 多源关联分片介绍

多源关联分片介绍

多源关联是快逸报表增强版的特色功能点,报表开发人员灵活使用此功能将大大降低开发的工作量,同时增加报表系统的可维护性,从而方便地进行系统的二次开发和功能扩展。下面我们举例说明快逸报表是如何轻松地实现多源关联功能的。

为什么需要多源关联功能

很多用户会问:多源关联功能到底什么?为什么做报表需要用到多源关联功能?

在回答这两个问题之前我们首先要了解什么是“报表分片”,正是由于分片,使得报表设计需要直接基于多源进行,而很难先将多源转成单源进行,有相当一部分分片报表无论如何也不可能转化成单源处理,部分能转成单源的报表处理也非常繁琐。

快逸报表增强版的纵向分片报表
图一,典型的纵向分片报表

让我们直接来看下面这个实际应用例子:

如上图所示:这张报表从纵向被分成5片,分别来自5个不同业务分块(可能是不同的数据表,甚至不同的数据库),每片分组层数不同,而且变动与固定结合,各片之间还有数据沟通(某些计算行的值是由其它行计算出来的)。这种报表被称为分片报表,那为什么分片报表需要使用多源关联功能呢?让我们继续看。

如果大家用过其它传统报表工具,请大家结合其它传统工具的使用经验,想想如何来做这张报表?

有人可能会想到通过SQL语句将多源数据先转成单源报表,再处理,但是这种方法会带来很多问题:

  • 问题1,需要开发人员编写杂的SQL(UNION+JOIN)和代码准备数据,导致工作量大且后期维护困难。
  • 问题2,用这种方法很难处理这各个分片之间的数据沟通和互相引用问题。
  • 问题3,如果报表不是纵向分片,而是横向有多个分片的报表,当采用JOIN方式准备数据,关联条件复杂时很可能导致O(Nk)的高计算复杂度(k为分片数),报表性能很低。

具体例子如下图所示:

传统报表工具的复杂的传统SQL语句
图二,复杂的传统SQL语句

还有的开发人员会想到使用子报表拼接的方式来做图一中的表,把每个分片做成一个子表,然后再在主表中拼接起来。这种方法在理论上是可行的,但是实现起来也非常繁琐麻烦,子表割裂了整表的一致性,一张报表被分成了多个小表,难以统一处理,给维护管理工作带来很多麻烦。

  • 麻烦1,从格式上看,各个子表各自独立,很难将格线统一对齐,某个子表的格式进行了调整,所有其它子表都需要改动,这是极其繁琐的工作。
  • 麻烦2,每个子表的大小不固定(可能随数据记录数而变化),由于传统报表工具的行列不对称,纵向分片排列的几个子表可以自动摆位,而横向分片则不行,数据可以拼出,但格式无法拼出。
  • 麻烦3,主子表之间和子表相互之间都无法沟通数据,只能将主表的数据作为参数传递给子表,子表无法带回信息,也无法向其它子表提供信息。这时,整表的混合运算将非常困难,必须单独计算,无法采用子表的中间运算结果,不仅书写复杂,运算效率也很低。

从图一的例子可以看出,应对复杂的分片报表,需要一种全新的解决方案,正是这种需求使多源关联功能成为报表开发人员的首选。快逸报表的多源关联功能可以使报表开发人员非常方便高效的做出非常复杂的分片报表,并且具有以下优点:

  1. 不论报表是横向分片还是纵向分片,都使用相同的制作方法。
  2. 不需要写复杂的SQL。
  3. 不需要将多源数据转成单源数据。
  4. 不需要将分片报表用子报表拼接来实现。
  5. 没有格线对不齐的情况出现。
  6. 并且可以很方便地在各个分片之间做数据交换,甚至包括一些中间计算结果的混合运算。
  7. 运算效率高。

接下来让我们来看快逸增强版的多源功能是怎么解决这些问题的。

快逸增强版的多源分片功能

还是让我们结合上面的例子来看快逸增强版的解决方案吧,如下图所示:

用快逸报表增强版做多源关联分片报表
图三,用快逸报表增强版做多源关联分片报表

图三为在快逸增强版中设计图一报表的截图,从图中可以看出张报表被一次性的画出,没有分成若干个子报表,本表中一共使用了四个数据集:ds1、ds2、ds3、ds4,开发人员可以理解成数据来自四个不同的数据源。

从图三中绿色的第3、4行可以看到,数据集ds1存储的是客户信息,被用来做“按客户汇总”的前面的二级客户分组,而“汇总”数据却来自于数据集ds4中存储的合同信息。横向上,图三中红色部分的二级横向分组需要的行业信息,来自月数据集ds2中存储的行业信息。在绿色的第3、4行中,ds4轻松算出由ds1划分的“按客户”的合同汇总信息,而且在横向上,也很方便地按ds2给出的行业信息进行了细化。请大家回头在看看图一,对比一下两张图,很快就可以明白多源关联的强大功能。

数据集ds1,ds2,ds4的数据交叉关联,很方便地做出了张纵向分片的交叉报表,没有用到任何复杂的SQL语句,也没有将报表分成多个子报表,更加没有阻碍多个数据源直接的数据交换和关联。

由上面里例子可以看出快逸增强版的多源关联功能能使复杂的分片报表开发更简单高效。让我们在来看一个主从报表例子,大家就会更加明白。

下面的图四就是个典型的主从表,也是典型的多源关联分片报表。主记录中的金额显然是明细信息中各产品金额的和,而在传统工具的主子表模型中,主表的合计值不能引用子表的数据,必须自行重新计算。

快逸报表增强版做的主从报表中主表引用了从表的数据
图四,主从报表中主表引用了从表的数据

和图一的例子一样,利用快逸增强版的多源关联功能方便而高效地做出这种主从报表。如下图所示:

用快逸报表增强版做多源关联做主从报表
图五,用快逸报表增强版做多源关联做主从报表

对于图四和图五这种主从表,在快逸报表开发中无需借助子表概念,从表(7-8行)本身可以自行扩展重复,由于设置了主格关联,整片从表会自动跟随主记录重复,而且主表和从表间可自由沟通信息,比如,虽然主表使用的是ds1的数据,从表使用的是ds2的数据,主表F5格中的金额合计还是可以直接由从表F8格中“总金额”求和计算出来(表达式SUM(F8{})),真正实现了跨多个数据集的多源关联运算。

快逸报表增强版在快逸报表开发版的基础上增加了对于多源关联的支持,大大提高了对于复杂报表的开发效率。快逸报表增强版可以同时支持三个并发任务,完全可以满足一般报表应用对于性能的要求。可以说,快逸报表增强版是中小型应用系统开发的理想选择。

如果您阅读到这里,发现快逸增强版的多源关联功能可以解决您的问题而带来方便,请不要犹豫,马上和快逸销售人员联系,申请使用快逸报表增强版。

更多快逸报表示例

快逸报表基础视频教程

快逸报表在线演示系统