INFOCUBE和DSO数据处理

本文在测试的基础上阐述BW中的数据流程:

1.      DataSource中的数据到InfoCube

2.      DataSource中的数据到DSO

3.      DSO中的数据到InfoCube;

4.      InfoCube Compress

 

测试场景:

      本文以一个简化的销售订单作为测试例子。

测试步骤:

1.      数据从DataSource直接加载到InfoCube,加载主键相同记录多次,测试其加载到InfoCube后在数据仓库中的记录及报表效果,其中做InfoCube Compress

2.      数据从DataSource先加载到DSO,加载同一主键记录多次,查看DSO中数据包括new dataactive data

3.      数据从DSOInfoCube,先后加载同一主键记录多次,查看InfoCube中的记录变化。

下面是用到的主要BW对象介绍

DataSourceflat file作为外部数据源,包含如下字段:

 

DSO定义与DataSource对应,内容如下:

 

InfoCube定义同样与DataSource对应,内容如下:

 

测试过程及结果:

1.      InfoCube中数据压缩:

InfoCube中内容显示:

InfoCube Content:

 

 

Fact table:

 

InfoCube中前二条记录可从Fact table中找到,另有一条在Fact table中找不到,是因为之前做过一次压缩。

再次对InfoCube做压缩:

查看InfoCube Content:

 

 

因为主键相同,三条记录已压缩为一条

查看Fact table,发现已没有记录

删除InfoCube中数据,然后查看infocube,发现infoCube contentfact table中均无数据

结论:

A.InfoCube中允许存在重复维度记录,只要这些记录数据包不同

B.InfoCube中记录压缩后系统会将维度相同记录合并,key figure相加.同时删除Fact table中容。(实际是从table /BIC/F<infocube>中到/BIC/E<infocube>)

C.压缩后的数据在整个info记录删除时也同时被删除.

 

2.      DataSource中数据导入InfoCube

上载一条记录到DataSource:

 

加载数据到InfoCube,查看fact table

 

修改一下CSV文件,再次上载一条记录到DataSource:

 

又一次从DataSource加载数据到InfoCube,查看fact table:

 

新增数据在事实表中新增,虽然维度相同,但在事实表中并不会合并

查看报表:

 

 

因为维度相同,在报表中记录是合并的。

infocube压缩

查看infocube content

 

 

结论:

1.      数据从DataSource中直接加载到InfoCube,只要请求号不同,维度相同时,记录仍能加载到infocube,且在fact table中不会合并;

2.      full load DataSource中数据到InfoCube中时,前次已加载过请求不会重新加载;

3.      从报表中查看时,对相同维度记录已做汇总。

 

 

3.      DataSource中数据导入DSO,然后从DSOInfoCube

加载DataSource数据到DSO

查看active data,没有数据

查看new data,数据如下

 

只有最后一个请求中的数据进入到DSO,但加载记录显示加载了二条数据

 

原因:因为这二条记录主键相同,后一条记录覆盖了前一条记录

激活DSO中的数据,加载数据到InfoCube

 

 

从中可以看出,因数据已从DataSource中加载过,不再继续从DSO中向InfoCube中加载,可查看InfoCube验证

 

从图中发现请求号3359没有进入infocube.

修改DataSourcecsv文件,先将数量加大一点.然后加载数据到DataSource

 

 

DataSource中加载数据到DSO

查看DSO,先查看new data

 

 

再查看active data

 

记录未激活前保存在new data,active data中数据保存不变

激活DSO

查看active data发现Active data中记录因主键相同,已被新记录覆盖,

 

加载DSO数据到InfoCube,加载前fact table中没有数据

 

加载后检查info cube fact table

 

查看infodube content,

 

查看query

 

从中可知,DSO数据进入InfoCube

 

再次修改DataSource数据源,这次将csv中数据变小

加载数据到DataSource

 

DataSource中加载数据到DSO

查看DSO new data

 

激活DSO,查看active data

 

因主键相同,active datanew data覆盖

 

加载DSO数据到InfoCube

 

查看InfoCube fact table

 

Fact table中记录有二条,一条为原记录,一条为相对于原记录的修改记录(从DSO change log中来)

查看infoCube content,内容如下

 

 

query查看infocube

 

结论:

  1. 若数据已从DataSource中向InfoCube中加载过,再次将数据先加载到DSO,然后通过DSOInfoCube中加载时,记录不会从DSO中向InfoCube中加裁;
  2. DSO中数据与DataSourceInfoCube不同,加载后需激活数据才会发生变化;
  3. DSOInfoCube不同,从DataSourceDSO时,若数据主键相同,会发现覆盖;而从DataSourceInfoCube时,若维度相同,数据仍正常加载;
  4. DSO中加载数据到InfoCube中时,若已加载过同样主键数据,会根据其变化在infoCube中加载其变化数据,实质是从change log中加载;
  5. InfoCube中数据压缩后,上述第四条不对压缩数据生效。

 request id中删除InfoCube中数据

 

结论:

    若请求被聚集、压缩则不能删除

 

 

你可能感兴趣的:(测试,table,query,数据仓库,csv,报表)