让Birt报表脚本数据源变得既简单又强大

  

概述:运行在JVM上的SQL函数和存储过程

总所周知,有些数据库没有强大的分析函数(如。Mysql),有些数据库没有存储过程(如。Vertica),当遇到复杂的数据计算,往往只能通过Python、R等外部脚本来实现,但这些脚本语言和主流工程语言(Java)集成性不好,如果直接用工程语言实现类似SQL函数和存储过程的功能,经常只是针对某个计算需求编写冗长的代码,代码几乎不可复用。

另外,即便拥有强大的分析函数,实现稍复杂的逻辑其实也不算容易,比如下面这种常见的业务计算,找出“销售额占到一半的前n个客户,并按销售额从大到小排序”,在Oracle中SQL实现如下:

 with  A 
  (SALESAMOUNT selectCUSTOM row_number(),配套;(order  by  SALESAMOUNT),排名
  得到销售)
  SALESAMOUNT select 定制
  得到(select 定制、SALESAMOUNT总和(SALESAMOUNT),配套;(order  by 排名),AccumulativeAmount
  得到一个)
  where  AccumulativeAmount> (select 和(SALESAMOUNT)/2,得到销售)
  order  by  SALESAMOUNT  descwith  A 
  (SALESAMOUNT selectCUSTOM row_number(),配套;(order  by  SALESAMOUNT),排名
  SALESAMOUNTfrom 得到销售)select 习俗;(select 定制,SALESAMOUNT,总和(SALESAMOUNT),配套;(order  by 排名),AccumulativeAmountfrom  A) where  AccumulativeAmount> (select 和(SALESAMOUNT)/2,得到销售)order  by  SALESAMOUNT  desc 

说明:按照销售额累计值从小到大排的序,通过累计值大于“一半销售额”的条件,逆向找出占到销售额一半的客户。为了避免窗口函数在计算累计值时对销售额相同的值处理出现错误,用子查询先计算了排名。

下面是用集算器实现相同逻辑的代码:
让Birt报表脚本数据源变得既简单又强大“> <br/>从上述代码我们可以看的到,集算器利用一套简洁的语法取代了需嵌套SQL +窗口函数才能实现的逻辑,并且具有通用一致性(任何数据源代码一致)。</p> <p> <强>集算器是一套运行在JVM上专门处理结构化数据的脚本语言,类似用SQL函数和存储过程,与Java集成可以创建可移植,功能强大和与数据库无关的计算逻辑,运行于中间层的计算逻辑和运行于数据库层的数据逻辑之间的分离,提高了应用程序的可扩展性,灵活性和可维护性。</强> </p> <h3>应用场景:报表数据准备</h3> <h4>应用结构</h4> <p> <img src=

<强>集成后,集算器嵌入报表应用层,相当于本地的逻辑数据库(不需要单独服务器部署),在报表与数据源间作为报表数据准备层,完成各种复杂的计算任务。

如何集成

下面以Vertica为数据源,Birt为报表工具,描述怎样集成esProc作为数据准备层。

(一)Birt开发环境

1,基础jar集成

集算器JDBC需要三个基础jar包,都可以在[esProc安装目录]\ esProc \ lib目录下找的到,分别为:

 dm.jar 集算器计算引擎及JDBC驱动包
  jdom.jar 解析配置文件
  icu4j \ _3 \ _4_5.jar 处理国际化dm.jar 集算器计算引擎及JDBC驱动包jdom.jar 解析配置文件icu4j \ _3 \ _4_5.jar 处理国际化

除了基础包外,还有一些为完成特定功能的jar包。如,要在集算器JDBC用其它数据库作为集算器的数据源,那么还需要相应数据库的驱动jar包,本文涉及到vertica,所以要同时增加其JDBC驱动包(以vertica9.1.0为例)

vertica-jdbc-9.1.0-0。jar vertica官网即可下载

获取到以上罐后,将其拷贝至Birt开发环境(安装目录]\ plugins \ org.eclipse.birt.report.data.oda.jdbc_4.6.0。v20160607212下。

注意:标红部分,不同birt版本略有不同

2,配置文件集成

raqsoftConfig。xml,主要包含集算器授权,脚本文件路径,其他作为集算器数据源的连接配置等。

可在[esProc安装目录]\ esProc \ config下找的到,需复制后放置在类路径下,同样将其拷贝至Birt开发环境(安装目录]\ plugins \ org.eclipse.birt.report.data.oda.jdbc_4.6.0。v20160607212下。

注意:配置文件名不能改变

(二)Birt应用环境

1,将(一)中的所有jar拷贝至应用的web - inf \ lib下

2,将raqsoftConfig。xml拷贝至应用的web - inf \类下

例一:常规调用

1, Vertica内销售表字段及数据说明(通过vsql查询,本测试库有2013/14/15年数据)
让Birt报表脚本数据源变得既简单又强大“> <h2 class=让Birt报表脚本数据源变得既简单又强大