谈谈报表工具支持的数据源

https://www.360docs.net/doc/4816296338.html,/yqy

专注数据技术的社群

面对繁杂的数据源,报表工具如何搞定

01

02

03

04

数据源

报表支持哪些

新型源怎么连

高级中台

目录

CONTENTS

05

选型注意

目录

CONTENTS

专注数据技术的社

群01数据源介绍

关系型QL

常见案例

数据源,顾名思义数据的来源,数据源中存储各类信息。提到数据源,脑海里首先浮现的就是数据库

了。->

NewSql

关系型

NoSql

除了常规的数据库,其实还有其他的一些数据来源

后台服务形式

目录

CONTENTS

专注数据技术的社

群02

报表支持哪些

友乾营

报表数据源

报表作为数据呈现的载体,核心的还是有数据来源,作为报表工具(该讨论针对Java报表工具)就要更广泛的支持各类数据源。原则上来说都应该支持!!!

状态式计算图形

报表工具

布局格式DB/DW FileSystem HDFS

其他数据源

SQL

参数查询

报表呈现

导出

打印

数据源

存储过程

API

浏览器

目录

CONTENTS

专注数据技术的社

群03选型注意

注意(关于数据源)

union 1、关系型数据库的支持怎么验证?

2、非关系数据库如何访问?

3、文件类数据源支持情况如何?

4、服务类数据源能否方便搞定?

5、报表能否同时从多源取数?

注意 – 小结

union

传统的关系型数据库,都提供标准JDBC或ODBC,

不支持才怪,列再长没意思,不需验证!!!

前面这一堆才是选型时验证的重点!!!,各厂商直连?还是基于接口

二次开发? API太麻烦,直连才是好产品!!!

目录

CONTENTS

专注数据技术的社

04

新源都怎么连?

各数据源报表工具怎么去连

union

1、非关系型

mongodb、redis等

2、文件类数据源(txt、csv、excel、xml等)

3、服务类数据源(前后台分离,只提供数据接口)

Nosql

union

非关系型数据库

随着数据量的增大,非关系型数据库用的越来越多,Mongodb、Hbase、es、hive等。

有的提供JDBC,有的不提供。比如MongoDB,早前也在研究jdbc,但一直没能完善起来,后来不了了之,估计这东西确实不是那么好整的。对于报表工具,支持取数肯定没啥问题,api二开,执行各家的脚本。

Jdbc本身性能不好,还不一定有,写脚本又麻烦,怎么破?

union

常用的数据文件格式如excel、csv、txt、xml等,报表工具读取该类数据作为来源也是常见需求。常用方式:

1、将文件数据提前导入到数据库

2、通过api,大多带有自定义数据集功能,通过接口程序读取数据文件。 →

3、报表工具封装好对这些常用文件的支持,只需要按照步骤配置即可。

问题:如果数据文件比较大,一次将数据全部读出,性能上很大问题,或许影响整个业务系统运行。

怎么解决? 有没有流式读?能不能支持分批读? →

报表工具直连方式

union

第22期,《在报表中直接使用多样性数据源》 多篇幅介绍了文件类数据源https://www.360docs.net/doc/4816296338.html,/article/1573042681112

服务接口类

union

Web 报表的项目现在越来越多的做成前后端分离,后端做成微服务提供数据接口,这也是一类数据源。

针对这种数据源,基本都是采用api二次开发形式解决。跟文件数据源一样,借助报表工具提供的自定义数据集(程序数据集)功能,通过调用封装的接口获取数据,再把数据处理成各家产品认识的数据集对象。

API方式弊端:应用耦合性太高、不支持热加载、专门的开发人员。

有没有专门的工具解决这个问题?

目录

CONTENTS

专注数据技术的社

05更高级的中台

高级中台

1、文件类

2、Nosql类对比

3、服务接口类

4、多源处理

Java流式读取自然可以解决,但需开发人员且很麻烦。 要技术能力、开发维护成本高、高耦合、还不支持热加载!!!

简单方式:如从文件emplyee.csv中查询1981年1月1日(含)之后出生的女员工

Java流式读取自然可以解决,但需开发人员且很麻烦。 要技术能力、开发维护成本高、高耦合、还不支持热加载!!!

【汇总】常见的13种数据源及其与报表系统的连接方式

【汇总】常见的13种数据源及其与报表系统的连接方式本节介绍各类数据源的定义方法。 2.1 SQL Server数据源 定义SQL Server数据源的步骤如下: (1)在报表资源管理器中,在“数据源”节点上单击鼠标右键,选择“添加数据源”菜单项。 (2)在弹出的“报表数据源”对话框的“类型”处,选择“Microsoft Sql Client Provider”。输入SQL Server数据库服务器的名称或IP地址、连接数据库的用户名和密码,勾选“保存我的密码”,输入或者选择数据库名。如下图: (3)点击“确定”按钮,完成数据源创建操作,此时,在报表资源管理器窗口中的“数据源”节点下新增了一个名为“DataSource1”的子节点。

2.2 Oracle数据源 如果数据源是Oracle数据库,数据源的定义方法如下: (1)在报表设计器中,右键单击报表资源管理窗格中的【数据源】节点,再单击【添加数据源】,如下图: (2)在数据源【类型】处选择“Oracle Client Provider”。 (3)输入服务器名称:请输入Oracle数据库服务器的IP地址,以及数据库实例名,中间用斜杠分隔,例如:127.0.0.1/orcl (4)输入Oracle用户名、Oracle用户密码,勾选【保存我的密码】,如下图: (5)点击【连接字符串】切换选项卡,点击对勾状图标,验证连接字串的正确性,如下图:

(6)点击【确定】按钮,保存数据源设置。 如果在【连接字符串】选项卡中测试连接失败,可考虑用以下方法排除错误: (1)确保完整安装Oracle客户端软件,安装过程中选择【管理员】模式,以便包含所有必需的组件。并且,在64位操作系统中,必须既安装32位的Oracle客户端,又安装64位的Oracle客户端。 (2)如果访问Linux上的Oracle数据库时出现TNS 12514错误,一个可能的原因是服务器上的服务名并非ServiceName而是SID。要解决此问题,可以在Net Manager中设置服务命名时,选中【使用Oracle8发行版8.0兼容标识】,然后在SID框中输入服务名。如下图: 这个服务命名的配置信息保存在tnsnames.ora文件中,该文件保存在 C:\app\\product\11.2.0\client_1\network\admin目录下,如下图:

怎么在报表系统中添加数据源和数据集

怎么在报表系统中添加数据源和数据集 1. 数据源和数据集 添加数据源的目的是指定报表数据的来源。葡萄城报表支持多种数据源,包括关系型数据库和其他非关系型数据源。对于关系型数据库来说,数据源的核心就是数据库连接字串。 数据集就是真正需要展现在报表中的数据。对于关系型数据库,数据集定义的核心内容就是查询数据所用的SQL语句。 1.1 添加数据源 添加数据源是报表数据绑定操作的第一步,在设置数据源之后,才可以创建数据集。添加数据源的步骤如下: (1)在报表设计器中,右键单击报表资源管理窗格中的【数据源】节点,再单击【添加数据源】,如下图: (2)在报表数据源对话框中需要指定所使用的数据类型,连接字符串,以及与数据源相关的其它选项。如下图:

葡萄城报表支持多种数据源类型,包括关系型数据库、JSON数据源等。 一个报表模板中,可以添加多个数据源,并且可以是不同类型的数据源。 1.2 添加数据集 数据源创建成功之后,会显示在报表资源管理器的数据源节点中,您可以在该数据源中创建任意多个数据集,供报表使用。 添加数据集的方法如下: (1)右键单击已创建的数据源,再单击【添加数据集】,如下图: (2)在数据集对话框中,定义数据集名称、查询数据的SQL语句,以及数据集相关的其

它选项。如下图: 为了降低编写SQL语句的难度,对话框提供了可视化查询设计器(铅笔形图标),可帮助您选择需要查询的数据库表和字段。通过点击对勾形图标可检查SQL语句的正确性,验证之后,【字段】部分会自动列出数据集的字段列表。您还可以添加额外的数据集字段,比如在原有【数量】和【单价】字段的基础上,添加【金额】字段,数值是数量和单价的乘积。 您还可以设置查询超时时间、查询参数以及过滤条件等。 (3)点击【确定】,保存数据集的设置,返回到报表资源管理窗口。 数据集添加成功之后,会显示在报表资源管理器的数据源节点中。同一个数据源节点下可以创建多个数据集。 (4)点击数据集(如“DataSet1”)节点,可以看到SQL查询语句返回查询结果的数据字段列表,如下图:

多数据源报表—简单多源报表

多数据源报表—简单多源报表 1.描述 多数据源,就是在同一张报表当中,显示的数据来自于多个不同的表或不同的库。 如下图一张简单的多数据源报表,左侧蓝色部分来自于销量表,右侧黄色部分来自销售总额表,即数据来自于两张不同的数据库表: 2.示例 2.1打开单个数据源报表 打开报表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\CrossReport\Cr oss.cpt。 2.2新增数据源

再新增一个数据集ds2,其SQL语句为SELECT*FROM[销售总额]。ds2数据集与ds1数据集都有一个销售员字段。 2.3绑定数据列 如下图,将ds2中销售总额数据列拖拽到单元格中,并设置父格为销售员所在单元格,使销售总额跟随销售员而扩展: 2.4设置过滤 此时设计器预览,效果如下: 可以看到,扩展出来的每一个销售员下,都重复显示销售总额字段的所有数据。 虽然销售总额的父格为销售员数据列,由于他们来自于不同的数据集,因此销售总额不会将父格销售员作为条件进行筛选,即不存在附属关系。

我们需要销售总额与销售员一一对应,就需要设置过滤条件,将这两个数据集的数据通过销售员关联起来。 选中销售总额所在单元格,设置过滤,添加过滤条件:销售员等于'C4',取出与C4单元格中销售员匹配的数据,如下图: 2.5保存并预览 保存模板,预览报表,即可看到如上的效果。模板效果在线查看请点击Multi_1.cpt 已完成的模板,可参见%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Multidatasou rce\Multi_1.cpt 3.多数据源报表优势

快逸报表连接数据源

快逸报表连接数据源 用快逸报表设计器连接自己的数据库很简单,基本全部的操作都在设计器中完成。下面就以使用快逸报表设计器连接MYSQL数据库为例,演示如何连接自己的数据库。 第一步:把数据库的驱动拷贝到,快逸报表的安装目录下的JDBC文件夹下这个文件夹是快逸报表数据库驱动存放的地方。公司已经预存了常用数据库的驱动,要是运行时候报数据库驱动的错误,可以手动的把数据库的驱动拷贝过来,然后确认数据库已经打开即可(一般是到服务里把相应的数据库打开)

第二步:打开设计器,依次打开配置—数据源—新建—关系型数据库就会看见数据库连接配置的界面。

第三步:进行数据源的详细配置,数据源的名字:就是起个自己配置这个数据库的名字,这个名字是以后要是数据库连接池中使用的要和那的名字一致就行了(runqian)数据库类型:

就是你选择连接的数据库,我们提供的产用的数据库要是没有您的数据库您可以自定义。(mysql) ?客户端字符集:默认GBK,(GBK) ?数据库字符集:默认GBK,(GBK) ?驱动程序:如果您上面选择了数据库类型的话,这里就会有默认的驱动程序出来,选择默认的(com.mysql.jdbc.Driver) ?数据源URL:跟上面的一样要是选择数据库的话也是有默认的。注意的就是要替换括号里的内容这里填写的一般就是数据库的IP 端口相关信息 (jdbc:mysql://localhost:3306/mysql1) ?用户名和口令:就是您自己数据库的用户名和密码(root root) 第四步:连接数据库,配置好了以后进到数据源那个页面进行连接,要是还不成功检查上面的操作进行验证。

报表工具FineReport多数据源报表

报表工具FineReport多数据源报表 简单多源报表 1. 描述 多数据源,就是在同一张报表当中,显示的数据来自于多个不同的表或不同的库。 如下图一张简单的多数据源报表,左侧蓝色部分来自于销量表,右侧黄色部分来自销售总额表,即数据来自于两张不同的数据库表: 2. 示例 2.1 打开单个数据源报表 打开报表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\CrossReport\Cross.cpt。2.2 新增数据源 再新增一个数据集ds2,其SQL语句为SELECT * FROM [销售总额]。ds2数据集与ds1数据集都有一个销售员字段。 2.3 绑定数据列 如下图,将ds2中销售总额数据列拖拽到单元格中,并设置父格为销售员所在单元格,使销售总额跟随销售员而扩展: 2.4 设置过滤 此时设计器预览,效果如下:

可以看到,扩展出来的每一个销售员下,都重复显示销售总额字段的所有数据。 虽然销售总额的父格为销售员数据列,由于他们来自于不同的数据集,因此销售总额不会将父格销售员作为条件进行筛选,即不存在附属关系。 我们需要销售总额与销售员一一对应,就需要设置过滤条件,将这两个数据集的数据通过销售员关联起来。 选中销售总额所在单元格,设置过滤,添加过滤条件:销售员等于 'C4',取出与C4单元格中销售员匹配的数据,如下图: 2.5 保存并预览 保存模板,预览报表,即可看到如上的效果。模板效果在线查看请点击Multi_1.cpt

已完成的模板,可参见%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Multidatasource\Multi_1. cpt 3. 多数据源报表优势 多数据源报表传统的做法,是通过拼SQL将多源整合为单源。如上例中将销量表与销售总额表整合起来:SELECT * FROM 销量,销售总额 WHERE 销量.销售员 = 销售总额.销售员。若数据库表比较复杂,且使用的表个数不止2张而是更多时,可以想象,最终的SQL查询语句将会非常复杂。 FineReport天然支持多数据源的报表,一张报表中可以添加任意多个数据集,每个数据集使用最简单的SQL语句查询出需要的表数据,在报表中只需要使用过滤就可以将来自不同表的数据相互关联起来。使得多数据源报表制作更加简单。 多源报表在线视频请查看【多源报表】 复杂多源报表 1. 描述 上一节中,我们介绍了简单的多数据源报表,而实际应用时,交叉表当中的行列与汇总计算数据,均来自不同数据库也是很常见的。如下报表: 在这张报表中,项目总数,需财政安排数,单位自筹,它资金都是来自于不同的数据集。 2. 示例 2.1 准备数据集 数据库的数据表是项目ID与项目名称有一张单独的表来保存,另有项目数量,财政补贴资金,单位自筹资金,其它资金等四张列表。每张表均通过ID字段与项目名称表建立关系,以下是五张内置的数据集:

报表设计器安装和数据源配置

报表设计器安装和数据源配置 在安装盘中找到“润乾报表设计器v4.5.1.exe”文件,用鼠标双击文件,开始报表设计器设计器安装,如图: 在安装页面中选择中文选项,之后点击“OK”按钮进入下一步安装,如图: 在安装向导页面中点击“下一步”按钮,进入许可协议页面,如图:

许可协议阅读没有问题后,点击“我同意”按钮,进入下一步安装,如图: 在页面中选择需要安装的内容,其中“润乾报表设计器”是必须安装的,选择好后点击“下一步”按钮,如图:

在页面选择或输入报表设计器需要安装的目录。 在JA V A 运行环境变量的选择java 版本选项中有五中类型选项。这其中只有前两个常用,就是“default(1.5.10)”和 “JA V A_HOME”两项,在这两个项中有各自的使用方式,判断再机器中是否已经安装了JDK 运行环境,要是安装了就选择“JA V A HOME”选项,要是机器没有安装就选择默认的“default(1.5.10)”项。如在机器中已经安装了就选择“JA V A HOME”选项,系统会自动寻找Java 安装目录填写在输入框中,这时点击“安装”按钮进入安装页面,如图:

在安装完成页面中点击“完成”按钮,关闭安装页面。 这时为了能连接各种类型的数据库,需要安装盘下的LIB 目录下的数据库驱动文件覆盖到设计器安装目录下的JDBC 目录下。

在系统安装程序中打开报表设计器,现在开始添加数据源,在配置选项卡中选择“数据源”项,如图: 在打开的页面中可以新建数据源也就可以编辑已经存在的数据源,数据源可以建立与SQL SERVER(SQL 2000,SQL2005,SQL 2008),MYSql ,Oracle 等常用数据库连接的数据源。如图:

开源报表软件FineReport多数据源报表

开源报表软件FineReport多数据源报表 简单多源报表 1. 描述 多数据源,就是在同一张报表当中,显示的数据来自于多个不同的表或不同的库。 如下图一张简单的多数据源报表,左侧蓝色部分来自于销量表,右侧黄色部分来自销售总额表,即数据来自于两张不同的数据库表: 2. 示例 2.1 打开单个数据源报表 打开报表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\CrossReport\Cross.cpt。2.2 新增数据源 再新增一个数据集ds2,其SQL语句为SELECT * FROM [销售总额]。ds2数据集与ds1数据集都有一个销售员字段。 2.3 绑定数据列 如下图,将ds2中销售总额数据列拖拽到单元格中,并设置父格为销售员所在单元格,使销售总额跟随销售员而扩展: 2.4 设置过滤 此时设计器预览,效果如下:

可以看到,扩展出来的每一个销售员下,都重复显示销售总额字段的所有数据。 虽然销售总额的父格为销售员数据列,由于他们来自于不同的数据集,因此销售总额不会将父格销售员作为条件进行筛选,即不存在附属关系。 我们需要销售总额与销售员一一对应,就需要设置过滤条件,将这两个数据集的数据通过销售员关联起来。 选中销售总额所在单元格,设置过滤,添加过滤条件:销售员等于 'C4',取出与C4单元格中销售员匹配的数据,如下图: 2.5 保存并预览 保存模板,预览报表,即可看到如上的效果。模板效果在线查看请点击Multi_1.cpt

已完成的模板,可参见%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Multidatasource\Multi_1. cpt 3. 多数据源报表优势 多数据源报表传统的做法,是通过拼SQL将多源整合为单源。如上例中将销量表与销售总额表整合起来:SELECT * FROM 销量,销售总额 WHERE 销量.销售员 = 销售总额.销售员。若数据库表比较复杂,且使用的表个数不止2张而是更多时,可以想象,最终的SQL查询语句将会非常复杂。 FineReport天然支持多数据源的报表,一张报表中可以添加任意多个数据集,每个数据集使用最简单的SQL语句查询出需要的表数据,在报表中只需要使用过滤就可以将来自不同表的数据相互关联起来。使得多数据源报表制作更加简单。 多源报表在线视频请查看【多源报表】 复杂多源报表 1. 描述 上一节中,我们介绍了简单的多数据源报表,而实际应用时,交叉表当中的行列与汇总计算数据,均来自不同数据库也是很常见的。如下报表: 在这张报表中,项目总数,需财政安排数,单位自筹,它资金都是来自于不同的数据集。 2. 示例 2.1 准备数据集 数据库的数据表是项目ID与项目名称有一张单独的表来保存,另有项目数量,财政补贴资金,单位自筹资金,其它资金等四张列表。每张表均通过ID字段与项目名称表建立关系,以下是五张内置的数据集:

多数据源报表全面解析

多数据源报表全面解析 多数据源报表即一张报表中可以定义多个数据集,分别取出需要的数据库表,所取的数据库表甚至可以来自于不同的数据库。本文通过几个例子说明多个数据集数据如何相互关联来实现多源报表。 简单多源报表 1.描述 多数据源,就是在同一张报表当中,显示的数据来自于多个不同的表或不同的库。 如下图一张简单的多数据源报表,左侧蓝色部分来自于销量表,右侧黄色部分来自销售总额表,即数据来自于两张不同的数据库表: 2.示例 2.1打开单个数据源报表 打开报 表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\CrossReport\Cr oss.cpt。

2.2新增数据源 再新增一个数据集ds2,其SQL语句为SELECT*FROM[销售总额]。ds2数据集与ds1数据集都有一个销售员字段。 2.3绑定数据列 如下图,将ds2中销售总额数据列拖拽到单元格中,并设置父格为销售员所在单元格,使销售总额跟随销售员而扩展: 2.4设置过滤 此时设计器预览,效果如下: 可以看到,扩展出来的每一个销售员下,都重复显示销售总额字段的所有数据。

虽然销售总额的父格为销售员数据列,由于他们来自于不同的数据集,因此销售总额不会将父格销售员作为条件进行筛选,即不存在附属关系。 我们需要销售总额与销售员一一对应,就需要设置过滤条件,将这两个数据集的数据通过销售员关联起来。 选中销售总额所在单元格,设置过滤,添加过滤条件:销售员等于'C4',取出与C4单元格中销售员匹配的数据,如下图: 2.5保存并预览 保存模板,预览报表,即可看到如上的效果。 3.多数据源报表优势 多数据源报表传统的做法,是通过拼SQL将多源整合为单源。如上例中将销量表与销售总额表整合起来:SELECT*FROM销量,销售总额WHERE销量.销售员=销售总额.销售员。若数据库表比较复杂,且使用的表个数不止2张而是更多时,可以想象,最终的SQL 查询语句将会非常复杂。

动态数据源与报表系统绑定的4个步骤

动态数据源/集与报表系统绑定的4个步骤 实际项目中,存在一种设计报表时无法明确知道从哪个数据库中取数的情况。例如,根据查看报表的用户身份不同,所要取数的数据库也不同。在这种场景中,就需要用到动态数据源。 所谓动态数据源,就是连接字串为表达式形式的数据源。通过在表达式中使用报表参数,实现不同用户访问不同数据库的效果。 所谓动态数据集,就是SQL语句为表达式形式的数据集。通过在表达式中使用报表参数,实现不同用户访问不同数据库表或视图的效果。 创建一个动态数据源的思路如下: (1)先设计好静态的数据源连接字串和数据集。这是为了获得数据集的字段列表,以便设置表格、图表等报表元素的数据字段绑定。 (2)添加报表参数。 (3)修改数据源,将连接字串设置为表达式,表达式中引用报表参数,从而实现具体数据源随参数不同而变化的“动态”效果。 下面举例说明具体的设计方法。 4.1 设计静态的数据源 启动报表设计器,新建一个RDL类型的报表。 添加一个SQL Server数据源,连接字串如下: data source=(local);password=123;initial catalog=ArsDemo;user id=user1; 如下图:

添加一个数据集,SQL语句如下: select * from 产品 字段列表如下: 拖放一个表格到设计区,绑定数据集的字段,如下图: 预览效果如下图:

到目前为止,一个静态数据源的报表就设计完成了。 4.2 添加报表参数 添加报表参数是为实现动态数据源做准备。添加报表参数的步骤如下: (1)右键单击报表资源管理器的【参数】节点,再点击【添加参数】,如下图: (2)设置参数名称等信息,如下图: (3)点击【确定】按钮。 此时会看到报表资源管理器的【参数】节点下面多了一个DbName参数,如下图:

相关文档
最新文档