有时候我们在遇到很大的数据量时,就不得不考虑用增量刷cube,对于初学者,可能会有很多迷茫,下面是我学习cube增量更新的一点心得体会,
总结出来和大家分享下
方法一:按照天刷新
this cube is incrementally updated
用processing里面的this cubeis incrementally updated 增量更新,这个是更新昨天的数据,如下图所示
双击打开测试立方体,选中this cube is incrementally updated这个按钮,这种增量更新方式,需要在iqd提供增量内容,例如我们在iqd的where加上这上这句(registration_date是查询日期) Where to_char(registration_date,'yyyymmdd')=to_char(SYSDATE-1,'yyyymmdd')意思就是按照registration_date取昨天的数据,即提供昨天的增量数据,但是如果我们修改了前天,或者一个星期前的数据,而registration_date时间又不会随修改时间去变化,这时候我们的数据就不准确了。下面我就介绍一下另一种解决这种问题的方法。
方法二:按照时间段刷新
Cube group
这种方法适用于,更新某一段时间(或其他维度),
如果我们2014年以前的数据基本是固定不变的,我们想要每天都只更新2015年的数据,这时候我们就可以用cube group这种方式更新。
图中所示是按照查询日期更新的,有时候我们做的transform会有多个日期,再建cube group时会有问题,其他日期我们在写iqd时要写成下图的格式。
生成好cube后,会出现这些文件
打开测试文件夹,里面是按照年来划分的mdc文件
下次更新时,我们在iqd的where条件中加上一句
where to_char(registration_date,'yyyymmdd')between '20150101' and '20151231',意思是取2015年的数据,再手动的删除(做bat文件可以自动删除,看标题3)’20150101-20151231’的mdc文件,然后点击生成cube,就会重新生成2015年的数据,2015年以前的数据不变。
三.做bat文件
如果我们需要自动刷新cube,就需要做一个bat文件,在做bat文件之前我们需要把transform—— view——signons,设置成不需要输入密码,如下
写bat文件如下
1. C:\Windows\System32\taskkill /f /imBIBusTKServerMain.exe这句是杀掉使用cognos的进程(建议用电脑管理员账户登录,普通账户会出现杀不掉进程的情况)
2.del E:\transform\cube\测试\20150101-20151231.mdc这句是删除2015年的数据
3.cd "D:\cognos\c10\bin"这句是进入到cogtr所在的路径
4.cogtr.exe -n2 -s "E:\transform\sampdata\测试.pyj",刷新模型
四.用bat文件做定时计划
参考http://jingyan.baidu.com/article/d5a880eb4c735813f147ccd3.html