自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 收藏
  • 关注

转载 报表热切换是什么意思?如何做到?

热切换(Hot Swap)是指在系统不停机的情况下更换系统部件,在报表业务中则是指在不重启报表及相关应用的情况下完成对报表的维护(新增、修改、删除),冷切换则恰好相反。报表业务很不稳定,业务开展的过程中会刺激出更多查询统计需求,如果每次需求实现后都要等系统空闲(往往是非工作时间)时重启系统才能让修改后的报表生效,那将会对业务使用造成非常大影响(延迟)。因此在需求经常会变化的报表业务中,热切换显得尤其重要。事实上,在报表业务中要实现热切换并不难,只要在开发报表时选择合适的技术手段,避免使用诸如 JAV

2020-06-30 20:57:38 260

转载 报表工具有哪些打印技术?

在 C/S 时代,报表是由应用程序显示的,可以直接操控打印机来实现打印。进入到 B/S 时代后,报表呈现变成浏览器的事情了,而浏览器中的 JS 编程不能直接控制打印机,只能依靠浏览器本身的打印能力。这种方式下的问题很多,比如不能精确分页,浏览器一般是根据用户设置的页面大小和 web 页面的内容多少来自行决定分页位置,程序员很难控制;再比如不能准确对齐边边距及打印文字,无法实现发票套打等功能。浏览器为弥补这些能力,提供了 ActiveX 控件,这相当于把原来的 C/S 前端程序搬进了浏览器,这样就可以解决

2020-06-30 20:40:57 228

转载 报表的性能问题是怎样产生的?又该如何解决?

报表性能是总也避不开的话题,报表作为 OLAP(在线联机分析)中的主要应用场景,无论从涉及数据的宽度(表数量),还是数据的广度(查询范围)都可能非常巨大;而且在报表中还经常伴随非常复杂的数据处理逻辑,这些都会影响报表的运行速度。而服务器环境、数据库环境、JDBC 效率、网络环境、客户端环境这些也都都跟报表性能密切相关。报表性能可能跟很多因素有关,非常复杂。这里我们试着从报表运行的各个阶段来分析报表性能问题产生的主要原因及其应对方法。未尽之处,欢迎讨论。我们知道报表运行主要分报表解析、数据准备、数据传

2020-06-30 17:13:57 196

转载 什么是报表的多样性数据源问题?如何解决?

在报表开发早期,报表连接的数据源基本只有关系数据库,而且经常只有一种或者只有一个数据库。但今天就不一样了,数据源种类繁多,除了 RDBMS 还有1.MongoDB、Cassandra、HBase、Redis 这些 NoSQL 数据库;2.TXT/CSV、Excel、JSON/XML 等文件;3.HDFS 等分布式文件系统;4.webService;5.ES、Kafka 等其他数据源形式……当这些都成为报表数据源,报表需要从这些数据源分别或混合取数运算进行报表呈现时,报表就出现了多样性

2020-06-30 15:00:11 182

转载 为什么说当前报表开发的工作量主要在数据源环节?又如何解决呢?

我们知道,报表开发主要有两个阶段。第一阶段:数据准备。将原始数据加工成报表需要的结果集(数据源);第二阶段:数据呈现。根据已准备的结果集(数据源)编写表达式将数据以表格或图形方式呈现。这两个阶段虽然处于同一报表开发过程,但实现方式却大不相同。通常原始数据距离报表“能用”还相去甚远,通过 SQL/JAVA/ 存储过程等编码方式准备报表可用的数据源是第一阶段的目标,过程中可能涉及复杂的数据处理过程,因而这个阶段会牵扯较多的精力,占用的工作量也多。数据源准备好后,通过报表工具来解决数据以何种方式(

2020-06-30 14:20:40 158

转载 报表输入页码翻页(润乾 V2018)

报表数据分了太多页,一页一页翻页查看数据嫌麻烦,可以试试这种翻页效果——输入页码翻页。润乾报表提供了翻页相关的 JS 函数,可以在报表展现的页面中添加 JS 调用翻页函数实现输入页码跳转到对应页。1. 在 showReport.jsp 中 html 标签中添加属性userFuncBarElements="<input type='text' style='width:50px;' value='' name='atpage' id='atpage'><input type='

2020-06-30 13:18:38 457

转载 如何集成一个第三方报表,权限怎么控制

在了解如何集成前,首先我们得找对易于集成的报表工具,什么样的报表易于集成?1. 同平台的比如:java 开发的项目找 java 开发的报表工具2. 没有复杂系统功能的因为含有复杂系统功能的报表工具,跟自己的报表门户平台集成会存在冲突,比如:用户管理体系,单点登录等。这时就不能做无缝集成了,只能进行跨系统调用。如找到易于集成的报表工具后,其操作就相对简单了,比如 java 的,直接将报表应用放进自己的项目中统一管理就可以了,不易于集成的,需要单独部署、处理调用及单点登录,维护起来很麻烦

2020-06-30 09:03:05 182

转载 一句话从 Mysql 取每组前三名

MySQL 不直接支持序运算 ,写这些比较麻烦,大概是这样:select t.*from (select t1.*, (select count(*)+1 from A where g=t1.g and x>t1.x ) as group_id from A t1 ) twhere group_id<=3or...

2020-06-30 07:57:15 305

转载 web 端怎么实现套打发票、快递单等套打票据功能?

WEB 套打的基本解决思路是:把套打的格式做成一张图片,将要填入的数据按其在图片的坐标来定位,最后把数据填充到对应位置。但是具体实现时会遇到各种问题:1、 图片坐标定位不精准,实际打印效果有偏移;2、 多页数据套打时,无法进行数据准确定位;3、 套打数据的关联计算 / 页内计算支持性低;4、 格式改动后,代码需要重新编辑还有一种解决方法是通过报表工具,把套打格式扫描成图片,图片作为报表的背景图,然后以背景图为基准绘制报表格式,在对应位置编辑取数表达式以及其他数据处理方法,保证数据填充

2020-06-29 20:02:45 366

转载 大数据量的报表如何快速分页呈现?

在说明这个问题的处理方法前,先了解下是什么原因导致的大数据量报表呈现慢的问题。一般不外乎这两种原因:1 . 数据查询业务,查询条件宽泛,导致数据库查询后的结果集数据条数达到几百上千万甚至过亿;2 . 采用内存运算机制,即如此庞大的数据量要一次性在内存计算完成,后再进行呈现,用户体验特别不好,这个过程中很可能因为计算量大 出现内存溢出,无法继续计算。针对这种情况,我们可以采用异步处理的方式,将取数和呈现分为两个线程异步处理,取数线程发出 SQL 后不断取出数据缓存到本地,由呈现线程从本地缓存中

2020-06-29 19:19:54 331

转载 一句话从 Oracle 取每组前三名

Oracle 实现这个用到了窗口函数,以及子查询,写出来也不容易,如下SELECT *FROM ( SELECT g, ROW_NUMBER() OVER(PARTITION BY g ORDER BY x) group_id RN FROM A)WHERE group_id <= 3ORDER BY g ASC, group_id ASC这种场景,用集算器 SPL 更容易处理,只要很短一行:=connect(”OracleDB”).query...

2020-06-29 18:12:43 134

转载 web 报表如何使用以服务方式提供的数据源?

web 报表的项目现在越来越多的做成前后端分离,后端做成微服务提供数据接口,这也是一类数据源。虽整体框架结构一致,但各家做法及返回结果格式上可能都略有不同,也就导致没有通用的解决方案。目前来说,针对这类数据源基本都是采用 api 二开的形式解决。现在 java 开发的报表工具较多,基本也都会提供自定义类数据集功能,通过调用客户的微服务获取数据,然后再把数据处理成各家产品认识的数据集对象就行了。支持服务类的数据源没啥问题,但是通过 api 这种方式其实是有弊端的,应用耦合性太高、不支持热加载且还得有专

2020-06-29 16:52:49 135

转载 深度点评国内十大活跃报表 BI 产品

目前国内市场上的报表 BI 工具琳琅满目,看起来也各有特点,这给选型工作带来了一些困扰,本文就一些较活跃的报表 BI 产品进行点评,对于不太熟悉这些产品和技术的同学,可作为参考资料。这里选了十个产品,分作四类:国内报表类,国内 BI 类,国外 BI 类,国外开源报表类。每类两三种产品,在分类内大体会按面市时间为序来点评。需要强调的是,因为篇幅有限,不可能把市场上所有产品都选入,这并不意味着其它产品不好,看到结论部分时就会理解。这么分类是有意义的,同类产品大体具有相似的特征。其中,国内产品被分为报表和

2020-06-29 10:50:51 278

转载 一句话从 Hive 取每组前三名

Hive 实现这个用到了窗口函数,以及子查询,写出来也不容易,如下SELECT *FROM ( SELECT g, ROW_NUMBER() OVER(PARTITION BY g ORDER BY x) group_id RN FROM A)WHERE group_id <= 3ORDER BY g ASC, group_id ASC这种场景,用集算器 SPL 更容易处理,只要很短一行:=connect(”Hive”).query(“sele...

2020-06-29 09:23:54 391

转载 Tableau 等常见 BI 工具能集成到 java 项目中吗

答案是可以的,只是配置过程比较复杂。Tableau 有两个模块:tableau desktop 用来创建分析;tableau server 用来发布分析。集成的时候需要在 tableau server 中进行二次开发,创建票证、创建视图、兑换票证等一个完整流程都需要用户写代码开发实现。另外,由于 tableau 是一个完整的平台,无法单独拆出来 BI 模块让用户进行深度集成,所以集成时,需进行组织架构信息同步、单点登陆、权限同步等配置操作,工作量不减反而增加很多,实际用起来还是要跳转到 BI 平台上

2020-06-29 09:07:13 478

转载 在报表中可以如何使用 ECharts 做图形展现?

在报表应用中是可以使用 echarts 做图形展现的,实现很简单,因为 echarts 是使用 JavaScript 实现的开源可视化库,兼容当前绝大部分浏览器,可以流畅的在 PC 和移动端上显示。现在大多报表应用都会引入 echarts 丰富自己的图形展现,也有不少报表工具内置了 echarts,直接选择图形类型,简单配置分类、系列等属性就可以在报表中展现 echarts 图。如果报表内置的 echarts 图形中不包含要使用的,也可以简单操作就可以引入,具体引入方法参考 报表如何集成 echarts

2020-06-29 08:42:19 203

转载 很多浏览器都禁用 java 打印了,java 项目还有哪些打印方式

常见的打印方式除 java 打印外还有 pdf、flash,这两种打印方式不像 java 打印那样要求每个执行打印的客户端都要安装 jre,且要使用 IE 内核的浏览器。那么这两种打印有什么区别呢?下面举例说明1.Pdf 打印环境要求:浏览器安装 pdf 插件,如 adobeReader X优点:从服务器端下载 pdf 文件流,可以实现精准套打、批量打印等。缺点: 需要下载 adobe 插件2.Flash 打印环境要求:浏览器支持 flash 插件优点: 打印模式为矢量打印.

2020-06-29 08:09:46 273

转载 一句话实现MySQL库中的有序枚举条件分组

SQL 只有等值分组,枚举分组一般要用 case when 过渡,但又保持不了次序,要保留次序就得 join,比如写成这样:with T2(g,ord) as { select 'firstGroup',1 union all select 'secondGroup',2 ……}select T1.*from T2 join (select (case when condition1 then 'firstGroup...

2020-06-28 18:44:50 171

转载 怎样实现动态列报表,也就是列数不固定的报表?

一般有两种实现方式:1. 通过报表工具来做如下图这样的,浏览时候选择不同的指标,就可以展现不同的列具体做法参考 动态列报表的制作2 通过 BI 来做,如下图这样,拖拽需要的列到展示区,需要什么拖拽什么就可以,也是动态的具体资料可以参 把 Excel 透视表搬到 WEB 上...

2020-06-28 17:26:58 190

转载 一句话实现MySQL库中的重叠分组

枚举多个条件进行分组时,可能发生重叠,重叠部分仅计入某个组,还是计入所有符合条件的组,这在写 SQL 时,写法大不相同。只计入第一个符合条件的组时,可以通过 case when 转换成常规分组,例如:select (case when age<=18 then ‘Teenager’ when age>=16 and age<=30 then ‘Youth’ when age>=28 and ag...

2020-06-28 15:42:12 292

转载 WEB 报表如何做到不需要预览就直接打印

在浏览器中打印一般总要弹出个对话框预览再确认,但有时我们希望静默打印(点击打印后不再预览,直接打印),或者点击打印时能够连续打印多张表格。这需要要写些 JS 或者页面代码来实现,比如要通过代码画表格,然后通过 js 等去实现打印,这样实现有点麻烦,不过打印的内容常常都是报表,就可以采用报表工具来实现了。比如:一:用报表工具设置格式会更加简单灵活二:报表工具通常带有直接打印的功能,直接调用相应的功能就行,不需要写任何代码就行。具体可以参考下: 如何实现报表直接打印需求 (http://c.ra

2020-06-28 09:39:06 935

转载 如何将数据库中的数据导成 excel 文件

这个要看下具体格式,如果只是将数据库中的明细数据逐条导出到 excel 中的话,这个直接使用开源的 poi 就行,具体可以直接百度下,但是这种实际上没多大意义,大多数的需求是要求按照特定的格式导出,比如订单信息表要求每个订单号的数据导出到一个 sheet 里,这样的话通常建议采用报表工具做,比如我这边之前用过的润乾报表,主要原因:一:以特定格式导出时,用报表工具设置格式更为方便,尤其是样式比较复杂时,报表工具的优势就更加明显。二:报表工具直接带有导出 excel 的功能按钮,直接使用就行。二:报

2020-06-28 09:15:38 1151

转载 一句话从 MySQL 取出重复行

按该字段分组后,组内行数大于 1 的就是重复行。大于 1 要写入 having;但仅用 group+having 只能得到汇总值,不是明细数据,要得到明细还要用子查询重复遍历:select *from Awhere g in (select g from A group by g having count(*)>1)SQL 没有显式的集合数据类型,不能保持住分组后的子集,进而无法针对子集进行后续的多步骤运算,不得不用冗长的子查询。...

2020-06-28 08:55:49 249

转载 哪些 bi 工具是开源并且能集成的?

国内大部分 BI 工具是一个完整的平台,它的管理功能很难被深度集成,那么此时一个选择一个易于集成且拥有自助报表功能(BI 本质上就是自助报表)的报表工具不失为一个好的选择。润乾报表提供了完善的 BI 功能:拖拽、钻取、切片、汇总等。详细 BI 功能说明可以参考: 润乾报表多维分析功能漫游同时润乾报表的自助报表模块可以单独被集成到已有项目中,给个文件或 SQL 都可以直接引用(允许不事先构建语义层),用 tag 就能放进自己的页面;也可以建立数据模型让用户在 web 端操作,同时还可以进行权限控制。具

2020-06-28 08:49:10 229

转载 报表如何实现对数据列进行排名分析?

但这个 SQL 有点复杂,组内排名就更难写了(要用窗口函数,某些数据库还不支持窗口函数),再复杂的情况(例如按不同层次排名)就写不出来了。另外的办法是使用报表工具,大多支持复杂报表的工具都有这个功能,比如:玩转报表排名就可以实现这样的效果:...

2020-06-28 08:39:56 133

转载 java 如何简单快速处理 xml 中的数据

Java有什么方便解析XML的类库吗?比如处理如下这段XML: <?xml version="1.0" encoding="utf-8" ?> <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author&g...

2020-06-28 08:11:21 179

转载 java 如何简单快速处理 json 中的数据

JSONstr.json的runners字段是子文档,子文档有3个字段:horseId、ownerColours、trainer,其中trainer含有下级字段trainerId。需要根据文档序号查询对应子文档的horseId、ownerColours、trainerId字段。部分源数据如下: [ { "race": { "raceId":"1.33.1141109.2", "meetingId":"1.33...

2020-06-28 07:52:54 461

转载 大数据量报表展现慢容易卡死,怎么办?

大数据量报表展现性能优化方案主要有以下几种:1. 可以在数据库端做一些优化配置,例如:添加索引、优化 sql 取数性能等;或者优化系统配置:开启缓存机制、配置集群等。但是效果一般不会太明显2. 采用异步加载方式,即一边呈现一边读取,而不是一次性把数据读出来放到内存(这样什么软件都得被卡死)这种异步加载方式的配置方法可以参考: 秒级展现的百万级大清单报表怎么做大数据量展现慢属于报表性能问题之一,而在数据分析项目中出现性能问题的概率还蛮大的,可以根据 如何分析报表性能问题 进行排查,看看

2020-06-24 16:44:57 851

转载 怎样在报表中添加文字水印

开源报表工具(比如 birt、ireport 等)基本上都得通过背景图变相实现水印,麻烦。而商业报表工具大都提供便捷的配置方式,并且针对全局及单报表水印提供多方案,不过做法略有不同。在报表模板内配置水印属性,各厂家大同小异。区别较大的是全局水印,有的要借助平台功能,也就是脱离它的平台就没法使用了。有的做法就比较灵活,提供水印设置的标签属性,可参考文章文字水印怎么做,只要发布报表采用一个通用页面就可以实现了。另外,logo 图片也可以作为报表水印,可参考:Logo(图片)作为报表水印的解决方法.

2020-06-24 16:07:14 534

转载 页面表格怎么添加序号

举例:一般清单式表格采用 for 循环的方式生成序号,一般需要如下几步:1. 获取数据总条数2. 定义起始变量及步长3. for 循环输出编号但是,当表格涉及分组(如下图生成组内序号)且要按照分组各自生成序号,使用 for 循环处理就很费劲了,用报表工具处理就很简单,一般工具都会有内置函数能轻松解决这个问题,比如下面这个例子 数据报表多种序号生成方式...

2020-06-24 14:07:20 456

转载 Java 如何找出两个文本文件中有相同字段的行

Java有什么方便的类库做文件对比吗?比如:文件Old.txt和New.txt,第一行是列名,需要取出文件中Name字段相同的内容。部分数据如下: Old.txt New.txt Name Dept Rachel Sales Ashley R&D Matthew Sales Alexis Sales Megan Marketing Name Dept Emily ...

2020-06-24 13:28:25 231

转载 如何用 JAVA 生成有格式的 XLS

Java有什么方便的类库导出带格式的Excel吗?部分数据如下: ORDERID CUSTOM ORDERDATE FREIGHT 10262 Learnthe kernel trade 1996-07-22 48.29 10263 Resources are people 1996-07-23 146.06 10264 Wuzhou trust 2007-12-18 3.67 1...

2020-06-24 12:13:16 210

转载 Java 中如何使用 SQL 查询 TXT

Java不能直接使用SQL查询文本,一般常规做法:在数据库创建临时表,Java解析文本入库,再使用SQL对其查询、过滤、分组等。但实现过程太麻烦了。主要不方便体现在:1、Java代码写起来很长,开发环境配置也复杂,一般对人员要求较高。2、为了获得SQL的便利性,安装数据库、创建临时表,虽然不难,却很繁琐。3、一些临时性、突发性需求,搞起来周期长,甚至某些场景下不允许安装数据库,就很尴尬,全部用Java写,难度大。比如要处理这么个场景:查询1996-07-23后且单笔金额大于10000的订

2020-06-24 11:05:27 282

转载 一句话得到 SQL 难实现的去年同期比

按年、月分组,汇总得到每个月的合计值,没什么难的,就是个常规 group 操作。下一步是找到去年该月,数据整齐有序的话,向上第 12 条记录,肯定就是去年该月。但 SQL 无法单独的表述记录对象,也没有集合中相对位置的计算能力,得变通成自关联,把两条要计算的记录 join 成一条记录,再做记录内的多字段计算:with t as (select year(f1) y, month(f1) m, sum(f2) n from A group by y,m)select t1.*,...

2020-06-24 09:47:15 381 1

转载 页面表格怎么实现隔行异色、隔行变色

举例:采用 css+js 的方法,实现表格的隔行异色,需要如下几步: 定义 css 表格样式,如边框、宽度、颜色 在 js 中,创建 func()函数,并通过 onload 设置页面加载完成时,调用 func() 函数 通过 getElementById、getElementsByTagName 方法获得表格所有的行对象,通过 for 循环遍历表格每一行,根据奇偶行调用不同的样式类。 如果需要处理的表格较多,每次这样写会很麻烦。一般报表工具都能支持这种功能,只需要使用内

2020-06-24 09:08:45 726

转载 报表有 100 多万条数据,展现太慢了怎么办?

报表要展现 100 多万数据得用分页方式查询了,如果是自己写代码开发的报表就再实现一下分页查询就可以,不同的数据库实现机制不一样,具体网上资料很多。如果是用报表工具开发的报表,要看工具本身是否支持异步的分页查询,很多报表工具提供的还是常规分页(假分页),即一次性把数据加载到内存,然后前端再分页展示。好一点的方式是用数据库分页机制来做,利用行号来过滤,但这种方式也有很多弊端,比如你会发现翻到后面会越来越慢,还有这个里面 大清单报表应当怎么做? 提到的一些问题。还有一种更好的方式,按照上面帖子里给出的

2020-06-24 08:43:40 962

转载 web 中怎么实现斜线表头效果?

1. 直接做一个带有斜线和文字的图片,在 html 中引用。缺点:要求图片大小能和格子大小相同。页面做了自适应的功能的话,图片上的线可能会失真,效果不够理想。2. 用 css3 的标签 canvas,将其作为画布画一条斜线。缺点:会存在浏览器兼容性问题,如果只需要在 chrom 中使用可以考虑。其实现在大部分项目中做表都会用报表工具,工具中就基本都有这个功能了,设置方式也很简单,润乾报表中只要直接点选个按钮就轻松实现效果,也不用担心有什么浏览器兼容的问题,具体可以参考看下文章 那些特殊边框效

2020-06-24 07:29:13 346

转载 web 展现数据时如何实现行列互换

1. 行列互换需求最常见的是在 BI 分析中,在 BI 中这个功能也叫旋转,可以直接通过拖拽字段方式实现行列互换效果,例如:http://c.raqsoft.com.cn/article/1535678317741#toc_h3_62. 如果没有 BI 工具,只有报表工具的话,那么用报表也可以实现行列互换。例如超链接实现方式:http://c.raqsoft.com.cn/article/1575729781849#toc_h2_0或者通过宏动态控制行列字段显示,从而实现行列互换:htt

2020-06-23 14:34:45 198

转载 怎么控制报表的数据权限

控制报表数据访问权限,是让不同的人访问同一张报表的时候所看到的数据是不同的或者说只能看到权限范围内的数据。报表工具通用的做法是控制数据集(报表所呈现的数据基本都是来自数据集)。以 sql 数据集为例,只要 sql 的条件不一样,返回的数据也就不同了。比如 sql 写成:Select … from T where ${w}当 w 定义为 if(role==’admin’,”1=1”,” status=1”) 时,角色为“管理员”可以看所有数据,否则只能看到 status 字段值为 1 的。这种

2020-06-23 13:07:40 767

转载 BIRT 如何配置动态数据源

BIRT本身不直接支持动态数据源,常见解决办法是在数据源的beforeopen事件中添加类似如下代码: ... importPackage( Packages.java.io ); importPackage( Packages.java.util ); fin = new java.io.FileInputStream(new String("d:/config.txt")); props = new java.util.Properties( ); pr

2020-06-23 12:18:36 188

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除