设为首页 收藏本站
查看: 782|回复: 0

[经验分享] Cognos8.4 cube在windows上刷新

[复制链接]

尚未签到

发表于 2016-5-21 07:18:13 | 显示全部楼层 |阅读模式
  项目中Cognos8.4 安装在Windows 2003上,文章主要对cube的刷新脚本进行描述,希望能对大家有所帮助。
  
表3 报表文件组织结构及空间需求列表



目录名称


说明


初始空间


空间增长


transformer


模型基础目录



/



/



transformer /cubebak


模型备份目录



0



100M/



transformer /cubelog


刷新日志存放目录



0



300K/



transformer /cubes


cube生成目录



100M



0



transformer /mdl


mdl存放目录



400k



0



transformer /schedule


调度脚本存放目录



100k



0




  
  mdl使用iqd作为数据源,其下级目录结构为:(xxxxxx表示对应的报表)
  transformer /mdl/xxxxxx/iqd/
  transformer /mdl/xxxxxx/mdl/ 
  
1.    进入transformer/schedule目录,找到并编辑“refreshCube.bat文件,对以下七个参数进行配置:
  
4 refreshcube参数配置表



参数名


配置说明


Cogtrbin


Cognos执行文件bin目录



DataSourceName


数据源名称(参考cs7g.ini)



UserName


用户名



UserPwd


密码



TnsName


数据库连接串



BaseDirectory


模型基础目录(报表解压位置)



CubeOutputDirectory


cube输出第三方目录




  
  "refreshCube.bat"脚本:(确认刷新环境,并调用刷新脚本)
  

rem Cognos8.4 模型刷新脚本
@echo off
set "ymd=%date:~,4%%date:~5,2%%date:~8,2%"
::Cognos执行文件bin目录
set Cogtrbin=d:\Program Files\cognos\c8\bin
::数据源名称(iqd关联,参考cs7g.ini)
set DataSourceName=xxx
::用户名
set UserName=xxx
::密码
set UserPwd=xxx
::TnsName
set TnsName=xxx
::模型基础目录
set BaseDirectory=xxx
::cube输出第三方目录
set CubeOutputDirectory=xxx
::mdl存放目录
set MdlFileDirectory=%BaseDirectory%\mdl
::模型备份目录
set CubeBakDirectory=%BaseDirectory%\cubebak\%ymd%
::调度脚本存放目录
set ScheduleDirectory=%BaseDirectory%\schedule
::刷新日志存放目录
set LogFileDirectory=%BaseDirectory%\cubelog\%ymd%
::iqd数据源路径(Linux上有效,当处理路径配置成"On the server"时,将根据参数找寻)
::set DataSourceDirectory=%BaseDirectory%\iqd
::cube生成目录
set CubeSaveDirectory=%BaseDirectory%\cubes
::访问数据库确定刷新状态就绪
for /F "usebackq" %%i in (`echo select count^(^*^) from mn_process where stat_date^=^trunc^(^sysdate^)^ and action_en^=^'CREATE_REPORT'^;^| sqlplus -s %UserName%/%UserPwd%@%TnsName%`) DO set rptnum=%%i
if not exist "%LogFileDirectory%" if %rptnum% == 10 (
::删除用户读cube报表的进程锁
taskkill /f /im BIBusTKServerMain.exe
::备份mdc
echo n|xcopy /d "%CubeSaveDirectory%"\*.mdc "%CubeBakDirectory%"\
::刷新cube
cd "%ScheduleDirectory%"
start refreshforpboc.bat "%Cogtrbin%" %DataSourceName% %UserName% %UserPwd% "%MdlFileDirectory%" "%CubeSaveDirectory%" "%CubeOutputDirectory%"
start refreshforcomm.bat "%Cogtrbin%" %DataSourceName% %UserName% %UserPwd% "%MdlFileDirectory%" "%CubeSaveDirectory%" "%CubeOutputDirectory%"
)
exit
   
   
  "refreshforcomm.bat"脚本:(执行模型刷新,生成cube)
  

::刷新金融机构立方体
@echo off
set Cogtrbin=%1
set DataSourceName=%2
set UserName=%3
set UserPwd=%4
set MdlFileDirectory=%5
set CubeSaveDirectory=%6
::去掉引号
set MdlFileDirectory=%MdlFileDirectory:~1,-1%
set CubeSaveDirectory=%CubeSaveDirectory:~1,-1%
set CubeOutputDirectory=%7
set MMDD=%date:~5,2%%date:~8,2%
set Week=%date:~-1%
set DD=%date:~8,2%
cd %Cogtrbin%
::日处理
%Cogtrbin%\cogtr -c -n2 -s -k%DataSourceName%=%UserName%/%UserPwd% -m"%MdlFileDirectory%\xxxxxx\mdl\xxxxxx.mdl"
::优化生成的mdc
%Cogtrbin%\pcoptimizer "%CubeSaveDirectory%\xxxxxx.mdc"
::复制cube到第三方目录
xcopy /y "%CubeSaveDirectory%\xxxxxx.mdc"  %CubeOutputDirectory%
::周处理
if %Week%==一 (
%Cogtrbin%\cogtr -c -n2 -s -k%DataSourceName%=%UserName%/%UserPwd% -m"%MdlFileDirectory%\xxxxxx_w\mdl\xxxxxx_w.mdl"
%Cogtrbin%\pcoptimizer "%CubeSaveDirectory%\xxxxxx_w.mdc"
xcopy /y "%CubeSaveDirectory%\xxxxxx_w.mdc"  %CubeOutputDirectory%
)
::月处理
if %DD%==01 (
%Cogtrbin%\cogtr -c -n2 -s -k%DataSourceName%=%UserName%/%UserPwd% -m"%MdlFileDirectory%\xxxxxx_m\mdl\xxxxxx_m.mdl"
%Cogtrbin%\pcoptimizer "%CubeSaveDirectory%\xxxxxx_m.mdc"
xcopy /y "%CubeSaveDirectory%\xxxxxx_m.mdc"  %CubeOutputDirectory%
)
::年处理
if %MMDD%==0101 (
%Cogtrbin%\cogtr -c -n2 -s -k%DataSourceName%=%UserName%/%UserPwd% -m"%MdlFileDirectory%\xxxxxx_y\mdl\xxxxxx_y.mdl"
%Cogtrbin%\pcoptimizer "%CubeSaveDirectory%\xxxxxx_y.mdc"
xcopy /y "%CubeSaveDirectory%\xxxxxx_y.mdc"  %CubeOutputDirectory%
)
exit
   
   
  另一方面因为windows上模型文件里的cube输出目录以及iqd数据源目录无法像Linux一样配置成"On the server";因此需要根据报表实际的解压位置进行重设定;
  在配置完"refreshCube.bat"后,执行“confgOtpath.bat”脚本:
  

rem 配置模型输出路径
@echo off
setlocal enabledelayedexpansion
::替换目标
set r_source=d:\transformer
::替换结果
::在refreshCube.bat里查找配置值[BaseDirectory=]
for /f "tokens=2* delims=^=^" %%i in ('findstr /I /R /C:"set *BaseDirectory" "refreshCube.bat"') do set r_target=%%i
::枚举所有替换文件
for /r ..\mdl\ %%i in (*.mdl) do (
::完全路径文件名
set file=%%~fi
::文件名不带后缀
set filename=%%~ni
::完全路径
set filepath=%%~dpi
call :fileReplace "!file!" "!filename!" "!filepath!"
)
exit
:fileReplace
set file=%1
set filename=%2
set filepath=%3
::去掉引号
set filename=%filename:~1,-1%
set filepath=%filepath:~1,-1%
for /f "tokens=1* delims=:" %%i in ('findstr /n .* !file!') do (
::得到文本内容
set f_content=%%j
::替换文本内容
if not "!f_content!"=="" set "f_content=!f_content:%r_source%=%r_target%!"
::将替换后的内容保存到临时文件
>> "!filepath!!filename!_tmp" (echo+!f_content!)
)
::将临时文件替换源文件
move "!filepath!!filename!_tmp" !file!
   

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-219677-1-1.html 上篇帖子: Windows Mobile CAB安装包分析 下篇帖子: Windows XP操作系统自带工具应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表