[转载]BW增量更新的理解(时间戳)

在BW中,存在两种数据抽取方式,完全更新与增量更新,完全更新是每次把截至到某个时间的数据全部抽取,增量抽取则只抽取上次和本次抽取之间更新的数据,很显然,增量抽取能够提高系统效率,根据SAP帮 助的说法,增量更新又分为时间戳和增量队列两种方法,其中财务数据的抽取为时间戳增量法,后勤数据的抽取为增强队列法。对于增量更新,都需要先对数据抽取 进行初始化,然后再进行增量的抽取。对于时间戳增量法,系统存在一个延迟时间,即时间戳设置时间与记账时间的差异,比如时间戳是根据创建时间(或输入时 间)来确定是否更新的依据,而在抽取开始时(时间戳已标记),此时凭证已创建而未记账(即未更新至数据库),则此次无法抽取到该凭证,但下次抽取时,由于 已在时间戳范围之外,也不再进行抽取,从而导致抽取数据遗漏,避免此问题,SAP帮助上给出了通过设置安全抽取时间的方法,设置视图为BWOM2_V_SAFETY, 可根据不同的数据源设置不同的安全时间,两个小时为推荐设置,我的理解是这个安全时间是对于已经创建但未保存在凭证而言,如果在这个安全时间内保存了,则 此次抽取将包含在内,那时间戳标记会改变吗?如时间戳标记不变,则在安全时间内抽取不能结束,需一直等待凭证保存然后抽取?未进行测试,不知这样理解是否 正确。有的人会说,既然这样,何不根据记账时间来标记时间戳,我想如果根据记账日期,则增量更新问题更大,因为有的时候经常在下月往上月记账(财务正常结 帐是这样的),如果根据记账日期判断,则遗漏数据更多。财务上的时间戳标记表为BWOM2_TIMEST,其中TS_LOW和TS_HIGH字段为两次更新之间的时间差,修改凭证日期表则为BWFI_AEDAT。后勤数据抽取相关的T_code有LBWG/LBWE/LBWQ/RSA7等,后勤数据是先保存在R3端,然后再抽取到BW中的。
 
 
举个例子:
比如你6小时抽取一次数据,假如你第一次在12:00抽取,那么下次应该是18:00抽取,那么应该来说18:00抽取的数据是 12:00-18:00的数据才对,但是有种情况需要你考虑,比如我11:55在做一个凭证,但是中间我去吃饭,12:30才回来完成这个凭证,那么这个 凭证就是11:55创建的,在12:00抽取的时候,由于凭证没有产生,因此无法抽取,但是下次18:00抽取的时候,由于这个凭证是在11:55创建 的,所以也无法抽取到。
做BW数据仓库最重要的一条准则就是“不重复、不遗漏”,那么这样你就遗漏了数据,那么SAP就想了个办法,就是比如这次我抽取从 06:00-12:00,那么下次我抽取从11:30-18:00,这样上面的凭证就能抽取出来了吧,这时候11:30-12:00就有半个小时的重复, 这个就叫做Lower Limit。
同上,比如我12:00抽取的时候,不想抽取06:00-12:00,而是想抽取06:00-11:30,那么我就设置一个Higher Limit 为30分钟,则抽取的时候就不会到最新的时间,而是需要过账半小时前的凭证。
比如我设置了30分钟的Lower Limit,30分钟的Higher Limit,那么我12:00抽取的数据应该是05:00-11:30的数据,下次抽取的数据时11:00-17:30,在下次就是 17:00-23:30,在下次就是23:00-05:30,在下次就是05:00-11:30,如此循环。
但是如果设置了Lower Limit和Higher Limit之后,请记得在BW中使用DSO来处理数据。
上一篇:贪吃蛇的java代码分析(三)


下一篇:Web应用程序的开发步骤