理解BW数据模型 - 查询的执行

        为了更好地理解不同的数据立方体模型的优缺点,让我们近距离地观察一下SAP BW 在运行时是如何执行查询的。下面的伪代码从一个非常笼统的角度解释了这一过程:首先这段伪代码只是用来解释BW执行查询的过程,所以跟实际代码有巨大的差别,其次它只适用于没有应用BIA的情况下。
 
*** STEP 1 − Prepare query execution
Convert selections into surrogate key representation.
Generate optimized temporary hierarchy table.
*** STEP 2 − Prepare query execution
Generate query view
Open query cursor
*** STEP 3 − Execute query
Loop at cursor.
Execute user exit for virtual characteristics / key figures.
Apply dynamic filters.
Endloop.
*** STEP 4 − Complete query result
Read key values, texts, display attributes, hierarchies.
Format query results.
 
在查询执行的第一步,所有在查询中定义的查询条件首先会被转换成代键的形式。对与那些定义在CHARACTERISTIC VALUE上面的查询条件,系统会根据这些条件 返回所有满足这些条件的CHARACTERISTIC的代键。对于基于层级的查询条件,系统会产生一个临时表,表中包含了所有相关层级节点的代键。
 
第二步,系统会根据查询的定义和第一步的返回结果生成一个SQL语句用来创建一个临时的数据库视图,根据这个视图系统会打开查询的CURSOR用于从数据库中返回查询的结果集。下图解释的是怎么样为一个简单的查询(不包含导航属性和层级)生成所需的SQL语句。
119153_201006231420441.jpg
一个标准的简单查询生成的SQL语句其实就是两个事实表和相应的维度表之间的JOIN。如上图所示,JOIN语句的组成部分只包含两个事实表和相应的维度表,SID表和无关的维度表都不在其中。生成的SQL查询返回的结果包括所有的在查询中定义的CHARACTERISTIC和KEY FIGURE:CHARACTERISTIC返回的是它的代键,而一般来说KEY FIGURE返回的是相应的聚集后的合计值。
 
第三步,系统将所有定义的VIRTUAL CHARACTERISTICS/KEY FIGURES和动态FILTER(比如条件和异常)应用到上一步返回的结果集中的每条记录。
 
在查询执行的第四步,也就是最后一步,系统会根据结果集中的CHARACTERISTIC的代键 从各个主数据表中读出需要的文本、显示属性、层级等,然后根据查询定义格式化查询的输出。
 
NOTE:
在查询执行的关键步骤,第二步中,主数据的各个表(包括SID表)是不参加计算,也不参加DRILL DOWN, DRILL UP的。只有在查询的结果集返回后,系统才回去读主数据表中的数据来进一步格式化查询的输出。

fj.pngQuery Access Path #1.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/119153/viewspace-665964/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/119153/viewspace-665964/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
传统的Cube:星型结构,由事实表和维度表组成,事实表存放的是业务数据以及它本身独有的信息和指向周围维表的外键,事实表的主键由维度键值组成;维表中存放的是特性值,由一个维度键值和多个维度属性组成. 改进的Cube:星型结构,由事实表、SID表(存放的是由系统自动为每个特性生成的SID码(4位整型值)和维度键值(4位整型值),其中SID码是主数据表中的主键)和主数据表组成;SID表中存放的不再是特性值,它存放的是SID码和维度键值(由系统自动生成),特性值存放在主数据表中.此时的维表包含SID表和主数据表,其中SID表中只存放了该维表的维度键值和它包含的特性的SID. 改进的Cube相比传统的Cube的优点: 1、主数据跨信息立方体的使用(共享维度) 2、可以对关键值进行聚集 3、查询性能更高 DSO:简单的二维表结构,有关键字字段和数据字段组成,可分为3种类型: :标准数据存储对象 由有效数据(已激活数据)、更改记录和新数据(待激活数据)3张二维数据表组成.数据通过DTP进入到DSO中,新数据在激活之前存放在新数据表中,此时报表层面是看不见数据的,只有在激活后才能看见。更改记录表记录了数据激活前后的变化,为从DSO向其他信息提供者更新数据提供了增量机制. :写优化的数据存储对象(通过DTP抽取数据)(1张表) :直接更新的数据存储对象(不是通过DTP抽取数据,而是通过API函数直接写入DSO中)(1张表) ----------------- :同一主键的数据在DSO中是独立存放的,但在Cube中是要计算的(其实这些是在DSO中可设置的). :SID的主数据,可能包含属性、文本和层级结构三个部分,不同的部分由不同的数据表存放.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值