Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8236963
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: 系统运维

2012-05-16 14:32:29

转自:http://www.cognoschina.net/?action-blogdetail-uid-3867-id-1156

Cognos7.3CubeUnix环境下究竟能不能增量刷新?这是一直困扰着我们的问题。一直实现不了,到底是这个版本不支持这个功能,还是其它的原因呢?咨询IBM的技术人员也得不到明确的答复。现在这一问题再次被提出来,由我负责跟进。

跟进?应该怎么跟进呢?IBM的技术人员都不清楚我又应该怎么做呢?很是没底……。虽然有IBM技术人员的联系方式,但我也没有联系他,因为觉得都已经问过了,不清楚就是不清楚,而且我感觉增量刷新是应该可以才对的,可能是开发过程的某环节出现了问题。从这一观点出发,上网找资料,找到些也是关于Unix环境下Cube增量刷新的问题,不过人家的是部分报表可以,部分不可以,这也就证明了“Cognos7.3CubeUnix环境下是可以增量刷新”。

如果是可以增量的,我们做出来的不行,那就是开发的问题了。一步步找原因。

首先,在Windows下测试增量刷新,结果完全可行。

然后,将建好的模型上传到Unix中,用命令执行,结果不可行。到底是什么原因呢?查看日志,错误原因的意思大概是“上次模型刷新Cube后没有进行保存”。应该怎么样进行保存呢?莫非是脚本写的不对?由于在Unix上刷新,都是通过脚本来执行的,问题出在脚本的可能性很高,因为之前执行脚本时就遇到过很多的问题。在经过大量的反复的测试下,终于看到了激动人心的一幕:出现了新增月份的数据;这可是标志着增量刷新的成功呀。查看日志,果然“ExitàOK”。Oh yeah

终于找到了cognos增量刷新的问题,一切都是执行脚本的原因。

首先CUBE的刷新可分为全量刷新及增量刷新,我们之前所用的全部都是全量刷新,脚本当然也是针对全量来写的(不过写得让我这种对Unix不咋懂的人模糊了好久)。现在要实现增量刷新就要用增量的脚本来执行而不能混为一谈。MDL是只能进行全量刷新的,增量刷新只能用PYI,且IQD所引用的表要是增量表,即表中的数据只能包括当前要新增到Cube中的数据,否则会进行累加。在进行增量时,一般的做法是:首先将MDL转为PYI,同时进行一次全量刷新;以后的增量刷新对PYI执行就可以了。

还有一个问题就是,如果真的要采用增量刷新的话,就要准备两套表(一全数据表,一增量表即临时表),两套立方体模型(因为度量IDQ所取的表不同,分别对应两套不同的表)。这对于刚刚开发完的项目存在一定的挑战性。

windows下增量cube刷新bat
::主要策略:设定生成cube所需环境变量,如:生成的日志路径、mdc路径。在cube增量前,
先备份原数据文件到历史bak文件夹下,然后生成cube,备份的目的是为了方便重修数据。
::参数设定
  off 表示不提示comand命令窗口变量声明行。
:@echo off
::定义cube名称常量
set cubenm=example
set FileDirectory=D:/Transformer/cube/cubepath
set cubemdl=%FileDirectory%/mdl
set cubemdc1=%FileDirectory%/mdc1
set cubemdc=%FileDirectory%/mdc
set cubebak=%FileDirectory%/cubebak
set cogtrbin=D:/Program Files/cognos83/c8/bin    ::transformer安装路径bin目录
::模型mdl路径
set ModelSaveDirectory=%FileDirectory%/mdl
::cube生成路径
set CubeSaveDirectory=%FileDirectory%/mdc1
::cube生成日志路径
set LogFileDirectory=%FileDirectory%/trlog
::iqd数据源路径
set DataSourceDirectory=%FileDirectory%/iqd/olap动态报表/贷款余额、发生额/
set LogFileName=ln_bal.log
::日志扩张参数,=0表示覆盖原先日志,=1表示在原先日志继续写。
set LogFileAppend=0
::传入日期参数,主要用于备份到这个日期下用。
set inputdate=%1

::备份cubenm历史文件
mkdir %cubebak%/%cubenm%/%inputdate%
xcopy /y %cubemdc%/%cubenm%  %cubebak%/%cubenm%/%inputdate%/%cubenm%/
copy /y %cubemdc%/%cubenm%.mdc %cubebak%/%cubenm%/%inputdate%
copy /y %cubemdc%/%cubenm%.vcd %cubebak%/%cubenm%/%inputdate%
copy /y %cubemdl%/%cubenm%.mdl %cubebak%/%cubenm%/%inputdate%

cd /d %cogtrbin%/
::-l+数据源名称=用户名/用户密码
cogtr -c -n2 -s -ldbAuth=用户名/用户密码 -m"%cubemdl%/%cubenm%.mdl"
::优化生成的mdc
pcoptimizer %cubemdc1%/%cubenm%.mdc
::删除用户读cube报表的进程锁
taskkill /f /im BIBusTKServerMain.exe
copy /y %cubemdc1%/%cubenm%.mdc %cubemdc%
copy /y %cubemdc1%/%cubenm%.vcd %cubemdc%
xcopy /y %cubemdc1%/%cubenm% %cubemdc%/%cubenm%/

::备份日志
copy /y %LogFileDirectory%/%LogFileName% %LogFileDirectory%/ln_bal/ln_bal%inputdate%.log
exit

 

 

阅读(4318) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~