DSO的记录模式Record Mode字段测试

声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4297274.html

不管是哪种DSO,表里的数据都会有Record Mode这一字段,NEW表与Active表里的该字段是由数据源上传上来的,而Chang Log则是由BW系统在激活时由抽取上来的数据与Change Log里原有数据进行比对得到的,并且 后像、A像 都以是 X前像+后像来记录,R像与D像 则还是以本身的像类型记录

(注:Push方式的Delta-Queue里的数据也会带有记录模式,这种是用户在维护数据时SAP系统记录的(并且不同的Delta Proess增量处理模式,则会导致Delta-Queue存入数据有不同的记录模式Record Mode),但不知道Pull方式的Delta-Queue是否也带?需测试

下面以上面文件数据源为源,来测试记录模式

新建标准DSO,将文件中的数据抽到此DSO中:

 

激活前,New中的数据如下,此时Record Mode并没有数据:

激活后,Active表与Change Log中的数据如下:

Active表中的Record Mode也是空的,只有Change Log表里的Record Mode有数据,且都是新像,它是由系统自己对比数据自动设置的,但是New表与Active表里的Record Mode的值是由数据源本身提供的,但此时的文件数据源没有提供,所以是空的

修改文件里的数据,再抽:

 

抽到DSO后激活,再看Active表与Change Log表里的数据如下:

由于500那条记录没有作修改,所以这次抽取时,Change Log没有增加与它相关的数据

从Change Log可以看出,在DSO做激活时,系统会拿本次抽上来的数据与Change Log表里的数据作比对,然后生成修改过程的数据(如前像),正是因为有了Change Log表,所以AIE增量处理方式的数据源原本数据是不能直接抽到累加型的DSO与CUBE中的,但如果中间通过标准覆盖型DSO后,就可以再将数据抽到累加型的DSO与CUBE中

问题引出:通过DSO关键值字段默认覆盖特点,上面对修改与新增都会支持的很好,如果数据源中的数据被物理删除了,那么怎么让DSO也知道呢?

其实在Transformateion中,我们可以看到Record Mode其实是技术字段,那么只要我们的上来的数据中有Record Mode这样一个字段时,实质上也是可以抽到DSO的New与Active表中的Record Mode中的:

下面我们在上面文件数据源上加上Record Mode这样一个字段:

然后在文件中也加上一列 Record Mode:

然后Transformateion做一下字段映射,映射之前需要将常量修改为直接分配规则方式:

再开始传数据,此时PSA里的数据如下:

运行信息包后,DSO表中数据如下:

此时发现将N像新增像)统一变成了X后像,即修改结果像

发现Active表里少了一条数据了,即R像的数据被删除

此时Chage Log里会增加一条R像的数据,即Active中被删除的那条数据。但1001、1002都没有变化,因为转过来时的Record Mode分别为新项与后项,最后都将它们看做是后项即修改,但数据又没有发生任何变化,所以日志表里对这两条记录没有记录任何日志

下面来测试一下A像(累加项),在做之前,需要重新创建另外一个DSO,其金额字段转换规则需要使用累加型(默认情况下是覆盖型的,如上面的DSO):

 

再修改文件内容,都修改成后像

在测试之前,删除数据源中PSA里以前抽的所有数据请求Request

再运行信息包:

运行DTP,查看DSO的Active表:

再次运行信息包与DTP后,Active表中发现Amount累加(2倍)了:

Change Log表中,后像的值都是累加后的值(2倍值),而不是传过来的文件里设置的值:

下面再次修改文件,使用A像

运行信息包与DTP后,New表:

Active表里的数据变成了3倍

Change Log表

再运行一次信息包与DTP后:

再修改文件成R像:

运行信息包与DTP:

此时Active里没有数据了,发现全部被删除了:

(原因:因为是R像,R像本意最终是要将记录删除的,所以Active表里的数据最后被全部删除了,既然是删除则R反冲多少已经并不重要了,重要的是要将对应的数据删除掉)

此时的日志表里的数据不会被删除(因为是日志表嘛,不会直接删除,它是要记录数据变化的整个过程的),但最终的结果也要与Active表里数据结果相同,即要求将最终的累计结果冲为零,所以最后加了以下三项反冲,但反冲的数值并不是我们文件中的值,而原来有多少就冲多少(即好比数据被删除了):

时间: 2024-08-02 10:58:39

DSO的记录模式Record Mode字段测试的相关文章

增量处理属性之记录模式(Record Modes)

声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4297255.html 注:如果是新增一条数据,则是使用后向空格,而不是N像,因为后像与N像在结果是上等效的,所以新增时就使用后像替换新像 ?  N:新增 ?  X前像:修改前的值 ?  空格:后

.NET应用架构设计—适当使用活动记录模式代替领域模型模式

阅读目录: 1.背景介绍 2.简单介绍领域模型模式.活动记录模式 3.活动记录模式的简单示例及要点 4.总结 1.背景介绍 对软件开发方法论有兴趣的博友应该发现最近"领域驱动设计"慢慢的被人发现被人实践起来,园子里也慢慢有了DDD的学习气氛和宝贵实战经验的分享.其实之前我也痴迷于DDD,为什么会痴迷于它并不是因为它是所谓的新技术,也不是因为各种对它的炒作,而是我觉得我找到了能解放我们进行企业业务系统开发的方法论. DDD可以很好的指导我们开发可靠的软件系统,尤其是现在的企业业务复杂多变

PL/SQL基本结构---PLSQL复合类型---记录类型record

记录类型record  record类型最常用,声明的时候可以加not null,但必须给初始值,如果record类型一致可以相互赋值,如果类型不同,里面的字段恰好相同,不能互相赋值.引用记录型变量的方法是“记录变量名.基本类型变量名”.    ―――――――――――――――――――――――――――――――――――――    declare         type t_first is record(              id number(3),              name v

查找表中多余的重复记录(多个字段)

3.查找表中多余的重复记录(多个字段) select * from vitae awhere (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count(*) > 1) 注意这里 in可以有多个字段

SQL 将一条记录中多个字段的值拼接为一个字段 && 将多行数据合并成一行,并且拼接CONVERT() 、for xml path的使用

接着上篇文章的订单表(商品编号,价格设置时间id(类似于创建时间,创建时间约早,则act_id越小) ,价格的时间段,商品价格) 一.将一条记录中多个字段的值拼接为一个字段 现要求将两个时间段合并为一个字段,应该如何做呢? 先来看下理想的结果: 查询出的时间段合并到一起了: 代码如下,将查询的字段用+'你想要的符号' + 拼接即可 select item,act_id,loc_id,convert(varchar(100),start_date,20)+ '-' +convert(varchar

架构模式: 服务集成契约测试

架构模式: 服务集成契约测试 上下文 您已应用微服务架构模式.该应用程序包含许多服务.服务通常会调用其他服务.您必须编写自动化测试,以验证服务是否正常运行. 问题 如何轻松测试服务是否提供了客户期望的API? 要点 端到端测试(即启动多个服务的测试)是困难,缓慢,脆弱和昂贵的. 结论 服务的测试套件,由使用它的另一个服务的开发人员编写.测试套件验证服务是否满足消费者服务的期望. 例子 Spring Cloud Contract是一个支持这种测试方式的开源项目. 结果上下文 这种模式具有以下好处:

使用非 GUI 模式运行 JMeter 压力测试

使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源.使用命令jmeter -n -t <testplan filename> -l <listener filename> 这里是我们使用非 GUI 模式运行测试脚本时可以使用的一些命令: -h 帮助 -> 打印出有用的信息并退出 -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter -t 测试文件 -> 要运行的 JMeter 测试脚本文件 -l 日志文件 -

Spark中的local模式的配置以及测试

一:介绍 1.Spark的模式 Local:本地运行模式,主要用于开发.测试 Standalone:使用Spark自带的资源管理框架运行Spark程序,30%左右 Yarn: 将spark应用程序运行在yarn上,绝大多数使用情况,60%左右 Mesos: 二:安装 1.解压 2.建立软连接 3.复制配置文件 4.修改env.sh文件 三:运行测试 1.启动HDFS 2.准备测试路径 3.开始测试 ./run-example SparkPi 10<----------------10代表迭代的次

salesforce 零基础学习(三十六)通过Process Builder以及Apex代码实现锁定记录( Lock Record)

上一篇内容是通过Process Builder和Approval Processes实现锁定记录的功能,有的时候,往往锁定一条记录需要很多的限制条件,如果通过Approval Processes的条件判断写起来可能很麻烦,有些逻辑通过Apex写起来很容易,此篇内容为通过Process Builder 和Apex代码实现锁定记录. 需求:对Opportunity表进行判断是否加锁或者解锁.当Delivery/Installation Status这一项的值为'Completed'情况下加锁,为其他