zoukankan      html  css  js  c++  java
  • BW数据源深入研究【转自WKingChen的博客】

    DataSource是BW中非常重要的部分,一个合格的BW顾问应该对BW DataSource有深入的理解,网上这方面的文章也非常多。我大概总结一下,如有错误,欢迎指正。

    标准数据源的Delta机制概述

    1. 所有的Delta数据,在传输到BW之前,都会先到Delta Q, 再到BW。Delta Q可以通过RSA7进行管理和观察。Delta Q的一个重要作用是保证记录的顺序。

    2. Delta数据从原始表到Delta Q,有两种情况:对于LO的数据源,是系统将Delta数据push到Delta Q的,然后在InfoPackage执行的时候,再把数据从Delta Q搬到BW。 对于非LO的数据源,大部分采用time stamp的方式,在InfoPackage执行的时候,系统根据time stamp去源数据表获得delta数据,这些数据被送往Delta Q之后,紧接着就被搬到BW了。所以,对于非LO的数据源,你很难在Delta Q里看到他们的Delta 数据。

    3. 对于time stamp的delta 方式,大部分数据源(全部?)的time stamp 记录在表BWOM2_TIMEST中。

    4. 对于LO数据源,其Delta数据流根据选择的_updatemode不同会有所区别,后面详述。

    5. 系统如何获取Delta 数据,跟数据源的delta process 有关,后面详述。

    关于Delta Process

    每一个数据源,都有一个很重要的属性:Delta Process . 在RSA2中可以看到:

     此外,你也可以在表ROOSOURCE中找到该信息。

    Delta Process 告诉我们系统是如何捕获delta 数据的。 一般来说,delta数据有新增,修改和删除几种情况。新增就是直接把这条数据作为delta数据,删除一般是生成一条方向数据(Reserve Image)。修改,就有点复杂了,大概有几种不同的处理方式:

    • After image 即只捕获修改后的数据作为delta数据。
    • Add Image 则是捕获修改之后的数据与源数据之间的差。
    • Before image则生成一条原来的数据的反向数据,用来冲销原先的数据。

    BW数据源,大概有有以下的Delta Process:

    这些delta process都是如何捕获delta数据的呢? 表RODELTAM可以告诉我们其中的奥秘。这张表记录了每个delta process 是采用何种镜像去捕获delta数据的,是否对保持记录的顺序有要求。不同的镜像方式,对BW的建模和数据流是有很大影响的:

      • 若采用before image, after image, reserve image的方式,例如:ABR(DSO的change log也是这种方式),则数据既能覆盖(覆盖的时候after image覆盖掉了之前的before image),又能累加(累加的时候,before image冲销原来的记录,after image则是修改后记录),可以增量更新到DSO和InfoCube。
      • 若只支持after image, 则数据只能覆盖,不能累加,例如:AIE, 则只能先增量更新到DSO,再更新到InfoCube。这种情况,一定要在DataSource 和 Cube之间有一层DSO.
      • 若只支持add image,例如:ADD,则数据只能累加不能覆盖。这种情况下,通常没有DSO层,如果需要DSO层,则注意要将Transformation设置为累加模式。
      • 若是full only, 要实现delta必须通过infopackage的设置来近似实现。
  • 相关阅读:
    封装( 增删改 查 )类
    php注释规范
    php访问mysql数据库
    php 文件限速下载代码
    jQuery鼠标事件汇总
    权限管理
    文件管理 打开-返回上级
    文件操作
    简单的文件上传
    ajax XML
  • 原文地址:https://www.cnblogs.com/hanmos/p/2586802.html
Copyright © 2011-2022 走看看