BIAPPS开发
BIAPPS开发概要
1. ? ? ? ? 搭建数据仓库
2. ? ? ? ? 数据抽取(ETL) 3. ? ? ? ? 搭建数据模型 4. ? ? ? ? 搭建报表系统 数据仓库
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映
历史
变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
详见百度百科。
数据集市
? ? 数据集市(Data Mart) ,也叫数据市场,是一个从操作的数据和其他的为某个特殊的专业人员团体服务的数据源中收集数据的仓库。从范围上来说,数据是从企业范围的数据库、数据仓库,或者是更加专业的数据仓库中抽取出来的。
在常见开发中体现为在数据仓库表的一些聚合。
CREATE BITMAP INDEX
SSE_ROLE(角色创建)
--创建Role,并分配权限 create role SSE_ROLE; grant connect,resource to SSE_ROLE; ETL在biapps的ETL过程中,有使用到Stage层,其实Stage层就是一些临时表内容,用于临时存储一些需要处理的数据。 因为时间维的数据不会随着时间的推移而发生变化,这里就再为时间维创建Stage临时表了。 Target load type:Normal和bulk有什么区别? bulk适合大量数据的插入,此方式将绕过数据库的 log记录,以此来提高数据库Load性能,因此Bulk方式也就不可能进行Rollback操作,也不可能使用数据库作Recover操作。Bulk方式主要是进行大数据量Insert的操作时选用,换句话说就是不做Update,所以有时候需要选择normal http://www.educity.cn/develop/693815.html WID 一般是将其他表的主键(这个主键一般也是ROW_WID其本质是sequence)设置为_WID自己这张表则使用sequence作为ROW_WID,在SIL层进行WID的转换(维表也可能在SDE转换)事实表的维表代理键使用lookup组件进行关联写入(可见下图事实表)SDE和DIL实际上是在同一个用户下 增量和全量
从EBS源抽取数据的SDE过程的增量(
这个增量过程的过滤条件可以在工作流的映射SQ中的Source Filter中写代码或者在
Sql Query中写代码实际上是在Source Qualifier)全量是用 CUX_OM_CN_DOWN_USE_HEADER_ALL.LAST_UPDATE_DATE?>=
?TO_DATE('
$$LAST_EXTRACT_DATE
',?'MM/DD/YYYY?HH24:MI:SS'),
区分即
时间戳方式
,变量在DAC中维护
具体增量和全量的运行体现在不同的会话,运行全量时可以将增量的过滤条件拿掉或者在sql query中去掉where条件或者就是truncate目标跑数按增量的方式跑数,所以一般都是使用增量的Mapping,无论增量还是全量SDE过程都会truncate表
SIL是从中间表到目标表的过程用
UPDATE_FLAG标识在目标表里面数据是否存在即
全表比对方式;有的时候SIL层的增量和全量是一样的,区分在于是否truncate,前提是要使用更新组件
全量则只需在新的会话中放开这些过滤条件即可。
----------------------------------------------------------------------------------------
LAST_UPDATE_DATE->CHANGED_ON_DT为主表更新日期(SDE)
AUX
X
_CHANGED_ON_DT用于捕捉各个源表的LAST_UPDATE_DATE(SDE)
update_flag字段(SIL)
The update flag is evaluated using logic,the English description of which is as follows:
Basic Checks:
If the current ETL Process Identifier is same as target record's ETL Process Identifier,then it is already loaded and hence no processing required (result X for Reject) - STOP.
If stage reject flag = Y,then no processing (result X for Reject) - STOP.
Checks for new records (where target's ETL Process Identifier is NULL) :
If stage delete flag = Y,then insert record and mark it for soft-delete (result B for insert with soft-delete) - STOP.
If stage delete flag <> Y,insert into target (result I for Insert) - STOP.
Checks for existing record
IIF(LKP_ETL_PROC_WID = ETL_PROC_WID,'X',
IIF(REJECT_FLG = 'Y',
IIF(ISNULL(LKP_ETL_PROC_WID),
IIF(DELETE_FLG = 'Y','B','I'),
IIF(INSERT_ONLY_FLG = 'Y',
IIF(LKP_DELETE_FLG = 'Y','D'),
IIF(SYSTEMS_COLS_DIFF = 'Y','U','X'))))))
SYSTEMS_COLS_DIFF
IIF(DECODE(CHANGED_ON_DT,NULL,SESSSTARTTIME,CHANGED_ON_DT) !=
DECODE(LKP_CHANGED_ON_DT,LKP_CHANGED_ON_DT),'Y',
IIF(DECODE(AUX1_CHANGED_ON_DT,AUX1_CHANGED_ON_DT) !=
DECODE(LKP_AUX1_CHANGED_ON_DT,LKP_AUX1_CHANGED_ON_DT),
IIF(DECODE(AUX2_CHANGED_ON_DT,AUX2_CHANGED_ON_DT) !=
DECODE(LKP_AUX2_CHANGED_ON_DT,LKP_AUX2_CHANGED_ON_DT),
IIF(DECODE(AUX3_CHANGED_ON_DT,AUX3_CHANGED_ON_DT) !=
DECODE(LKP_AUX3_CHANGED_ON_DT,LKP_AUX3_CHANGED_ON_DT),
IIF(DECODE(AUX4_CHANGED_ON_DT,AUX4_CHANGED_ON_DT) !=
DECODE(LKP_AUX4_CHANGED_ON_DT,LKP_AUX4_CHANGED_ON_DT),'N'
)))))
-------------------------------------------------------------------------
W_INSERT_DT(SIL)
IIF(UPDATE_FLG = 'I' OR UPDATE_FLG = 'B',LKP_W_INSERT_DT)
W_UPDATE_DT(SIL)
SESSSTARTTIME
-------------------------------------------------------------------------
update组件(SIL)
IIF(UPDATE_FLG = 'I' OR UPDATE_FLG = 'B',DD_INSERT,
IIF(UPDATE_FLG = 'D' OR UPDATE_FLG = 'U',DD_UPDATE,DD_REJECT))
delete_flg
SDE
DELETE_FLG='N'
SIL
IIF(UPDATE_FLG = 'D' OR UPDATE_FLG = 'B','N')
软删除
SDE_ORA_XXX_Primary
Extracts the XXX related information from oracle apps into the staging area tables
Source:EBS 源主表(主键) Target:
XXX_PE
SIL_XXX_IdentifyDelete
This mapping identifies deleted records in source ?by doing brute force comparison between primary extract table XXX_PE and target table and load it into a staging table XXX_DEL. It works only on source data that is not archived and not deleted from warehouse target.
Sessions of this mapping will not be used in normal load workflows. It will be a separate process that?
will be executed based on user requirements.
SIL_XXX_SoftDelete
This mapping updates the delete flag with a value 'Y' on the ?target table XXX for all the records that were ?identified as 'deleted',driving from the staging area table XXX_DEL.
AUX1_CHANGED_ON_DT
AUX2_CHANGED_ON_DT
AUX3_CHANGED_ON_DT
来自各个源表的last_update_date
-----------------------------------------------------------------------------------
练习SIL层增量全量还有问题? OK,可参考虚拟机的demo,主要是组件的使用和增量操作,组件包括LKP组件、EXP组件、UPD组件和FLT组件的使用; 增量操作则是在SDE比较好实现即通过时间戳的方式,在SIL则通过和目标表的数据比对; 全量操作在SDE则去掉时间戳勾选truncate,在SIL则勾选truncate即可; 整个过程可以用下图来理解: 数据抽取方式? 从数据库中抽取数据一般有以下几种方式:? 1)??????????全量抽取? 全量抽取类似于数据迁移或数据复制,它将数据源中的表或视图的数据原封不动的从数? 据库中抽取出来,并转换成自己的ETL?工具可以识别的格式。全量抽取比较简单。? 2)??????????增量抽取? 增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据。在ETL?使用过程中,增量抽取较全量抽取应用更广。如何捕获变化的数据是增量抽取的关键。对捕获方法一般有两点要求:准确性,能够将业务系统中的变化数据按一定的频率准确地捕获到;性能,不能对业务系统造成太大的压力,影响现有业务。目前增量数据抽取中常用的捕获变化数据的方法有:?
搭建数据模型略新建报表
略
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |