用友BQ商业智能设计模式概述一个完整的商业智能平台应该包括用户视角和开发者视角;对用友BQ商业智能平台而言,开发者视角就是设计模式。开发者视角应该包括相应的安全管理、数据源连接、任务计划管理、外部接口服务、报表开发;在商业智能工具选型的时候,开发人员虽然不是决定性作用,也至少有相应的建议权和影响力;对于实施者或某些开发用户而言,后台功能的易用性、可管理性、安全性对他们是很重要的。用友BQ商业智能平台的设计模式界面非常符合开发人员的编程习惯,和绝大多数IDE开发工具界面是类似的;系统共享区,主要包括商业智能平台的相关模块,并以树形目录的方式予以展现;并且相关数据源部分还可直接拖拽到中间区域进行报表设计。个人共享区,是个人的相关操作。中间区域,暂且叫做开发区吧,即系统共享区各个模块的详细信息展现和编辑,以标签的方式可以无限打开多个模块。报表开发也集中在这个区域。工作区,不详属性区,即各个模块通用信息的描述,记录了各个工作的唯一标识。系统简介序号类型描述1安全管理对系统角色、用户、系统模块以及相应的系统安全进行相关维护和管理。2任务计划定义某些定时执行的计划,主要是针对报表服务。3文件服务定义文件服务4Web服务提供报表的入站和出站服务,简单说来就是定义外部系统调用本系统的web接口。5关系数据源定义报表的相关数据源,并能够自动获取相应的元数据并加以定义;支持主流的8种数据源。6多维数据源定义多维数据源,支持自定义的多维立方体(类似BO的macrocube)和MSOLAP服务。7对象模板定义相关的报表模板,在以后的报表开发中加以复用8启动定义相关启动参数9基本功能演示提供了一些基本功能的演示实例,可以通过这些演示来进行相应报表开发的学习10增强功能演示提供了一些增强功能的演示实例,可以通过这些演示来进行相应报表开发的学习11开发实例内置了一些开发实例,以方便报表高级功能的实现12Web以下我们会着重理解一下安全管理和数据源的管理,这两个部分对开发者来说更为重要一些。安全管理安全管理一般包括角色、用户组、用户、系统模块和系统权限的管理通常而言,用户组更加侧重于业务方面的用户分类管理,例如不同的部门、不同的组织层级,并且赋予不同的数据浏览权限;而角色更加侧重于对读写修改以及系统模块的维护管理权限,例如管理员、报表开发人员、普通用户、限制用户等。用户可以属于用户组或者属于角色。以下为BQ商业智能平台的用户管理界面。以下为BQ商业智能平台的角色管理界面。以下为BQ商业智能平台的系统模块管理界面。或许是评测版的原因,安全管理的系统权限授予或者报表权限未能真正评测到,角色管理、用户组管理、用户管理和系统模块管理之间是相互孤立的;也许正式版将是完全不同的情况。数据源管理数据源的丰富程度是BI工具很重要的一个方面;一般而言BI工具的数据源管理包括关系数据源和多维数据源,少量的BI工具也包括文本文件、Excel、XML等非关系型数据源。关系数据源管理关系数据源管理主要包括即将定义的数据源名称,数据库的驱动程序,数据库的类型,待列出的数据对象,最大连接数和系统断开时间。对于数据库驱动,常用的基本为JDBC和OLEDB,一般建议选择JDBC对于关系数据库类型,用友BQ商业智能平台主要包括SQLServer、Oracle、DB2、Sybase、Informix、Progress、Access、Paradox、IntrBase、dBase、MSOLAP、MySQL等主流和常见的一些大、中、小型数据库。下面点击连接字符串右侧的按钮。选择相应的JDBC驱动程序,并选择与此对应的数据库URL,在URL中会给出相应的模板,只需要修改相应的数据库机器名/IP、端口号和数据库名称即可,再次输入相应的用户名和密码。在保存的过程中,会提示以下三个选项,一般而言选2、3均可,主要目的是为了验证和获取自定义数据源的相关数据对象。验证和获取对象的过程需要一定的时间等待。当然我们也可以在后面慢慢获取相关对象,比如保存后在相关数据源处点击右键。查询/更新Schema信息即仅更新当前数据源的Schema对象。查询/更新全库信息即进更新当前Schema的所有库表信息。查询/更新指定表即在我们已经得知所需的相关表前提下,更新所需要的表结构信息。以下为更新相关全库信息后的实例图。多维数据源管理多维数据源在目前各个主流报表工具中得到了广泛的支持,除了MSOLAP之外还包括Essbase,和自定义的多维立方体。多维立方体此处的多维立方体类似于BO的微CUBE,即讲关系数据库表结构转换为多维的形态,从本质上讲这是ROLAP,即关系型的OLAP。以下为BO商业智能平台所自带的一个销售分析立方体模型。当然我们也可以自己定义相关的多维立方体,以下仅为举例。计算某个工种和部门的员工薪资情况。MSOLAP服务从某种意义上讲MSOLAP是应用最广泛的OLAP技术,因此绝大多数BI工具都支持MSOLAP(鉴于本机未安装MSSQLServer,暂时不做评测)!--[if!vml]--!--[endif]--信息域概述一般而言,数据库里的表名和字段名都是一些很难理解的名称,那么业务人员如何基于数据库来构建查询和报表?BQ商业智能平台的信息域功能就用来解决这一难题,它能将数据库中的表名及字段名称改为业务人员容易识别并接受的业务术语。信息域是为开发或终端用户提供一个良好的视角和语义层,以使得他们能够进行快速开发或自定义报表,来满足应用需求。信息域构建为了方便说明,我们暂时借助Oracle的几个系统来完成信息域的构建。序号表名描述所用字段1USER_TABLESPACES用户表空间表空间名称2USER_TABLES用户表表名称、表空间名称3USER_TAB_COLS用户表字段表名称、字段名称、字段类型、数据长度、数据精度、是否为空、字段序列4USER_CONSTRAINTS用户表相关约束所属用户、约束名称、约束类型、表名称1、首先让我们创建一个信息域,在基本功能演示—信息域处右键点击新建信息域。2、从关系数据源—tt(此处为自定义的一个数据源)—SYS—所以表、视图、存储过程下找到相关表(USER_TABLESPACES,USER_TABLES,USER_TAB_COLS,USER_CONSTRAINTS)拖入所建信息域下面。3、建立相关连接,将各个表的相关联字段进行首尾拖拽,BQ商业智能平台的连接分别支持等值连接、左连接、右连接、全连接和自定义连接。4、双击相应的字段以定义相应的字段语义表达,也可以直接在字段处修改,并删除不需要的字段。5、最终完成信息域定义后的样式如下:6、BQ提供了3种方式来进行语义的定义,但感觉都不是很方便;单一的修改效率偏低,通过Excel表的方式进行导入则过于复杂。我的建议是使用列表的方式进行某个对象的批量修改,如果是考虑到界面的风格问题,则可以采用弹出一个新窗口的方式。参数构建BQ商业智能平台之所以把参数单独构建,预计是处于两个原因,首先是参数的复用性比较高,参数可以反复应用在多个环境中;其次是参数本身构建比较复杂,甚至参数之间有相互依赖关系。一个完整的参数包括以下几个部分:参数的概要信息,包括参数名称、数据类型、参数类型参数值来源:来自于某个对象(某个信息域中定义的对象);SQL(复杂的SQL表达式);值列(包括值和显示名称),还包括相应的数据转换,即在值和显示名称之间转换。各种选项:是否允许手工输入、是否为空、是否多值扩展参数输入方式:即定义参数在应用时的表现形式,文本框|复选框|单选框|多列下拉框|树形下拉框。1、我们首先构建一个表空间名称的参数。2、定义名称为表空间名称,数据类型为字符,对象则来自于信息域-用户表-信息域-用户表空间-表空间名称。3、当然我们也可以用SQL的方式进行参数的直接定义select{tt}.SYS.USER_TABLESPACES.TABLESPACE_NAMEfrom{tt}.SYS.USER_TABLESPACES4、接下来我们继续定义表名称参数,表名称是与表空间相关联的,所以在此处我们用SQL的方式进行参数的定义。select{tt}.SYS.USER_TABLES.TABLE_NAMEfrom{tt}.SYS.USER_TABLESwhere{tt}.SYS.USER_TABLES.TABLESPACE_NAME={?'表空间名称'}请记住在BQ商业智能平台中参数以格式{?'parameter'}定义的智能查询概念在BQ智能商业平台中,虽然智能查询没有确切的定义,但却是非常重要的一个功能;在我看来,智能查询就是通过各种查询方式,并类Excel的方式进行数据的展现,并提供了基于类Cell的技术和相应的脚本,实现数据的过滤、排序、格式定义和示警。智能查询构建一在使用信息域之前让我首先看看如何定制化一张智能报表,让我们从简单到复杂的步骤逐步构建。1、在智能查询处右键点击新建智能查询2、选择相应的查询构建方式,此处我们选择”基于查询语言(SQL)”3、在空白处拷贝以下命令selecttable_name,column_name,data_type,data_length,data_precision,nullable,column_idfromuser_tab_colsorderbytable_name,column_id4、选择默认数据源为tt5、执行选定命令,然后选择保存,一张简易的报表就制作出来了。6、报表标题的重命名,在工作区打开数据列,对字段进行重命名!--[if!vml]--!--[if!vml]--!--[endif]--7、在重命名的过程中,数据区的列名会自动刷新8、让我们再测试示警器功能,新建一个示警器。9、在条件格式中输入RecNo()%2=0,即偶数行,数据格式设置为绿色,即偶数行为绿色。10、在条件格式中输入RecNo()%2=1,即奇数行,数据格式设置为粉红色,即奇数行为粉红色11、刷新相关数据后,看到的结果12、关于示警器条件,BQ商业智能平台提供了大量的函数可供使用,必须认真阅读和反复测试,才能够完全掌握,并发挥其最大效能13、接下来,我们开始定义查询参数将共享对象—参数—表空间名称拖入到工作区参数中将共享对象—参数—表名称拖入到工作区参数中当然我们也可以像定义共享对象—参数一样,从头定义参数,但参数仅适用于该报表。14、为了应用相关查询参数,我们需要到设计视图中修改相关SQL为selecttable_name,column_name,data_type,data_length,data_precision,nullable,column_idfromuser_tab_colswheretable_name=(selecttable_namefromuser_tableswheretable_name={?'表名称'}andtablespace_name={?'表空间名称'})orderbytable_name,column_id15、然后返回表格视图进行相关刷新,系统会自动提示输入相应的参数一张带查询条件的示警功能的智能查询便完成了智能查询构建二下面我们再用基于智能查询构造器实现同样的报表。1、选择基于智能查询构造器方式2、报表的包括三个主要构成部分查询对象,即要展示的报表内容,从相应的信息域中拖入相应的字段即可数据排序,即默认报表数据的排序规则,从相应的信息域中拖入相应的字段即可查询条件,即报表的数据选取条件,在查询条件中包括新建参数、新建对象、新建子查询和操作符等等。新建参数类似于共享参数中的参数定义,在此处为报表的私有参数。新建子查询,则打开一个新的标签页,格式与主查询页面一致。操作符,则是字段和参数的关系符号。3、首先我们从信息域—用户表—用户表中把需要的字段拖进来,在此处为表名称、字段名称、数据类型、数据长度、数据精度、是否为空、字段序列4、其次把表名称、字段序列拖入数据排序中5、再次我们把表名称拖入查询条件中,操作符我们从菜单中选择”=”号,当然手