现在社会,都很喜欢炒作名词,就是俗话说的换汤不换药,纵观计算机的发展历史,也难免俗,而DSO就是这样一个产品,DSO原称ODS,即营运数据存储,现称为数据存储对象,概念改变但是实质不变,不管SAP认为他是企业营运数据的存储空间,还是单纯的所有数据存储对象,从技术的层面说,DSO就是一个用来存储数据的地方,也就是说从PSA的数据过来后,我们应该需要把数据加载到的一个可信赖的存储地,即使以后PSA数据包被删除,我们在DSO中应该也能够看到这些数据的存在。

而DSO的设计也是恰恰能够满足这样的要求,DSO本身就是一张二维表,只是现在用信息对象来表示了字段而已,实质没有根本改变,DSO本身也存在主键概念即关键字字段,而非主键字段则为数字字段,见下图:

进入“信息提供者目录下”,创建信息范围,并在右键点击信息范围,即可创建数据存储对象(DSO),DSO结构如下:

其中第一个标签页“内容”包含了DSO精髓所在,首先是构成DSO的信息对象;在结构的下方,就是包含了若干个按钮项,其中包含了构成DSO最基本的三张表:新数据、有效数据及更改日志;其中的新数据表就是最初从数据源或者其他DSO加载进来的数据,这些数据在没有被激活前都会存储在新数据表中,存放在新数据表中的数据也是无法使用的,如果要使新数据生效,则必须激活新数据;激活后的数据存放在有效数据表中,即双击“有效数据”按钮可以查看;另外一张表即为更改日志,更改日志为加载的新数据激活成有效数据进入有效数据表后与原来有效数据之间差异的存放表,所以在很多时候,更改日志可以用来作为一种增量的数据作为向上一层CUBE加载的依据;

第二个标签页“请求”页中存放的为数据加载标识(DTP),即每个DTP的加载记录,在DTP执行完成后,可以选中DTP,然后点击“激活数据”将新数据激活成有效数据;也可以选择某个DTP进行删除,删除DTP执行包后,在DSO中此DTP加载的相应数据也被会同步删除。

第三个标签页“重新建造”为向3.5的兼容,已经基本不在使用;

在对DSO有了基本的认识后,可以尝试加载数据进来看看了。首先右键点击“创建转换”,找到对应的数据源,然后将数据源与信息对象中的字段一一对应,则就是一个基本的转换了;所谓转换的概念,就是数据源传输到目标所要遵循的规律,即某个或某几个字段赋值到某个字段,然后可能需要做一个什么样的变更等等;进入转换,其界面如下:

上图就是一个最基本的转换,即数据源的目标字段对应到DSO的 Z_MATE字段,而销量对应Z_SALES;点击中间的连线,选择规则组,可以看看传输的具体规则,如下图:

其中红色圈部分是key figure更新DSO与CUBE的最大不同所在,DSO可以覆盖可以合计,而CUBE中只有合计,不支持覆盖;SAP之所以有这样的机制,其有着自己的解释,可以通过下图窥一斑而见全貌:

上图的业务场景需求如下,现在CUBE和DSO中现在有一条记录,其KEY值为10,现在想将其更改为8,那我们该怎么做呢?或者又有新需求,直接需要删除10这条记录,又该怎么做呢?

对于业务场景一由10变8,按照我们自己的思维来说,由10变到8的方法很多,10+-10+8 = 8没问题 、 10 -2 = 8亦可、甚至直接把10擦掉,改写成8也是可以;针对这些方法,来尝试更新CUBE与DSO看看结果如何;

第一种方法是生成一个前映像,一个后映像,前映像的值是-10,后印象的值是8,则对于CUBE来说,可以将这两个映像先后加入,则-10与10在维度完全相同的情况下10+-10=0,再加入后印象8即反应了实际的值,能够达到我们想要的效果,而由于CUBE是多张表构成,没有主键的概念,所以OVERWIRTE之法行不通;对于DSO来说,因为其二维表的机构特征,有着自己的主键,所以先加入一个-10,再加入一个8,根据相同的主键不管是累加还是覆盖,都可以得到相同的效果;

第二种方法是生成一个附加映像,由10变到8可以通过给出一个-2的差异值记录来尝试实现,直接加入一条与10相同维度的-2记录,在展现数据时候完全在相同维度下把10和-2都拉出来,得到的结果就会是8,结果完全正确,OVERWRITE同上,不可行!对于DSO来说,也只能选择累加了,因为覆盖的话,则得到的结果为-2,不能满足需求;

第三种方法即为擦除修改法,由于CUBE结构决定,OVERWRITE直接行不通,而对于DSO来说,是可以的,所以如果采用这种方法,CUBE无法更新;

对于业务场景二,由10变成0或者说无,我们的思维方式应该是,直接10 - 10 = 0;或者直接将10擦除,一了百了也OK;那看看SAP又要如何来应付呢?

先传入一个-10的反映像,并且在映像的结尾打上一个翻转标记,对于CUBE来说,在相同维度下,与原先的10会产生综合累计效应,得到的结果肯定为0,没有问题;而对于ODS来说,不管是累加上-10还是直接覆盖成-10,则因为有一个翻转标记,都可以考虑成0,所以也没有问题;

而对于直接擦除法,由于CUBE无法应用,所以直接打回不予采纳,而对于DSO,则此法可行;

综上不难看出,为什么对于CUBE的更新与对于DSO的更新,会有不同的更新方法,选择她是因为她最懂我的心,所以无怨无悔!

BW学习十六(dso)相关推荐

  1. OpenCV与图像处理学习十六——模板匹配

    OpenCV与图像处理学习十六--模板匹配 一.模板匹配介绍 二.代码应用 一.模板匹配介绍 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定目标的图像位于图像的什么地方,进而对图像进行定位. ...

  2. PyTorch框架学习十六——正则化与Dropout

    PyTorch框架学习十六--正则化与Dropout 一.泛化误差 二.L2正则化与权值衰减 三.正则化之Dropout 补充: 这次笔记主要关注防止模型过拟合的两种方法:正则化与Dropout. 一 ...

  3. Python的学习(十六):对文件的操作

    Python的学习(十六):对文件的操作 编码格式的介绍 Python中的解释器使用的是Unicode(内存) .py文件在磁盘上使用UTF-8存储(外存) 如何修改文件格式?不写的话默认为UTF-8 ...

  4. 强化学习(十六) 深度确定性策略梯度(DDPG)

    在强化学习(十五) A3C中,我们讨论了使用多线程的方法来解决Actor-Critic难收敛的问题,今天我们不使用多线程,而是使用和DDQN类似的方法:即经验回放和双网络的方法来改进Actor-Cri ...

  5. opencv学习十六:圆检测

    圆检测 原理 圆周上任意三点所确定的圆,经Hough变换后在三维参数空间应对应一点.遍历圆周上所有点,任意三个点所确定的候选圆进行投票.遍历结束后,得票数最高点(理论上圆周上任意三点确定的圆在Houg ...

  6. map赋值给另一个map_Java学习(十六): Lambda操作Map

    1. Java8新加入的lambda方法 由于继承关系,他们相应的子类也都会继承这些新方法. 2. forEach() 该方法签名为void forEach(BiConsumer super K,? ...

  7. java 集合读写同步_JAVA多线程学习十六 - 同步集合类的应用

    1.引言 在多线程的环境中,如果想要使用容器类,就需要注意所使用的容器类是否是线程安全的.在最早开始,人们一般都在使用同步容器(Vector,HashTable),其基本的原理,就是针对容器的每一个操 ...

  8. c++面向对象高级编程 学习十六 vptr和vtbl

    当一个类中有一个或多个虚函数时,内存中会多一个虚指针(vptr,virtual pointer),指向一个虚表(vtbl,virtual table) 父类有虚函数,则子类一定有虚函数 在下图示意图中 ...

  9. element子组件中的校验_Salesforce LWC学习(十六) Validity 在form中的使用浅谈

    本篇参考: https://developer.salesforce.com/docs/component-library/bundle/lightning-input/documentation h ...

最新文章

  1. MyEclipse中jsp编码设置
  2. mysql 硬盘空间不够_mysql磁盘空间不足的查排
  3. java wait方法_java wait方法
  4. 【忘川风华录】可爱的大“装备”?名士猫交互设计复盘
  5. 一个顾客买了价值x元的商品(C语言)
  6. detectron2训练自己的数据集_keras版MaskRCNN来训练自己的目标检测数据集
  7. 公共的Controler,是给非授权的用户访问
  8. php Pthread 多线程 (二) Worker和Threaded
  9. maven安装及集成myeclipse
  10. Golang 的 “omitempty” 关键字略解
  11. Windows 8 Directx 开发学习笔记(十四)使用几何着色器实现三角形细分
  12. 【ubuntu】开机一直“/dev/sda3:clean, XXX files, XXXX blocks”解决方法
  13. linux安装pdf阅读器 | 安装删除有道词典
  14. ft232电路ttl_FT232AM的设计电路及中文资料
  15. 【实验技术笔记】细胞表型检测之细胞周期(PI 染色)
  16. 大数据征信是个人信用风险管理的必然趋势
  17. java面向对象小知识
  18. 用Excel完成专业化数据统计、分析工作
  19. 如何在Win10系统下的IntelliJ IDEA 2018.3.5下载与安装以及激活教程
  20. python 读取doc 和 docx

热门文章

  1. VB编写欧姆龙PLC和霍尼韦尔扫描枪 的串口调试程序,可供大家参考
  2. Android获取通话记录
  3. 智能家居市场中zigbee通信技术与RF315/433通信技术的区别
  4. 砸金蛋java代码_java实现砸金蛋抽奖功能
  5. Android Swift iOS开发:语言与框架对比
  6. 【Python画图 04】标注
  7. CreateSpecificCulture('zh-cn')和new CultureInfo('zh-cn')的区别
  8. 联想MIIX720二合一笔记本键盘维修(带键盘灯款)
  9. Android智能识别 - 银行卡区域裁剪(原理篇)
  10. [英语语法]句法之状语从句