Cognos 8开发之CubeV1.0知识成果简要信息表第一章 Cognos简介1.概述Cognos展现的报表基于统一的元数据模型。
统一的元数据模型为应用提供了统一、一致的视图。
用户可以在浏览器中自定义报表,格式灵活,元素丰富,而且可以通过Query Studio进行即席的开放式查询。
Cognos还具有独特的穿透钻取(roll up和drill down)、切片(slice)和切块(dice)、以及旋转(pivot)等功能,使分析人员、管理人员或执行人员能够从多角度对信息进行快速、一致、交互地存取,从而获得对数据的更深入了解,有效地将各种相关的信息关联起来,使用户在分析汇总数据的同时能够深入到自己感兴趣的细节数据中,以便更全面地了解情况,做出正确决策。
Cognos强大的报表制作和展示功能能够制作/展示任何形式的报表,其纯粹的Web界面使用方式又使得部署成本和管理成本降到最低。
同时Cognos还可以同数据挖掘工具、统计分析工具配合使用,增强决策分析功能。
进行合作,推动以AIX 技术为中心的创新,同时开发、测试和使用各种用于支持AIX 操作系统的新应用和中间件。
2 . Cognos 8 的功能组件介绍:Cognos 8 的功能组件分为服务器端和客户端两部分,服务器端是基于SOA构架的Cognos 8服务,以Web Service的方式接受和处理用户请求;客户端程序是开发人员使用,用于构建CUBE 和Cognos 8元数据的工具,它们分别是:TransFormer 和FrameWork。
用户制作、浏览报表和业务分析都是基于浏览器的,不需要安装插件或客户端,在浏览器端,用户可以访问以下组件:Report Studio 、Query Studio 、Analysis Studio。
同时用户也可以基于Cognos提供的SDK开发应用直接访问Cognos 8 服务。
Cognos 8产品结构图:第二章基础概念的理解在我们利用Cognos来进行Cube的开发中的维度信息的设计的时候,我们必须了解什么是维度,什么是层,什么是类别等。
1 维度Dimension:所谓维度就是用户今后进行分析时所用来分析数据的角度,维度可以典型的地说明谁,什么时间,什么地点一类的问题。
在模型设计中有效维度决定了应用能回答问题的类型。
2 层Level:维度数据逻辑上的等级关系(相当于数据的定位),层次化的维度是按业务的组织结构表达数据的等级关系。
每个维度层的等级规则确定了今天分析的下钻路径。
3 类别Categories:是位于一个维度中层上独立的数据元素(层中数据的具体取值),最底层类别表示每维度中最详细的数据元素。
了解了上面什么是维度,什么是层,什么是类别后。
我们在说下指标和映射关联的知识点。
指标Measure:是用于衡量业务成效的数据。
是用于确定业务操作成功的量化结果,或关键的性能指标。
例如:收入,成本,增减额等。
其Cognos有两种类型的度量。
标准指标和计算指标。
所说的标准指标是指由查询的列指接定义的度量。
计算指标是指通过Transfromer里面的Functuon来对查询的列值进行计算表达式生成。
(备注:在我们通过Transfromer向DataSource中导入数据源的时候,把包含有数据源的指标叫做事实表。
事实表一般包括所有维度最低层代码和指标数据列。
事实表一般是数据量最大,抽取时间最长的表,我们在设计的时候要注意抽取数据的效率。
)标准指标和计算指标的区别:总体来说,对于Cognos transformer来说适当的使用计算来生成计算指标不但可以提高数据事实表的抽取效率,更可以是关系数据库表中减少列数从而降低数据库空间开销和IO开销。
根据以往的开发经验,得出过多的使用计算指标不会对生成立方体带来太大的压力。
在有了以上的基础知识后,让我们来自己利用Cognos下的Transformer和Framework来开发我们自己的Cube。
第三章 IQD生成首先,先说下什么是IQD。
IQD文件全称为Imromptu Query Definition其实质就是包含数据串,列名等信息的SQL语句。
我们还可以自己对生成的IQD文件进行些修改,比如:对里面的字段进行格式化的转换工作等,使得生成的文件更有利于我们使用。
那么该如何创建该文件呢?这就要使用Framework。
Framework是元数据模型工具。
元数据模型是对数据源的业务描述。
你的数据源可以是数据库也可以是任何支持Congos Cube的数据源。
第1步:在开始菜单中的程序---Cognos 8---Framework Manager 双击打开后。
你可以打开最近访问的工程,也可以自己New Create Project ,输入名称如下:然后点击OK,接着NEXT,到如下图:Select Data Source若是你新安装的Framework或者是里面没有你当前需要的数据源,那么你可以点击NEW到如图:输入数据源的名称,例如:Measureskey。
点击NEXT 到如下图:在Type里面选择Composite(ODBC),(前提是你在连接数据库的时候使用的计算机本机上带的ODBC数据源。
)然后,继续的NEXT到如下图:在ODBC data source中输入你在服务器上配置好的数据源名称,点击下面的Test Connection 进行配置的测试,若成功的话,点击Finish。
就会在你的数据源列表中出现你刚才创建的数据源Measureskey。
也就能使用了。
若出现测试错误,建议你看下你在ODBC 数据源管理器中创建连接服务器的数据源是否位于系统DSN下。
第二步,根据你引入的数据源导入你需要的TABLE和VIEW,完成数据的导入工作。
整体完成后会出现如下图:也就是说你刚才引入的那些数据库的表和试图就会出现在你的工程里面如上面的图所示。
导入的数据库表我们可以认为是数据库的逻辑层,这时候我们要根据需求对导入的表或者试图进行分析,建立业务层需要的Query Subject 如下图:点击OK后,我们的业务层就算建立完成,但是要生成我们需要的IQD文件,我们还需要注意和更改下面的地方:图1完成Externalize Method 下拉框中iqd的选择。
第三步在Packages包下发布你的IQD文件,选择其保存路径就好了。
到此为止,IQD文件创建成功。
第四章生成Cube当需要生成Cube的时候,我们需要借助于Cognos中的Transformer工具来实现。
其主要的功能:设计多维度的模型和按照其模型把数据中或文件中的数据加载生成多维立方体。
1 引入数据(IDQ文件)在开始菜单中的程序---Cognos 8---Tools—PowerPlay Transformer 双击打开后。
新建多维立方体模型从File—New在里面输入你Model的名称,例如:Measureskey选择引入数据的类型,点下一步。
下图中黑框部分为引入数据类型选择,我们可以选择IQD文件(默认)、csv文件等各种类型文件数据源,绝大部分情况下我们使用IQD文件,用其来直接读取数据库中的表。
选择你创建的IQD文件,并通过数据库的验证。
到此你把你生成的IQD文件作为数据源导入到了Transfromer中接着根据不同的需要把Datasource中的列依次的拖动到Dimenision Map和Measures中去,实现划分。
接着在PowerCubes窗口中右键单击选择Insert PowerCube,选择一个磁盘路径作为立方体保存路径。
立方体加载后会是以mdc文件名作为结尾的一个文件。
以后我们所进行的数据分析都直接访问这个数据文件。
生成立方体:选择工具栏上的Create PowerCubes.然后Cognos Transformer会首先依次从Data Sources读取基础数据,再排列、合并、计算、插入生成多维立方体。
生成结束后,我们可以直接在系统双击开始这个多维立方体文件,至此您的第一个多维分析立方体就已经生成好了。
大家慢慢会发现Cognos Transformer本身的使用难度不大,多维分析中真正的设计难点在于底层数据结构设计、多维模型同业务问题的结合以及平衡查询效率同数据访问范围的矛盾。
第五章发布Cub发布一个Cube步骤打开Cognos FrameWork,新建一个Project1选择Data Source下一步2选择一个已经建好的Cube数据源,也可以新建一个Cube数据源。
我们新建一个数据源,按New3下一步,数据源名称,下一步4类型选择Cognos PowerCube,下一步5如果你的服务器是Windows,在Windows路径上输入Windows服务器上的Cube的路径,在FrameWork所在机器上相同路径下也要有这个cube;如果你的服务器是Unix,在Windows 路径上输入FrameWork所在机器上的Cube路径,在Unix服务输入Unix服务器下得路径,完成6输入Package名称,下一步7完成8提示你是否发布这个Package,Yes发布完成后,你就可以通过浏览器用Report Studio、Query Studio 来完成你需要的展现效果。
第六章常见问题及注意事项 1 注意事项:1.在利用Framework创建IQD文件的时候需要更改其对应的属性值为iqd。
2.在利用Transformer引入数据源的时候,所使用的Datasource必须和你在Framework中创建的相同。
3.在你生产Cube的时候,你本地的存放路径必须与你在服务器上Cube保存的路径相同,那样子在发布的时候,才能找到。
不同的操作系统还有区别。
4.区分下生成Cube时保存为不同格式的区别。
*.Mdc格式的文件可以在不同的操作系统上进行移植,而*.Pyi格式的缺不能,因为它是以二进制的形式存放的。
2常见问题集锦:在transformer中说可以用drill-through钻取到其他cube或impromptu报表中,这到底是什么意思,有什么用啊?谁能举个使用的例子?也就是说可以从统计数据链接到所对应的详细数据表中。
例如在对产品销售增长情况的统计分析中,分析者看到某地区在某天的某个产品销售增长很高,他还想看看对应的这个产品的具体单价和功能等情况的话,就要用到drill-through钻取到impromptu 做的详细报表中的数据。
transformer里的计算类别不能自动分组,总是需要手动的分组。
比如:计算列别使用了share函数,share的值总是在实际类别的下面,需要手动的去拖,即使手动的拖好了,可是如果实际类别有增加,share类别又需要去拖放,很郁闷的事情;(有其他方法,琢磨一下)3.怎样控制数据向上汇聚?数据清理后有一个主表和从表,主表数据和从表数据都要向上汇聚,但是主表应该在从表汇聚之后达到一定层次在汇聚,我不知到在transformer中怎样设定?我想了一个办法,就是主从表分别建立一个数据源4.关于虚拟cube虚拟cube实际上有点像数据库中的视图,你可以按照天,月,年等来构建虚拟cube. 比如2003年你是按照月来建立虚拟cube,那么在你存放cube的目录下将有12个cube文件,对应着12个月的cube 数据.如果你要更新3月份的数据,那么利用cognos 的虚拟cube的机制,它只会去更新对应着3月份的cube数据的那个cube文件.这样就比较方便,而且维护起来会比较好.5.净增量的展现的实现?在报表展现时,需要体现本月份与上月份或当天与昨天的某度量的变化量即净增量,请问该如何实现呢?解决了!是在时间类别里加一个计算类,取函数change()或直接‘当月’-‘上月’.总结通过对上面Cube的基础知识和例子的说明,使得自己更加的清创建和使用Cube的过程,也搞清楚了里面些细节上的问题。