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

标准DSO有三张表:

 
标准DSO覆盖合计规则:
数据从源抽取到标准DSO中时,在同一抽取请求中,相同业务主键的数据会合并(合并的方式有覆盖与合计,合计又可为MIN、MAX、SUM中的一种,具体转换规则中可为哪一种合计,则要看Key Figure中的Aggregation聚合中设置的是哪一种合计方式,具体请参考“Key Figure中的Aggregation决定了DSO/CUBE转换规则中的Aggregation合计方式”章节)后存入到New中;抽取数据到DSO New表中时,不管抽取请求中的新数据是否与当前New表中已有的数据主键相同,新抽取请求中的数据合并(相同业务主键才会合并)后,再以新数据记录存入New表,并不会与New表中现有相同业务主键数据发生合并(原因是New中的主键为技术主键,并技术主键与抽取请求有关,同一抽取请求主对应着同一SID,所以不同抽取请求的数据即使业务主键相同的记录也是不会被合并的,合并只发生在同一抽取请求中,且相同业务主键数据之间);如果New中有相同业务主键的数据(多次抽取请求形成的),或者将要被激活的记录与现有Active表里的数据业务主键相同,并且DSO中设置中勾选了“”选项,则在Active时抽数请求会报红(其他不报错即不重复的记录也不能存入到Active表时,报错后整个抽数请求所包括的数据都不会插入到激活表里),如果未勾上,则Active时不会报错,并且相同业务主键的数据在Active表进行合并,并在Change Log表中记录数据变化过程;
 
New表中的主键为技术主键:

Active表中的主键为业务主键:

报表就是直接从该表中抽数,以及上层其他数据目标初始化时从该表里抽数,但上层其他数据目标的Detal更新需从Change Log表里抽数
Change Log表中的主键为技术主键:

激活时,如果某条数据没有发生任何变化,且转换规则的Aggregation设定是覆盖方式,则不会在Chang Log表里产生新的日志记录,但只要修改了某个非主键字段,则会记下日志;但如果转换规则的Aggregation设定的是合计方式时,不管数据是否发生变化,都会记日志
 
  • 写优化Write-Optimized DSO

写优化DSO只有一张Active表,数据不需要激活:

数据库表中的主键为:

如果去掉了写优化DSO的”不检测数据唯一性“的勾时,表示数据存入Active表中时会检查数据是否重复,此如果有语义上相同主键的数据时,抽数时抽取请求会报红,整个请求中包含的数据(包括重复与不重复的数据)都不能存入到Active表中;在勾上后,表示不再会检测数据唯一性,此时即使Key Figure关键值字段规则设置成了合并,也并不会将新抽取上来的数据与相同业务主键的数据进行合并(注:即使同一抽取请求中有相同业务主键的记录也不会合并);
注:写优化DSO转换规则的Key Figure的Aggregation虽然可以设置覆盖或合计,但对写优化的DSO是不起任何作用的,不管合并方式设置成什么(MOV、MIN、MAX、SUM),业务键相同的数据也不会发生合并
 
写优化的DSO只用于只有新增、没有删除与修改的数据的数据源,即抽取的这类数据是不会发生变化的,只会新增(如:由于零售企业的销售明细数据量大并且需要日结,所以零售企业的销售小票明细数据只有增加,对这类的数据可以使用写优化的DSO来做)。并且从数据源中抽数到写优化的DSO所对应的Active表里时,数据不会发生合并计算操作,而是原样将数据源的数据拷贝到表里,所以数据写入的速度也会快点

 
  • 直接更新Direct Update DSO

直接更新的DSO不能通过DTP抽数,因为此类型DSO无法创建DTP(也无法创建Transformation),所以该类DSO无法通过ETL来加载数据,只能通过其他Application将数据写到里面,如将某个Query报表查询出来的数据保存到该类DSO中。
直接更新的DSO也只有一张Active表,不过该表不是通过DTP上传数据,而是通过其它方式抽数(非DTP 的Request方式):

该类DSO所对应的数据库表的主键是由业务字段组成的主键,而不是技术字段(所以数据在写入时,业务主键相同数据也会发生合并计算,这与标准DSO是一样的)
下面演示将某个Query报表结果数据存储到此类型的DSO中
 
先创建一个Query用作直接更新DSO的数据源:
 
通过事务码:RSANWB将Query的数据存储到DSO中:
选择应用,这里会挂到General节点下
  
将数据源中的字段与DSO中的数据分配对应起来:
   
做好后,再执行即可将Query运行出来的数据存储直接更新类型DSO中:

三种DSO(标准DSO、写优化DSO、直接更新DSO)、标准DSO覆盖合计规则的更多相关文章

  1. C#三种定时器的实现

    http://www.coridc.com/archives/2253.html c#中提供了三种类型的计时器: 1.基于 Windows 的标准计时器(System.Windows.Forms.Ti ...

  2. 【java多线程】多线程的创建三种方式--笔记

    申明:线程的概念以及进程的相关概念,可以参考网络上其他资料,这里只讨论多线程是怎么实现. 一.多线程的简单理解 明白什么是多线程,小生通俗一点的理解为:在一个程序里,我想同时让这个程序完成多个任务. ...

  3. html中css的三种样式

    在html中定义CSS样式的方法有三种,新建CSS文件 使用link 关联 这种是最常用的外部引用样式,第二种讲样式写在 head 头部里面 这种是页面样式 ,第三中样式直接写在行内  style里面 ...

  4. xpath beautiful pyquery三种解析库

    这两天看了一下python常用的三种解析库,写篇随笔,整理一下思路.太菜了,若有错误的地方,欢迎大家随时指正.......(conme on.......) 爬取网页数据一般会经过 获取信息-> ...

  5. 详解Oracle数据货场中三种优化:分区、维度和物化视图

    转 xiewmang 新浪博客 本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,并给出了详细的优化代码,希望对您有所帮助. 我们在做数据库的项目时,对数据货场的 ...

  6. ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪

    ASP.NET MVC深入浅出(被替换)   一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...

  7. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  8. 记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案(转)

    问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...

  9. 一次MySQL两千万数据大表的优化过程,三种解决方案

    问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...

随机推荐

  1. 几个常见Win32 API函数

    1.获取客户区矩形区域 RECT cliRect; GetClientRect(hWnd, &cliRect); 2.获取窗口上下文句柄 HDC hdc = GetDC(hWnd);//... ...

  2. 为什么微信android图片质量会比iphone的差?

    为什么微信android图片质量会比iphone的差? 我们团队最初也纠结过这个问题,费了半天劲.绕了好大圈,直到最后才发现,原来这是谷歌犯得一个“小”错误,而且一直错到了今天. 谷歌的错就在于:li ...

  3. ActiveMq池

    有两种连接方式 1.Spring  引用 <!-- 配置JMS连接工厂 --> <bean id="connectionFactory" class=" ...

  4. MyBatis操作指南-搭建项目基础环境(基于XML)含log4j配置

  5. 【Lamp】 Linux 下安装PHP+Apache+Mysql 手记

    [0]写在最前 由于准备实习原因,今天又重温了Lamp的搭建过程,之前一直是看燕十八老师2012年的教程学习,因此今天也是拿了十八哥的lamp搭建笔记作参考.但这次按照笔记重新搭建,发现了很多问题,由 ...

  6. 不错的开源FTP类库

    socket开源ftp类库代码:http://netftp.codeplex.com/ 需要注意事项,如果以下代码出现乱码问题,可以设置其中的Encoding属性就可以. 用法示例: using Sy ...

  7. 【Unity3D基础】让物体动起来①--UGUI鼠标点击移动

    背景 首先还是先声明自己是比较笨的一个人,总是找不到高效的学习方法,目前自己学习Unity3D的方式主要是两种,一种是直接看高质量的源码,另一种是光看不行还要自己动手,自己写一些有代表性的小程序,这也 ...

  8. Nginx安装注意事项

    因为nginx需要依赖pcre库.zlib库.openssl库,所以需要下载这三个库以及nginx源码.       下载以上文件到/usr/local/src/目录下     使用tar -zxvf ...

  9. C++用递归方式实现在对不更改随机数组的情况下查找最大值

    #include <iostream> #include <iomanip> #include <ctime> using namespace std; int M ...

  10. [Ahoi2013]差异

    后缀数组+单调栈 代码 #include<cstdio> #include<algorithm> #include<cstring> using namespace ...