Cognos开发之Cube

Cognos开发之Cube
Cognos开发之Cube

Cognos 8开发之Cube

V1.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,新建一个Project

1选择Data Source下一步

2选择一个已经建好的Cube数据源,也可以新建一个Cube数据源。我们新建一个数据源,按New

3下一步,数据源名称,下一步

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的过程,也搞清楚了里面些细节上的问题。也为后面别的人员的学习提供了点参考的资料。希望大家多提出宝贵的建议,使得其更加的完善。

淡阳

2007-11-3

cognos文档

1、首先打开IBM COGNOS CONFIGURATION在里面配置报表访问的数据库 2、然后进入FrameWork Manager,先给数据取一个名字,我们给数据包取名的规则是fs开头,后面加上报表编号,最后数字是用来区分是汇总表,还是明细表 Project name:报表包名 Location:报表存放的路径 3、选择数据源 这里,如果是时实报表选择cxdb,非实时选择cnplapp,这里的数据其实是在cognos服务器上配好的,所以名字并不是随便取的。 4、进入页面后 在页面的左边会出现一个树型菜单,cnpl是数据包,data sources是数据源, packages是发布包

5、双击数据包 会展现出开发界面。这里有一些选项。SQL标签中是我们要放的SQL语句。TEST是我们可以用来测试语句是否正确,Query Information在这里我们是要修改sql语言的种类(如图) 这里有一个下拉菜单Sql Type,这里我默认的是cognos 它的意思是sql语言类型是cognos 型的,第二是native,意思是自然型的,也就是我们平常所使用的语法。选择后点击ok后,就可以写sql语句了。这里,我们建议,不要直接在cognos sql里面写,而是写在pl/sql中写好测试好后,粘到cognos里面来,这样准确性高。 6、cognos的参数传递 对于在cognos中配置页面参数,这里有自己的语法。 一般都是以#开头,然后以#结尾 #sq():意思是前后有单引号 #prompt("areaorg", "token")#:prompt是传一个值,areaorg是我们的控件名,token是指传递的参数是字符串型的,integer是指传递的参数是整型的. #promptmany("areaorg", "token")#: promptmany是指可以传递多个值 下面,我给出平常我们用到的配置参数的一些例子:

cognos报表知识整理

Cognos报表—知识整理 一、提示页自动加载 1、功能需求背景 华中电网概况报表首页需要有日期参数,但是每次进入首页时出现日期选择框影响美观,所以为其增加提示页面,但根据要求不能增加提示页面,所以设计出提示页面自动加载。通俗的讲就比如:出现提示页面,电脑自动点击确定进入主页面…… 2、功能实现方法 步骤1: 新建提示页面,新页面中内容包括:onload项目、完成按钮、日期提示框以及针对提示框的html项目。如下图1 图1 步骤2: Onload项目中函数:详见图1

二、进入页面后自动刷新一次 1、功能需求背景 电网概况报表电厂容量分析主页面中,需要自动根据日期刷新一次页面(具体原因参见三、特殊的日期过滤) 2、功能实现方法 步骤1: Onload项目加载函数,如图2 图2 步骤2: Js中函数新加一行代码,如图3 图3

3、可参考报表 电网概况报表>>1.电厂容量分析 三、特殊的日期过滤 1、功能需求背景 电网概况中发电情况包括水、火、风三种发电方式,在数据库中体现即为水(火、风)电机组管理(参数)表。根据用户要求,需要对全网水(火、风)当年新投机组容量等进行数据统计, 2、设计思想 1)将水、火、风机组管理表分别对应查询中取相同数据项,为U联做准备。 2)在三个查询中新建“投运年”数据项,取得机组投运年份。表达式:substr(【投运日期】,1,4) 3)将三个查询进行U联,给U联后的查询设置过滤条件,如图4 图4 3、出现问题分析 根据2、设计思想中进行操作,报表验证报错,不能对substr进行集操作,经查询得知,dm 数据库不支持在两层(原层和U联层)查询中同时使用substr。 4、新的解决方法 思路如下图:

Cognos开发之Cube

Cognos 8开发之Cube V1.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制作报表--基本范例

1COGNOS的使用 1.1模型定义 1,打开Frame Manager程序,如下图: 2,新建一个项目,建完后,打开该项目,如下图:

3,在界面左边中选择“Packages”,然后单击右键新建一个包。按照提示一步步做,其中有一步是从数据库的表选所要用到的表,打勾为选用。 4,点击”Diagram”显示表,但表之间还没有建立联接关系,通过建立各表关系后如下图

5,然后将该包发布,点击右键该包选择“Publish Package”将其发布。 1.2模型的物理和逻辑定义 1,模型定义的规范:将模型分为2个部分,分别为物理层和逻辑层,物理层为从数据源引入表的物理定义和连接关系,逻辑层为业务视角下的逻辑定义。 2,物理层的建立:根据数据分析,设计模型中需创建的物理表,以便尽可能的提高查询语句的运行效率(比较理想的结构是星形结构,一个中间表和多个物理维表)。 在根名字空间(和数据源同名)下,建立一个名为物理层的目录,在物理层文件夹下执行Run Metedate Wizard将数据源中相关的物理表引入这个目录,然后将这些表建立连接关系,建议不要有Orphan表。如下图:

3,逻辑层的定义:在根名字空间下,建立一个名为逻辑层的目录,在逻辑层文件夹下生成Query Subject,Query Subject的字段都是根据业务逻辑从物理层从引入,建议字段名都为中文。逻辑层中的表为事实表和维表的结构,在事实表中包含维度的编码值和指标的值,维表中包括每个维度上编码值和其名称的对应关系。也可以根据需要建立Regular Dimension(3.4说明),在逻辑层中不要建立逻辑表之间的关系。如下图:

Cognos8开发示例

Cognos8开发示例 报表开发示例 数据准备: 准备业务元数据->分主题建目录->建立表连接->数据处理->发布数据包 一使用FM组织数据 导入业务元数据,同《cognos使用指南_多维分析.DOC》之使用FM制作IQD文件的1-6步; 1、可以新建一文件夹,专门存放某一报表所需的query subject; 2、在此文件夹下创建query; 方法一:在现有模型下直接拖拽字段;

从不同的表里拖入想要的字段; 进入“Test-》Test sample”可以测试数据是否准确;注意:如果用到的表之间没关联,则会出现如下错误;

解决办法:两两表间分别建立连接; 比如:dimclass与dimrisk是一对多的关系:而dimrisk与dimkind也是一对多的关系: 再test,OK。 方法二:手工写SQL; 2、选data source项;

选择已经建好的data source,可以随意添加几个字段,可以不加过滤及表间连接条件,直接完成,点开新建的query,修改sql语句; 3、建一主表,方法同上。打包发布即可。

二把cube作为数据源生成报表 打开analysis studio,选择一个cube数据包,拖拽出想要的数据,选择“文件-》在report studio中打开”,进而调整整体图表布局; 打开后,如下图所示; 单击“插入表格”,

分别拖动图与表到一行的两个单元格里,运行结果; 也可以点击“结构-》页眉和页脚”添加表头; 特别提醒,此时的图表同样具有向下追溯、向上追溯的功能,并且图随表的数据变化而变化、或者表随图的变化而变化。 Cube开发示例 开发流程:

Cognos报表开发技巧整理

1实现行属性的目录树展开功能。 1.1在LIST报表中的现实 1.拖入6个字段,并且对产品系列、产品类型分组,如下图: 2.添加产品系列、产品类型的页眉

3.拆分产品系列、产品类型的单元格 4.将产品系列、和产品类型的汇总拖到产品名称处

5.删除产品系列,产品类型 6.打开列表的锁

7.按住CTRL,拖动数量、单位成本、单价到产品类型,产品系列的页眉处 8.在report page中插入HTML控件,然后拷贝如下代码进去,下面代码主要是定义了两个函数,一个用于目录树的展开与缩进,另一个用于页面初始化时隐藏一些数据,下面代码只支持到2层目录,更详细的含义可参考的在交叉表中实现目录树功能的注释。 代码如下: 8.拖入一个HTML项目插入到运营商单元格前面,修改成数据项,并修改表达式 运营商中HTML控件代码如下: ''+ [orc82].[D_OPERATIONROLES].[运营商所在地] + '' 9.删除掉运营商所在地 10.设置运营商的填充为左侧20 11.增加图片 增加树形的图片,空白图片到cognos相应的图片目录 12. 增加列表页脚 (注意,这里的HTML控件一定要放入表页脚里面,否则不能实现隐藏数据的功能),并拷贝HTML代码,删除掉列表页脚几个字 代码如下:

相关文档
最新文档