Delta增量抽取模式 request selection: Delta init without data 无数据的增量初始化请求

话说这我就不明白了。
对于频繁更新的交易数据,在初始化增量抽取之后,后续的增量抽取请求上,有以下这几个选项:
在这里插入图片描述
在开始看delta请求的选项之前,我们得理解下DTP加载和package之类的概念。
DTP加载就是从源到目标,package的话,大小会影响到DTP的执行时间长短。
包是啥呢,就是把一组数据包进一个包里。
那包的大小呢,就是能容纳的记录的多少。
默认包大小是50000。你可以增大或者缩小包大小。
根据你转换里面逻辑的复杂程度,例程的多少,数据源数据量大小,DTP的处理模式(就是下面要讲的)来决定包的大小。
包多大,最后的routine都是在一个个包里执行的。包太大了,里面条目数太多,那你routine里面的查找就要执行很长时间。如果你每天都有大量的数据更新,那最好把包大小调小一点。(这里的性能调优很容易被忽略)
如果你数据量不大,而且转换里都是直接更新,那就50000吧。

举个例子,来看下一个ADSO的请求:(BW版本750 on HANA)
在这里插入图片描述
这个请求不像以前是请求号了,现在是时间。到秒后面,还有六位时间。前面是加载请求和每个请求的条目数,后面是激活请求和激活的条目数。那咋条目数还不一样呢?我猜是多条改动的条目最后归结为一条?😂这个得抽时间找数据来试着看。要不然口说不形象。

***20210602->因为关键值这里有aggregation,所以激活后主键一致的直接归为一条了。***

加载请求先加载到New table表里,然后激活到Active table里,中间过一下Change log。实现对比。

再下面有详细的DTP执行的时间和方式,这里我们可以看到一句话:Replication Pointer : 20201130090040.000060000 Replication Mode : Extraction of Last Delta - - X
有复制指针时间戳,还有提取最后一个Delta.
要知道我这个Delta的更新模式是:delta inti without data(再贴一遍图)在这里插入图片描述
光看这句话,这个更新模式我是看不懂的,啥就叫without data了,要是连起来看,就是不抽数?那显然不对啊。
好在请求的细节里就给出了详细的解释。到这里可以结束了。哈哈😆
并没有的哈。
那这个复制指针和提取最后一个delta是啥意思呢?
我们往下看看。

Delta init without data

这个就是今天的重点了。
SAP给的解释是这里标志第一个Delta DTP请求是否是无数据传输,如果你选了这个,那就是会标识源数据已经被提取,但是不会真正传输到目标系统。
被标志成已抽取的数据不会被下一个请求读取。只有此后发生的新数据(删,改)的才会被读取。
这个的应用场景是,DTP在处理链中自动执行,用来重建目标。
说实话,上面这些话还是看不懂。

哎,那咋办。不读史不足以知未来。
回到以前的版本,其实这个是用在Info package上的,奈何750没有infopackage了,那在DTP上应该也会继承一些概念。

我们再来看以前的概念:

Init with data

一般我们在做初始化的时候,不管是with/without data,都会有一条记录在RSA7增量队列里生成, 现在是ODQMON。初始化之后保存的其他record,就是增量记录了,会被以后的delta抽取抽到BW系统里。
那么Initial with data 是啥意思呢?其实就是初始化+全量(没有过滤可选)
一般都是用来从ERP提取一般数据源到BW里。

Init without data

从源系统只做一个到BW系统的初始化。初始化之后保存的记录在下次初始化请求会被抽取到BW系统里。
那这两个with、without的区别在哪呢?

假设我们有5年ERP数据。
用init with data,那这5年数据都会被送到BW,并且在ODQMON里有一个增量记录。在这条增量记录的时间戳之后的新增或修改删除的记录,都会被下一条delta 来提取。

如果用init without data,那就只会在ODQMON里面有一个增量记录,5年数据不会出现在BW里,之后也只会提取时间戳之后的增量。
如果你要全部数据,那只能再用全量来弄。
如果你有需求只要某一年的数据,那我们就可以用这个init without data来获取当前时间点以后的增量,然后全量抽取某一年的。

***以上呢,是之前info package的初始化抽取方式。

那从这里我们大概也能看出来,差不多这么回事。前面也许有20年数据,那我不要了。我就只要现在时间戳开始之后的。时间戳会告诉系统从什么时候开始之后再抽取delta。
希望解释的清楚。反正就是用的这个了。

Get All New Data Request By Request

这个其实很好解释了,DTP是把源的所有请求都放在一起,那它就可能生成一个很大的请求。也就是假设你一个省是一个client,那你从这个省来的数据可以是一个请求。但是如果你设置了这个request by request,那它就是一次读一个请求,如果还有新请求,那就再生成一个DTP请求。
一个DTPjob结束的时候,如果源又来了请求,那DTP就会再建一个请求,再抽。
就是像正常抽取之后的停顿一下。

Only get delta once

这个就更简单了,就是这个源的请求是否只要传一次。就是一次全抽。这种的话,就是有可能数据源没办法增量。那我就搞不明白了,这个跟Full也没啥区别啊。
0409 update
这个是指只抽取最新的请求。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaomici

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值