3.3 DXC简介——HANA数据抽取和同步
DXC是SAP HANA DirectExtractor Connection的缩写,它是SAP HANA从SAP Business Suite中获取数据的一种简单方法。SAPHANA Direct Extractor Connection基于SAP Business Suite,它利用SAP BusinessContent DataSource从SAP Business Suite抽取数据到SAP HANA。
SAP Business Suite基于SAP NetWeaver平台,它已经包含了SAP Business Warehouse(BW)。通常这个嵌入在SAP Business Suite 内的BW系统并不会被使用,因为大多数客户会将BW单独安装在另外一台服务器上。DXC就是利用这个未被使用的BW进行数据抽取和监控将数据发送到SAP HANA,但不使用BW的报表和数据仓库功能。DXC利用HTTP连接将数据从SAP Business Suite传输到HANA。数据抽取和加载的过程与通常的BW一致,利用BW常用的InfoPackage和ProcessChain等工具加载和监控数据。特别指出DXC并不是BW on HANA,DXC并不是将数据加载到SAP Business Suite内未使用的BW,而是把数据重定向到SAP HANA。
SAP Business Suite内的业务数据散落在系统内的各个表,表内的数据一般都是表达单一内容,比如保存财务数据的表只会有财务相关的内容。如果希望从销售口径去查看财务数据则需要将财务相关表与销售相关表进行关联。直接利用SLT或者DataService把表数据传输到SAP HANA后,我们还要面临大量的数据建模工作,利用DXC可以极大的改观上述问题。SAP 提供的Business Content 数据源已经包含了复杂的业务逻辑并且对于已经实施了SAP Business Warehouse 的客户通常已经在ERP系统内对数据源按照自己的业务需求进行增强,这些现成的数据逻辑可以直接被DXC所利用。通过DXC数据抽取到SAP HANA后,会大大的减少数据建模的复杂度,同时也会大大缩短SAP HANA 的项目周期。
DXC提供了非常简单直接的接口复用SAP ERP内的提取器,利用HTTP连接直接将数据从SAP ERP抽取到HANA。DXC的安装很简单只需要安装指定的SAP note(通过事务代码SNOTE)和简单的配置既可以使用,对于服务器版本的要求也比较宽松,基于NetWeaver 7.0或以上版本的SAP Business Suite都可用。
DXC使用SAP HANA内部的ICM(InternetConnectivity Manager)通过HTTP连接接收XML包并通过HANA XS Engine将接收到的XML数据包转换格式,然后写入到In-MemoryDataStore Object (IMDSO)的activation queue。
在SAP ERP 和SAP HANA系统内分别完成DXC的配置和安装后,进入SAP ERP内嵌入的BW运行RSA1进行“Replicate DataSources”并激活数据源,这时会在HANA系统内创建相应的In-Memory DataStore Object(IMDSO),这个IMDSO的结构会与数据源相一致。
In-MemoryDataStore Object(IMDSO)创建后可以打开SAP HANA Studio,找到与DXC对应的Schema,打开Tables文件夹会看到如下命名方式的表:
q /BIC/A<DATASOURCENAME>00:这个表是active表它存储了加载到IMDSO的数据。SAP HANA数据建模就是基于这张表,它可以被用来搭建attribute view、analytic view、calculation view。
q /BIC/A<DATASOURCENAME>40:这张是activation queue表。当DXC抽取作业将增量数据抽取到HANA时,首先进入activation queue表,然后激活activation queue表。根据不同的增量类型以及增量数据的加载顺序SAP HANA会在active表内生成相应的数据。
q /BIC/A<DATASOURCENAME>70,/BIC/A<DATASOURCENAME>80, /BIC/A<DATASOURCENAME>AO等:这些是控制激活过程的表。
这里需要指出的是在DXC方案中,当运行嵌入的BW的 infopackage时,数据并不是加载到PSA而是重定向到HANA,它会加载到HANA内的in-memory DSO的 activationqueue,之后激活数据到active表。
虽然DXC可以利用SAP Business Content DataSource并且处理多种增量方式,但是一些数据源还是有限制。SAP HANA并没有提供一种机制来处理类似于BW的“non-cumulativekey figures”,所以对于库存相关的数据源HANA并不能很好的支持,比如2LIS_03_BF(Material Movements)。
目前DXC不支持使用下列数据源(详情参见SAP Note 1710236)。
0CFM_INIT_POSITIONS |
0CML_INIT_BUDAT |
0CML_INIT_DDISPO |
0CML_INIT_DFAELL |
0RE_1 |
0RE_3 |
0SCM_LIM_1 |
2LIS_02_SRV |
2LIS_03_BX |
2LIS_03_S197 |
2LIS_03_S198 |
2LIS_40_S278 |
2LIS_03_BF |
0BV_BEV1_EM_CUSTSTO_BW_GET_TD |
0RE_2 |
0RE_3 |
0RF_REASLOC_ATTR |
0SCM_LIM_1 |
0SCM_LIM_2 |
在使用DXC时还需要考虑的一点就是只支持全量抽取的数据源。由DXC生成的IMDSO它是不包含数据修改日志的,所以IMDSO自己不能产生增量数据。尽管DXC可以支持全量抽取的数据源但是这也可能意味着大数据量的长时间传输,而且如果有数据被删除,删除的数据也不会传输到HANA。
另外的限制就是数据源必须有定义唯一的语义key才能被DXC所使用,因为SAP HANA的IMDSO需要主键。如果激活DXC的数据源没有key,那么系统会报错。这时需要参考SAPNote 1677278和1701750给数据源加上key。
下图是DXC的实现过程的简述。