Cognos Transformer增量刷新cube

Cognos Transformer增量刷新cube
Cognos Transformer增量刷新cube

Cognos Transformer增量刷新cube

生成cognos PowerCube的主要目的是在进行多维分析时,性能会比使用DMR (dimensioned-model-relational)的模型有更好的性能,因为DMR是基于DB查询,每次要动态的生成MDX语句来访问关系型DB。另外还有一个使用cube的原因是,受限于DB存储的价格和空间,可能只保存了最近一段时间的数据,而生成cube之后,只占用disk空间,不受DB空间限制,可以降低DB的使用费用。

不过如果只是输出为固定报表或其它即席查询的报表,其实不需要制作cube,因为生成cube需要额外的工作,而且在日常运营中会有额外的维护工作,如cube生成调度,失败后的重新刷新等。

之所以要使用增量刷新,最主要的原因就是全量数据太大,如果每次都做全量刷新,会非常消耗时间和资源,因此每次(一般是每天或每月)只把最近一个周期的数据增加到cube 中,一可以减少生成cube的时间,另外,如果做了cube分区,也可以只刷出现问题的cube,而不用每次都重刷。

增量刷新cube需要通过以下2个步骤实现:

●在创建cube时指定cube是增量更新;

●在cube的数据源获取中,要指定事实数据的SQL或其它方式提供的源只有增量数

据,确保每次增加的只是变化的数据,否则cube中中会有重复的数据。

示例

以下以一个实际示例为讲解:

星型模型如下

从上面可以看出,有3个维度:品牌、指标、地区。其中地区又分为2层,要注意的是为了提高分析性能,在事实表中也增加了city_id字段,这样看似数据有点冗余,其实这样做的目的是,当获取某个city的数据时,不用关联d_county再去过滤,直接在事实表上过滤即可。

物理表结构如下

事实表:st_kpi_month

品牌维表

地市维表:

区县维表:

KPI指标维表:

Trasnformer配置

本示例使用IQD文件来提供数据,首先需要在如下文件中

c:\Program Files (x86)\ibm\cognos\c10\CS7Gateways\bin\cs7g.ini 增加以下部分内容:

其中testcon是连接名称,用于在IQD文件中定义时使用;

后面的内容是在cognos administration中添加数据源,测试DB连接时系统自动生成的内容。本示例中是基于mssql server提供数据源,数据库名是testdb,数据库服务器是:192.168.42.2,cognos基于mssql oledb类型连接到数据库。

IQD定义

以下是事实表的IQD内容:

st_kpi_month.iqd

要注意的是上表的SQL语句中提供的是全量数据(没有添加where条件),而不是增量数据。其它维表的IQD内容不在此列出。

全量cube设计

以下是基于各个IQD文件制作cube时的设计界面,主要有4个维度:品牌、指标、地区、月份。只有一个kpi_value指标。

首先我们生成一个全量cube: st_kpi_month_full。

以下是保存cube模型及生成全量cube之后的文件列表。

发布此cube并在cognos中创建一个package。

下图展现的是通过Analysis studio(AS)查看此全量cube时的示例,可以看到所有月份的数据。

增量模型设计

创建增量cube

首先我们修改事实表的数据源对应的SQL,按月获取数据。St_kpi_month.iqd

以上只是获取200404一个月的数据。

在transformer 中新增一个st_kpi_month的cube

在cube的属性窗口中,选中“the cube is incrementally updated”。

生成cube,并发布到cognos,此时我们已经有2个package,一个对应到全量cube,一个对应增量cube。如下图:

此时在AS中打开增量cube对应的package,只能看到一个月的数据,

增加一个周期的数据

接下来我们修改事实表的IQD为获取200405月份的数据

再次刷新cube,如果出现下面提示,则表示当前cube正在被使用(因为刚才我们用AS打开了此CUBE)

此时则需要手工执行如下命令,杀掉cognos的一个进程:

SUCCESS: The process "BIBusTKServerMain.exe" with PID 3812 has been terminated.

再次刷新即可。然后重新在AS中打开此增量cube,看到已经有200404,200405两个月的数据。表示一切正常。

根据上面的示例步骤,可将其它月份的逐月增加到cube中。

增量数据重复情况的测试

增量刷新时SQL语句要注意不能获取已经生成过CUBE的数据。我们接着上面刚刷完200405数据之后的cube,再调整IQD来增量刷新。

以下的示例中故意将200405的数据再获取一份,因此在最后的展现结果,200405的数据翻了一倍。

由于我们获取的是>=200405的数据,所以会把200405及以后的所有数据都刷进去,但200405已经在cube有了,所以该月的数据会重复。

在下图AS的分析界面中,与前面的分析视图比,会发现200405的数据翻了一倍。

因此,我们在做增量cube时,建议最好是将cube分区结合起来使用,这样即使有些周期的数据重复了,也只会影响增量的cube。如果所有增量都只存放在一个cube中,则会造成此cube需要从最开始的数据重刷。

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开发之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产品结构图:

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代码,删除掉列表页脚几个字 代码如下:

Cognos+SDK+小结三(权限开发小例子)

Cognos应用小例子(权限控制) 1.1. 概述 用户角色权限这部分主要可以实现 1.第三方认证 2.新建角色; 新建组织; 给角色添加用户、组织、角色; 给组织添加用户、组织; 读取当前角色(组织)已有的成员,给成员设置读写遍历等权限 3.给Foler,package,rs,as,qs报表设置权限,比如山东小麦专家和山东大豆专家看到 不同的文件夹报表等; 这块和Cognos在页面上设置权限的功能一样;不过是通过SDK自己包装了,为了给大家有个直观的产品集成的概念J2EE架构+Cognos8.4环境下做了一个小功能demo,后面有效果图简单展示; 1.2. demo效果 为了给大家有个直观的产品集成的概念做了一个小小的功能demo,下面是几张截图效果: 不同登录用户看到不用的目录内容,点击查看,如果是报表,弹出窗口,看到报表的运行结果页面,如果是文件夹就进入下级目录,另外有一个此用户可以看到的这个文件夹包含的报表数量的统计。 权限设置后,Admin用户能看到的 分配权限以后,以user1用户登录,看到:

以user2用户登录,看到: 和cognos页面分配的效果一致; 设置过程(和Cognos设置过程基本一样): 在此页面点击设置:

点击“添加” :

这个资源上,默认有读、遍历、执行权限;

添加用户也一样,点击 “jn ”命名空间 可以看到组织机构成员等类型,添加第三方用户 如下图:

添加完成后可以看到下图设置结果,选择“删除此条目”图标就删除添加的角色或组织成员 点击“权限设置”图表可以看到某组织(角色、成员)已有的权限进行修改;

最新Cognos8开发示例

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

12 13 方法一:在现有模型下直接拖拽字段; 14 15 从不同的表里拖入想要的字段;

16 17 进入“Test-》Test sample”可以测试数据是否准确; 18 19 注意:如果用到的表之间没关联,则会出现如下错误; 20 21 解决办法:两两表间分别建立连接; 22 比如:dimclass与dimrisk是一对多的关系:

23 24 而dimrisk与dimkind也是一对多的关系: 25 再test,OK。 26 27

28 方法二:手工写SQL; 29 2、选data source项; 30 31 选择已经建好的data source,可以随意添加几个字段,可以不加过滤及表间32 连接条件,直接完成,点开新建的query,修改sql语句; 33 34 35 3、建一主表,方法同上。打包发布即可。 36 37

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

cognos报表开发常见异常问题解决

cognos报表开发常见异常问题解决 1,QE-DEF-0368 Unable to decrypt user name and password credentials from the content store. Review and save the Cognos Configuration settings to configure your reporting environment. 再Framework中save出现此错误. 解决方案:在.../c8/configuration目录下删除csk和..key..文件,重新进入即可 2,RQP-DEF-0103 Cross joins are not permitted. Enable cross joins in the model 解决方案: 1. Open the model in Framework Manager. 2. Click the "Project" menu, and then "Edit Governors..." 3. Set "Cross-Product joins" to "Allow." 4. Publish the package. 5. The report should be able to be run without the cross join error now. 3,RQP-DEF-0326 不允许身份为“{All Authenticated Users, Everyone, Consumers, QueryUserClass_RCDT}”的用户使用自定义SQL 解决方案:administrator登陆Cognos Connection 进入安全-》功能,选择Report Studio,点击《用户定义的SQL》设置属性--》权限 将改写从父条目获取访问权限勾选上 4,UDA-SQL-0458 PREPARE 失败,因为此查询要求在本地处理数据。尚未启用允许本地处理的选项。UDA-SQL-0504 数据库不支持在OLAP 函数规范中使用DISTINCT 关键字。此操作要求在本地处理数据。 解决方案:在Framework Manager 中的Project 中的Data sources 的Properties 中的Query Processing 设置为limited local 5,UDA-SQL-0460 本地处理期间出现一般例外。UDA-EE-0036 The operator must be an expression, not "". 解决方案:提示页传入的参数用cast转换,比如:cast(?统计月份? as varchar(6)) 6,BMT-MD-2010 此数据包将发布“Query Subject”“[ora9].[TUTORIAL_CLIENTS]”,但它具有以下警告。根据关系基数,这会形成冗余。? 分析:是由于关系联接有问题,查看关联情况. 7,tns解析服务器名称错误(其中一个客户端不行,而其他的没问题)? 分析:检查用toad 或者pl/sql developer连接是否ok,如果不行,配置好tnsnames(可用oralce自带的net configuration)。 如果还是有问题,检查oracle的版本,客户端环境变量(Path=c:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;)等信息。 8,QE-DEF-0285

cognos10开发文档

1CUBE开发文档 第一步:创建IQD文件(Framework Manager创建表的数据源代替IQD文件)。 因为CUBE是由不同的表组成的。在做CUBE前要有数据源,也就是需要的表,所以要生成IQD文件。由于COGNOS8.2用在UNIX环境中不能自动刷新CUBE。所以现在改用COGNOS8.3用Framework Manager创建表的数据源代替IQD文件。以下都以COGNOS8.3为例。 1.新建一个Framework Manager,起一个名字,选一个放置路径。 2.选择“中文”,以Data Source做数据源。 3.选择所需要的数据源名称。并选中需要的表即可。结果如下图: 用Framework Manager把需要的表都选进来。最好是一个大主题所需要的表都选进来。 新建一个packages发布。 第二步:创建MDL文件。 1.Transformer的创建。 打开程序->Cognos->Transformer 2.新建MDL。 点击File->New新建。一般不使用向导创建。这时会出显一个界面,如下图:

说明: 数据源)。 :指标(度量)的区域。 :生成CUBE的区域。 :维度区域。 Insert Data Source:插入数据源。 show diagram(显示图表):打开此按钮,可以查看维度层次关系。 Data source viewer:可以查看各表的数据。 Check Model(检查模型):检查你创建的MDL是否有错误。 Generate Categories(生成种类):可以生成各个维度的层次关系。点击如下图:

PowerPlay for windows:查看CUBE生成结果(COGNOS8.2可查看)。 Create PowerCube:点击此按钮,生成CUBE。 3.修改mdl的字符集,cognos要求字符集为UTF-8, 打开file->Model Properties->Cube code page修改字符集为UTF-8,具体修改的位置如下截图: 4.插入数据源(一个MDL只能导入一个事实表,但可导入多个维表)。 点击,或是右击空白区域选Insert Data Source,都可以插入数据

相关文档
最新文档