ylbtech-杂项:SpagoBI

SpagoBI是一个商业智能平台,为商业智能项目提供了一个完整开源的解决方案。它涵盖了一个BI系统所有方面的功能包括:数据挖掘、查询、分析、报告、Dashboard仪表板

1. 产生背景返回顶部
经过几年的积累,大部分中大型的企事业单位已经建立了比较完善的CRM、ERP、OA基础信息化系统。这些系统的统一特点都是:通过业务人员或者用户的操作最终对数据库进行增加、修改、删除等操作。上述系统可统一称为OLTP(Online Transaction Process,在线事务处理),指的就是系统运行了一段时间以后,必然帮助企事业单位收集大量的历史数据。但是,在数据库中分散、独立存在的大量数据对于业务人员来说,只是一些无法看懂的天书。业务人员所需要的是信息,是他们能够看懂、理解并从中受益的抽象信息。此时,如何把数据转化为信息,使得业务人员(包括管理者)能够充分掌握、利用这些信息,并且辅助决策,就是商业智能主要解决的问题。  如何把数据库中存在的数据转变为业务人员需要的信息?大部分的答案是报表系统。简单说,报表系统已经可以称作是BI了,它是BI的低端实现。
国外的企业,大部分已经进入了中端BI,叫做数据分析。有一些企业已经开始进入高端BI,叫做数据挖掘。而我国的企业,大部分还停留在报表阶段
数据报表不可取代
传统的报表系统技术上已经相当成熟,大家熟悉的Excel、水晶报表、Reporting Service等都已经被广泛使用。但是,随着数据的增多,需求的提高,传统报表系统面临的挑战也越来越多。
1. 数据太多,信息太少
密密麻麻的表格堆砌了大量数据,到底有多少业务人员仔细看每一个数据?到底这些数据代表了什么信息、什么趋势?级别越高的领导,越需要简明的信息。如果我是董事长,我可能只需要一句话:我们的情况是好、中还是差?
2. 难以交互分析、了解各种组合
定制好的报表过于死板。例如,我们可以在一张表中列出不同地区、不同产品的销量,另一张表中列出不同地区、不同年龄段顾客的销量。但是,这两张表无法回答诸如“华北地区中青年顾客购买数码相机类型产品的情况”等问题。业务问题经常需要多个角度的交互分析。
3. 难以挖掘出潜在的规则
报表系统列出的往往是表面上的数据信息,但是海量数据深处潜在含有哪些规则呢?什么客户对我们价值最大,产品之间相互关联的程度如何越是深层的规则,对于决策支持的价值越大,但是,也越难挖掘出来。
4. 难以追溯历史,数据形成孤岛
业务系统很多,数据存在于不同地方。太旧的数据往往被业务系统备份出去,导致宏观分析、长期历史分析难度很大。
因此,随着时代的发展,传统报表系统已经不能满足日益增长的业务需求了,企业期待着新的技术。数据分析和数据挖掘的时代正在来临。值得注意的是,数据分析和数据挖掘系统的目的是带给我们更多的决策支持价值,并不是取代数据报表。报表系统依然有其不可取代的优势,并且将会长期与数据分析、挖掘系统一起并存下去。
 
2. 发展版本返回顶部
2011年6月16日,3.0版本发布;
2011年7月22日,3.1版本发布;
2011年12月22日,3.3版本发布;
2012年4月17日,3.4版本发布;
2012年7月13日,3.5版本发布;
2012年10月23日,3.6版本发布;
2013年6月18日,4.0版本发布;
2013年12月3日,4.1版本发布;
2014年4月10日,4.2版本发布;
2014年9月16日,5.0版本发布,此版本中添加的驾驶舱功能。
2015年1月22日,5.1版本发布;
 
3. 主要功能返回顶部

基本介绍

商业智能套件SpagoBI提供一个基于J2EE的框架用于管理BI对象如报表、OLAP分析、仪表盘、记分卡以及数据挖掘模型等。它提供的BI管理器能够控制、校验、验证与分发这些BI对象。SpagoBI特性包括支持Portal、Report、OLAP、QbE(FreeInquiry)、ETL、Dashboard、文档管理、元数据管理、数据挖掘与地理信息分析等。SpagoBI的安装配置较为简单方便,能够方便地在UNIX/Linux、WindowsServer操作系统下,基于流行Tomcat7.0.xServer和JDK1.7.x环境运行,实现了Web框架下的AJAX风格的UI显示界面,比较适合于中、小型的应用软件系统进行智能化分析类OLAP、Ad-hoc、Reporting等BI相关应用展示。其典型demo显示截图如下:
SpagoBI平台功能较为完整,官方声称市场上唯一100%开源的BI套件解决方案(基于LGPL协议);各个BI组件之间模块化很好,通过Plugin插件方式加载,来看一下它的各个组件:
Report:BirtReportDriver,BirtReportEngine,JasperReportDriver,JasperReportEngine
GEO:GeoDriver,GeoEngine(用地图显示数据和查询的)
OLAP:JPivotDriver,JPivotEngine
QBE:QbeDriver,QbeEngine
DataMining:WekaDriver,WekaEngineSecurity:ExoPortalSecurityProvider
ETL:Octupus和talend(Talend是官方合作伙伴)
Portal:eXoPortal
Booklet(小册子):BookletsComponent:主要包括文件上传,工作流,OpenOffice支持。
它还支持文档管理,用的是Apache的JackRabbit;支持搜索功能,使用的是ApacheLucene。它的展现层也使用了AJAX特性,另外它在DashBoard也使用了Openlaszlo,(一个用Javacode生成Flash的框架),所以SpagoBI的DashBoard看上去很好。SpagoBI体系架构图如下
它的界面强大、美观,具备良好的跨浏览器支持,页面缩放,元素的布局都很稳定划一。

软件下载

截止到2015年4月,SpagoBI软件的最新版本号为v5.1 。
1、下载完整的包含所有插件的安装All-In-One-SpagoBI-5.1-21012015.zip。
2、下载SpagoBI元数据库配置表需要的SQL脚本(SpagoBI支持Oracle/MySQL/SQLServer/Ingres/Postgres-SQL等多种RDBMS关系型数据库)
3、修改SpagoBI内置的Tomcat7.xServer对应的server.xml配置,创建metadata元数据库,并启动相关实例SpagoBI应用是以核心加引擎的模型来组织应用的。SpagoBI发行包中包含多个引擎。

软件配置

本文及以后的示例使用的数据库都为oracle,如需使用其他数据库请从SpagoBI官网下载相应数据库的BDSQL脚本文件并运行
1.首先在Oracle实例中创建数据库SpagoBI
2.创建数据库完成后创建表空间等:
--在创建用户之前,先要创建表空间:
SQL>createtablespaceSpagoBIdatafile'/data/oradata/SpagoBI.dbf'size500M;
--创建用户
SQL>createuserSpagoBIidentifiedbySpagoBIdefaulttablespaceSpagoBI;
--授予权限
SQL>grantconnect,resourcetoSpagoBI;
3.创建数据表,执行ORA_create.sql
4.创建定时器数据表,执行03ORA_create_quartz_schema.sql
5.以上操作完成后可以进行部署环境,更改tomcat_home\conf\server.xml中的<Resourcename="jdbc/SpagoBI"auth="Container"type="javax.sql.DataSource"driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@127.0.0.1:1521:SpagoBIi"username="SpagoBI"password="SpagoBI"maxActive="20"maxIdle="10"maxWait="-1"/>数据库连接部分。
  l修改.\webapps\SpagoBI\WEB-INF\classes\下hibernate.cfg.xml,
  l修改:jbpm.hibernate.cfg.xml数据库方言设置hibernate.dialectorg.hibernate.dialect.Oracle9Dialect修改quartz.propertiesorg.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
  l修改默认服务器URL与端口号:SpagoBI默认端口是8080,如果想使用其他端口需要在Tomcat配置文件server.xml中将默认端口修改,同时修改SpagoBI_service_url和SpagoBI_host_url中默认端口。SpagoBIServer部署在内网环境的服务器上时,需要修改Tomcat配置文件中的URL的localhost为IP地址(例如192.169.2.x),如果在公网上部署,可以使用DNS域名。
6.运行Tomcat,启动SpagoBI(点击bin下SpagoBIStartup.bat文件)。在启动的过程中SpagoBI会在后台将一些必须的数据保存到数据库中。
 
4. 中文汉化返回顶部
最新的版本为SpagoBI从官方网站上下载5.1的官方版。这个版本和其他历史版本一样都不支持中文,并且也没见到官方支持中文的计划。
通过跟踪下代码,发现SpagoBI是支持国际化的,相应的配置文件也都存在,只是缺少中文的支持。要支持中文除了配置文件还需要更改大量的JSP文件,因为SpagoBI原有的JSP是以ISO-8859-1为编码方式,于是全部改成了UTF-8。
更改了JSP还是会在保存中文内容时报错,于是继续分析代码,加上转换。最终解决了中文支持的问题。SpagoBI可以支持中文(这里对SpagoBI做了很多改造工作,包括修改源代码类和JSP,如果只改JSP的encode和增加zh_CN汉化文件是不支持中文的,也无法保存带中文名称的菜单,配置等)。使用者有兴趣的话可以自己进行汉化工作。
 
5.返回顶部
 
 
6.返回顶部
 
7.返回顶部
 
8.返回顶部
 
9.返回顶部
 
10.返回顶部
1、
2、
3、
 
11.返回顶部
 
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

杂项:SpagoBI的更多相关文章

  1. 杂项之python描述符协议

    杂项之python描述符协议 本节内容 由来 描述符协议概念 类的静态方法及类方法实现原理 类作为装饰器使用 1. 由来 闲来无事去看了看django中的内置分页方法,发现里面用到了类作为装饰器来使用 ...

  2. 杂项之使用qq邮箱发送邮件

    杂项之使用qq邮箱发送邮件 本节内容 特殊设置 测试代码 1. 特殊设置 之前QQ邮箱直接可以通过smtp协议发送邮件,不需要进行一些特殊的设置,但是最近使用QQ邮箱测试的时候发现以前使用的办法无法奏 ...

  3. 杂项之图像处理pillow

    杂项之图像处理pillow 本节内容 参考文献 生成验证码源码 一些小例子 1. 参考文献 http://pillow-cn.readthedocs.io/zh_CN/latest/ pillow中文 ...

  4. 杂项之pymysql连接池

    杂项之pymysql连接池 本节内容 本文的诞生 连接池及单例模式 多线程提升 协程提升 后记 1.本文的诞生 由于前几天接触了pymysql,在测试数据过程中,使用普通的pymysql插入100W条 ...

  5. linux驱动初探之杂项设备(控制两个GPIO口)

    关键字:linux驱动.杂项设备.GPIO 此驱动程序控制了外接的两个二极管,二极管是低电平有效. 上一篇博客中已经介绍了linux驱动程序的编写流程,这篇博客算是前一篇的提高篇,也是下一篇博客(JN ...

  6. 【News】SpagoBI中国官方微信对外发布

    爱数据,爱分析,爱达比 致力于国际优秀开源BI应用在中国的普及推广,用数据开启中小企业智慧之门: 扫描上图二维码,关注SpagoBI中国官方微信,2015年8月18日将在腾讯课堂.百度传课.网易云课堂 ...

  7. 【转帖】四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho

    四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho 1 BI系统的简述 从技术角度来说 BI 包含了 ETL.DW.OLAP.DM等多环节.简单的说就是把交易系统 ...

  8. Linux驱动设计——字符杂项设备

    杂项设备 linux里面的misc杂项设备是主设备号为10的驱动设备,misc设备其实也就是特殊的字符设备,可自动生成设备节点. 定义头文件<linux/miscdevice.h>   杂 ...

  9. Posix线程编程指南(5) 杂项

    在Posix线程规范中还有几个辅助函数难以归类,暂且称其为杂项函数,主要包括pthread_self().pthread_equal()和pthread_once()三个,另外还有一个LinuxThr ...

随机推荐

  1. eureka-8-Eureka 的健康检查

    eureka.client.healthcheck.enabled:true 应用程序将自己的健康状态传播到Eureka Server

  2. ES常见名词定义

    集群:具有相同clusterName的节点.节点:一个ES实例,并不定是一个节点,因为一个节点上可以启动多个ES实例.索引:相当于数据库database的概念,一个集群可以包含多个索引.分片:索引可以 ...

  3. CRect类 的介绍

    类CRect是对Windows结构RECT的封装,凡是能用RECT结构的地方都可以用CRect代替. 结构RECT表示一个矩形的位置和尺寸,其定义为: typedef struct tagRECT{ ...

  4. PHP常见带有下划线的常量

    1.__PHP_Incomplete_Class <?php echo __PHP_Incomplete_Class::class; ?> __PHP_Incomplete_Class 2 ...

  5. python编程(最简单的rpc代码)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 采用twisted可以编写最简单的rpc代码. server端代码如下, from twiste ...

  6. MPAndroidChart Wiki(译文)~Part 5

    19. ChartData子类 这篇wiki主要关注ChartData子类的具体介绍.至于此部分没有提及到的ChartData的子类,代表他们没有特性功能需要介绍. BarData 方法 使用 set ...

  7. ICE:slice语言常识整理

    ICE:Slice语言(二)--源文件和词法规则:    文件命名    Slice的源文件以.ice为扩展名.   对于大小写不区分的系统(例如DOS),文件的扩展名可以大写,也可以小写,例如Cli ...

  8. 关于HTTPS理论和实践

    Summary: HTTP 通信时,可能信息被监听.服务器或客户端身份伪装等安全问题,HTTPS 则能有效解决这些问题. 原始的HTTP连接的时候,因服务器与用户之间是直接进行明文传输,导致用户面临着 ...

  9. 【javascript 】组合式继承

    开发人员采用的js的继承结构 function inheritPrototype(subType, superType) { var prototype = object(superType.prot ...

  10. c++ 载入内存中dll ,以及内存注入

    用c++ 许多代码都得自己写, 这里是我自己修改的一个内存载入的一个封装库 , c++ 的程序员可以直接拿来用 特点如下: 直接在内存中载入,无磁盘占用 支持加壳保护的dll , 平时用的最多的vmp ...