润乾集算报表多样性数据源之动态SQL传递

大多数情况下报表的数据源SQL都是固定的,但有时也需要动态变动其中某些部分实现动态拼出,比如在报表应用中允许用户通过选择表和字段查询自己关心的报表数据,报表开发时则希望对同类报表(明细或汇总)使用同一模板。这时就需要在报表中接收相应参数拼接出动态SQL进行查询后制作动态报表。

润乾集算报表提供了两种处理动态SQL的方法,使用宏和集算脚本,可以快速完成这类报表,下面举例说明。

使用宏

集算报表提供了宏机制,通过在动态宏中拼接SQL后交由数据集查询结果,最后在报表中使用动态表达式获得字段名和字段值完成报表制作。步骤如下:

设置报表参数

应用中已经按照指定的参数格式将表名、字段名和查询条件传递给报表,因而报表参数设置如下:

其中cols值:订单ID,客户ID,订购日期,发货日期,到货日期,运货费;

where值:where 货主地区=‘华北‘ and 货主城市 in (‘北京‘,‘天津‘,‘张家口‘,‘秦皇岛‘) 。

设置宏

其中值为:"select "+cols+" from 订单"+where,宏类型为动态宏。

设置数据集

在数据集中引用上述定义好的动态宏。

编辑报表表达式

由于报表列都是动态的,无法事先制作固定列的报表,需要使用动态列函数。

这里使用了ds.fname()和ds.field()函数实现动态列报表,具体用法可参考集算报表相关文档。最后将辅助的A列和第一行隐藏即可完成报表制作。

通过使用宏和报表的动态函数可以快速拼接出动态查询SQL完成动态报表的制作,宏比较适合逻辑简单的情况,如果拼接的SQL比较复杂,需要进行一定的计算,那么使用宏就比较困难了,这时候就需要使用集算脚本来完成。

使用集算脚本

在集算报表中,可以通过“集算器”数据集和“脚本数据集”来引入集算脚本实现动态SQL传递的目标,由于不涉及重用和过多的调试,这里直接使用脚本数据集完成。

集算脚本使得简单拼接代码就可以实现宏在数据源方面的作用。除此之外,脚本还能完成更复杂一些的运算,比如用户在指定表和列时,有一些列是必选列,即使用户没有选择,在查询后仍然显示,这就需要在拼接SQL的时候事先判断必选列是否在用户的选出列中,如果不在,则在后面添加,同时要保证用户选出列的次序。

这里仍然查询订单表的数据,其中订单ID、雇员ID和订购日期为必选字段,使用脚本数据集完成可参考如下步骤:

设置报表参数

    与上面的例子类似,报表中仍然接收选择列和条件参数。

其中cols值:订单ID,客户ID,订购日期,发货日期,到货日期,运货费 ;

where值:where 货主地区=‘华北‘ and 货主城市 in (‘北京‘,‘天津‘,‘张家口‘,‘秦皇岛‘) 。

设置数据集

使用脚本数据集编写脚本进行SQL拼接和取数工作,并返回结果集。

使用集算脚本可以分步编写计算逻辑,而且由于其对集合运算的良好支持使得在A2中将所选字段集合与必选字段集合做并集即可获得所有查询字段,非常简单。其中:

A1:所有必选字段的集合

A2:将用户选择的字段集合与必选字段集合求并集,以保证保证所有必选字段都能选出

A3-A4:执行拼接好的SQL取数

A5:为报表返回结果集

设置报表表达式

报表表达式设置与前面使用宏中的设置一致,这里不再重复。

在集算报表中提供的两种处理动态SQL的方式可以很方便地完成类似的任务,宏适合只进行简单替换的场景,而复杂的情况,需要一定计算才能得到最终的SQL语句的场景则需要使用集算脚本(脚本数据集),在实际业务中用户可以根据情况进行选择。

时间: 2024-10-15 10:26:56

润乾集算报表多样性数据源之动态SQL传递的相关文章

润乾集算报表多样性数据源之动态源

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表除了支持不同类型的数据源(RDB.TXT文本.Excel.JSON.HTTP.Hadoop.mongodb)外,还可以根据实际应用情况动态连接不同的数据源完成动态数据源报表的开发.下面通过一个简单实例说明使用过程. 报表说明 应用中需要通过参数控制报表连接的数据源,当参数flag为1时连接数据源一(xmos1),否则连接数据源二(xmos2),查询指定年份到现在的订单情况. 在集算报

润乾集算报表用脚本实现动态SQL传递

大多数情况下报表的数据源SQL都是固定的,但有时也需要动态变动其中某些部分实现动态拼出,比如在报表应用中允许用户通过选择表和字段查询自己关心的报表数据,报表开发时则希望对同类报表(明细或汇总)使用同一模板.这时就需要在报表中接收相应参数拼接出动态SQL进行查询后制作动态报表. 与一般报表工具需要在第三方程序(如JAVA)中实现不同,在润乾集算报表中提供了内置的脚本(数据集),可以快速完成这类报表,下面举例说明. 某类报表中,用户在指定表和列时,有一些列是必选列,即使用户没有选择,在查询后仍然显示

润乾集算报表多样性数据源之json

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:JSON.HTTP.TXT文本.Excel.Hadoop.mongodb等. JSON作为一种轻量级数据格式应用非常广泛,报表读取json数据源进行报表开发的需求也很常见,另外有些报表还会接收来自HTTP服务器的数据进行报表展现.这里通过例子分别来看一下集算报表使用json数据源和http数据源的过程. 一般JSON数据源 报表说明 学

润乾集算报表多样性数据源之Excel

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:TXT文本.Excel.JSON.HTTP.Hadoop.mongodb等. Excel作为一种常见的文件格式广泛存在,很多报表的数据来源于Excel.由于报表一般都带有参数,经常需要对原始数据进行分组.过滤等,都需要再编写程序代码才能满足有参数报表的查询需求.这里通过一个例子介绍集算报表使用Excel数据源制作报表的步骤. 报表说明

润乾集算报表多样性数据源之mongodb

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:TXT文本.Excel.JSON.HTTP.Hadoop.mongodb等. mongodb等nosql数据库具有易扩展和高性能等优势,但计算能力比传统SQL要弱(如mongodb的分组结果不能太大,且不直接支持join运算等),而集算报表内置的计算引擎再正好可以补充这一点,在获得mongodb的优势的同时还拥有较强的计算能力. 这里通

润乾集算报表多样性数据源之文本文件

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:TXT文本.Excel.JSON.HTTP.Hadoop.mongodb等. 这里通过两个例子介绍集算报表使用文本数据源制作报表的步骤,对于小文本文件和大文本文件在集算报表中可以采用不同的方式进行处理. 小文本文件 报表说明 股票交易记录按月以文本形式存储,文件名为stock_record_yyyyMM.txt(如stock_recor

润乾集算报表多样性数据源之Hadoop

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:TXT文本.Excel.JSON.HTTP.Hadoop.mongodb等. 对于Hadoop,集算报表既可以直接访问Hive,也可以读取HDFS中的数据,完成数据计算和报表开发.Hive的访问和普通数据库一样使用JDBC就可以,这里不再赘述了.下面通过一个例子来看直接访问HDFS的过程. 报表说明 股票交易记录按月以文本形式存储在HD

润乾集算报表多样性数据源之多结果集

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表除了支持不同类型的数据源(RDB.TXT文本.Excel.JSON.HTTP.Hadoop.mongodb)外,还支持在一个数据集中为报表返回多个结果集使用,这样可以有效避免重复运算,提升报表开发效率和运算性能.下面通过一个实例说明多结果集的使用过程. 报表说明 根据学生成绩表查询总成绩前三名和后三名的学生姓名以及总成绩.报表样式如下: 由于要分别显示前三名和后三名学生姓名和成绩,报

润乾集算报表多样性数据源之混合多源

多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:TXT文本.Excel.JSON.HTTP.Hadoop.mongodb等. 在集算报表中除了单独使用以上数据源,还可以混合使用.支持混合多数据源是集算报表多样性数据源的又一表现.下面通过一个实例说明使用过程. 报表说明 员工每月应发工资跟员工的基本工资.考勤以及绩效有关,考勤信息来源于人力部门从考勤系统中导出的文本文件,基本工资和绩效