三种DSO(标准DSO、写优化DSO、直接更新DSO)、标准DSO覆盖合计规则

89855ba3-35d8-409c-a647-364fd2f1e279
  • 标准Standard DSO
56b9570b-26bb-4a19-bf83-9bb51a3baa73
标准DSO有三张表:
791feac6-6e74-4b9f-8707-cbd7f400e221
 
标准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中设置中勾选了“34896934-0e4a-45da-a543-8d1c635ccf39”选项,则在Active时抽数请求会报红(其他不报错即不重复的记录也不能存入到Active表时,报错后整个抽数请求所包括的数据都不会插入到激活表里),如果未勾上,则Active时不会报错,并且相同业务主键的数据在Active表进行合并,并在Change Log表中记录数据变化过程;
 
New表中的主键为技术主键
6c6163c5-add8-4001-acb9-f6bb00ebad67
Active表中的主键为业务主键
e597386d-82b4-4478-822c-541080b6dfd7
报表就是直接从该表中抽数,以及上层其他数据目标初始化时从该表里抽数,但上层其他数据目标的Detal更新需从Change Log表里抽数
Change Log表中的主键为技术主键
1dfbbd31-bea7-4bf6-90d2-d29770bb0d44
激活时,如果某条数据没有发生任何变化,且转换规则的Aggregation设定是覆盖方式,则不会在Chang Log表里产生新的日志记录,但只要修改了某个非主键字段,则会记下日志;但如果转换规则的Aggregation设定的是合计方式时,不管数据是否发生变化,都会记日志
 
  • 写优化Write-Optimized DSO
055e63d4-63be-4842-813e-ea4a68c1d5d8
写优化DSO只有一张Active表,数据不需要激活
06ca5786-f0a9-46d7-9e4d-9083d205dcc4
数据库表中的主键为:
d360aa18-3a7d-48f9-98f9-46dbcac361b1
如果去掉了写优化DSO的”不检测数据唯一性df419833-e3f6-4c37-b8dc-0b2c72012a0c的勾时,表示数据存入Active表中时会检查数据是否重复,此如果有语义上相同主键的数据时,抽数时抽取请求会报红,整个请求中包含的数据(包括重复与不重复的数据)都不能存入到Active表中;在勾上c5af6d97-280d-4e81-890a-09a779e2b3fc,表示不再会检测数据唯一性,此时即使Key Figure关键值字段规则设置成了合并,也并不会将新抽取上来的数据与相同业务主键的数据进行合并(注:即使同一抽取请求中有相同业务主键的记录也不会合并);
注:写优化DSO转换规则的Key Figure的Aggregation虽然可以设置覆盖或合计,但对写优化的DSO是不起任何作用的,不管合并方式设置成什么(MOV、MIN、MAX、SUM),业务键相同的数据也不会发生合并
 
写优化的DSO只用于只有新增、没有删除与修改的数据的数据源,即抽取的这类数据是不会发生变化的,只会新增(如:由于零售企业的销售明细数据量大并且需要日结,所以零售企业的销售小票明细数据只有增加,对这类的数据可以使用写优化的DSO来做)。并且从数据源中抽数到写优化的DSO所对应的Active表里时,数据不会发生合并计算操作,而是原样将数据源的数据拷贝到表里,所以数据写入的速度也会快点

 
  • 直接更新Direct Update DSO
d213b0d7-0dc9-4893-a28a-fa7fe65b7845
直接更新的DSO不能通过DTP抽数,因为此类型DSO无法创建DTP(也无法创建Transformation),所以该类DSO无法通过ETL来加载数据,只能通过其他Application将数据写到里面,如将某个Query报表查询出来的数据保存到该类DSO中。
直接更新的DSO也只有一张Active表,不过该表不是通过DTP上传数据,而是通过其它方式抽数(非DTP 的Request方式):
3723a1ce-f490-47d6-a8ba-dd478a8cf537
该类DSO所对应的数据库表的主键是由业务字段组成的主键,而不是技术字段(所以数据在写入时,业务主键相同数据也会发生合并计算,这与标准DSO是一样的)
下面演示将某个Query报表结果数据存储到此类型的DSO中
 
先创建一个Query用作直接更新DSO的数据源:
37b2ca64-5174-4d06-98b2-0e246d9c7922 046cc3b0-514e-483f-a0f8-73620dc66d1f
通过事务码:RSANWB将Query的数据存储到DSO中:
选择应用,这里会挂到General节点下
12f5f3fd-b3fb-4bbf-b986-e7b7e3306b94   3629f4d5-81f4-4445-97ec-ea01cd319b01
将数据源中的字段与DSO中的数据分配对应起来:
305864b1-8828-4f3a-a8ad-609ef66548c5  0d7db02c-aca2-45dd-b9dc-a79baf74b8e6 
做好后,再执行即可将Query运行出来的数据存储直接更新类型DSO中:
ef5daef3-a6da-4f2d-830d-7f0e5ff2a4a8
posted @ 2015-02-19 18:34  江正军  阅读(6499)  评论(1编辑  收藏  举报