声明:原创作品,转载时请注明文章来自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表里数据结果相同,即要求将最终的累计结果冲为零,所以最后加了以下三项反冲,但反冲的数值并不是我们文件中的值,而原来有多少就冲多少(即好比数据被删除了):

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

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

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

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

    阅读目录: 1.背景介绍 2.简单介绍领域模型模式.活动记录模式 3.活动记录模式的简单示例及要点 4.总结 1.背景介绍 对软件开发方法论有兴趣的博友应该发现最近“领域驱动设计”慢慢的被人发现被人实 ...

  3. salesforce 零基础学习(三十五) 通过Process Builder和Approval Processes锁定记录(Lock Record)

    有的时候我们可能有这样的需求,当某个字段为特定的值情况下,便锁定此条记录,仅允许Profile为System Admin的用户修改或者解锁,其他的用户只能查看此条记录,不能修改此条记录,这种情况下我们 ...

  4. (4.7)mysql备份还原——深入解析二进制日志(3)binlog的三种日志记录模式详解

    关键词:binlog模式,binlog,二进制日志,binlog日志 目录概述 0.binlog概述 查看binlog日志参数设置: show variables like '%log_bin%'; ...

  5. Dynamics CRM2016 Web API之更新记录的单个属性字段值

    在web api中提供了对单个属性的更新接口,这和查询中查询单个属性类似,对这个接口我个人也是比较喜欢的. var id = "{D1E50347-86EB-E511-9414-ADA183 ...

  6. 读书笔记《PHP高级程序设计、模式、框架与测试》

    序言 闲来无事,下载了一些电子书,然后看书名不错<PHP高级程序设计_模式.框架与测试>,翻了一下虽然书有点老了但是讲的内容经常会碰到!给大家推荐一下,然后这里放上我的读书笔记,每日更新. ...

  7. mysql 记录(record)

    以下内容来源于<mysql内核:Innodb存储引擎 卷1> 简单介绍物理记录和大记录.仅为理解mysql 索引基础 存储结构这一章节而写. mysql的默认存储引擎为Innodb.Inn ...

  8. 非 GUI 模式运行 JMeter 压力测试

    非 GUI 模式,即命令行模式,运行 JMeter 测试脚本能够大大缩减所需要的系统资源. 使用命令:jmeter -n -t <testplan filename> -l <lis ...

  9. Oracle的日志记录模式

    本篇摘自 http://www.cnblogs.com/cnjava/archive/2012/04/09/2439497.html --=============================== ...

随机推荐

  1. xcode调整debug,release模式

    今天调试的时候发现变量都不能查看了.在「lldb」中通过「po」命令来查看总是提示变量未找到. 环境 xcode 7, Swift 2 错误提示 ‘XXXX’ was compiled with op ...

  2. java内省机制及PropertyUtils使用方法

    背景 一般情况下,在Java中你可以通过get方法轻松获取beans中的属性值.但是,当你事先不知道beans的类型或者将要访问或修改的属性名时,该怎么办?Java语言中提供了一些像java.bean ...

  3. IIS下Asp.Net应用程序多进程设置及Session共享

    背景: 目前项目中在单个进程的应用程序经常会遇到w3c.exe崩溃的情况,于是就设想是否可以通过IIS多进程的方案来避免出现该问题. 于是搜了下“怎么实现多进程的方案”,找到了这篇文章:http:// ...

  4. option(recompile)

    Ref: http://www.cnblogs.com/CareySon/archive/2013/05/04/PlanCacheInSQLServerPart2.html https://msdn. ...

  5. web前端基础知识 - Django进阶

    1. 路由系统 1.1 单一路由对应 url(r'^index$', views.index), 1.2 基于正则的路由 url(r'^index/(\d*)', views.index), url( ...

  6. ThroughRain第一次冲刺(每天更新)

    第一次冲刺时间: 11月14-11月23 第一次冲刺目标及分配: 1.注册登录界面            认领:王大华 2.界面跳转                  认领:梁仕标 3.点餐界面   ...

  7. [原创]java WEB学习笔记107:Spring学习---AOP切面的优先级,重用切点表达式

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. 802.1X基础

    这是一个认证规范.使用EAPOL协议在客户端与认证端交互. EAPOL协议:Extensible Authentication Protocol over LAN. 假设三个实体: 客户端:PC 认证 ...

  9. Given a code_combination_id how can i get the code description? 获取科目组合描述

    SELECT c.code_combination_id, c.concatenated_segments, apps.fa_rx_flex_pkg.get_description(101 -- p_ ...

  10. struts 异常机制

    1.try-catch 在Action中通过try-catch捕获异常,在catch中返回字符串, 通过返回的字符串在Action的result元素中进行匹配,最终返回响应的页面 2. 局部异常映射 ...