仓库集市层数据测试环境某一日重跑方案

在进行数据仓库项目维护的过程中,有时候下游系统会要求仓库重新提供集市层某一日数据的情况。为了简便、可行,经常采用将ODS源表从生产环境上导到测试环境中,然后在仓库的测试环境中,跑出下游系统所需要的某一日的集市层数据。

对于这一方案,我们在各个环境有如下几点需要注意:

从生产环境的源取ODS数据根据数据加载情况的不同,会有如下要求:

1ODS增量供数的源数据:导出生产环境日期小于等于需要供数日期的全部增量数据(导到测试环境后,需要根据源表主键构造全量);

2ODS全量供数的源数据:导出生产环境日期等于需要供数日期的当日全量数据。

如何根据集市层的一张表,找出所需要的ODS源表支持:

1、根据集市层目标表找出ODS层源表

 select distinct a.referenced_name from dba_dependencies a where a.owner = 'EDW' and a.referenced_owner = 'EDW' and referenced_type = 'TABLE' and name in (select distinct replace(a.referenced_name, 'EDW_', 'P_') from dba_dependencies a where a.owner = 'EDW' and a.referenced_owner = 'EDW' and referenced_type = 'TABLE' and name = 'P_SUB_' || '&SUB层目标表名称' and a.referenced_name <> 'SUB_ETL_LOG_DETAIL') and a.referenced_name <> 'EDW_ETL_LOG_DETAIL' and a.referenced_name not like 'EDW_MAP%' and a.referenced_name not like 'EDW_T99%' and a.referenced_name not like 'TMP_%' and a.referenced_name not in (select distinct a.referenced_name from dba_dependencies a where a.owner = 'EDW' and a.referenced_owner = 'EDW' and referenced_type = 'TABLE' and name = 'P_SUB_' || '&SUB层目标表名称' and a.referenced_name <> 'SUB_ETL_LOG_DETAIL');

2、根据EDW层目标表,找出ODS层源表

 select distinct a.referenced_name from dba_dependencies a where a.owner = 'EDW' and a.referenced_owner = 'EDW' and referenced_type = 'TABLE' and name = REPLACE('&EDW层目标表名称', 'EDW', 'P') and a.referenced_name <> 'EDW_ETL_LOG_DETAIL' and a.referenced_name <> '&EDW层目标表名称' and a.referenced_name not like 'EDW_MAP%' and a.referenced_name not like 'EDW_T99%' and a.referenced_name not like 'TMP_%';

同理,我们根据找出ODS源表的SQL语句,可整理出需要调度的EDW层、SUB层存储过程及其调度先后顺序及其依赖关系。

注意:此文是根据仓库实际项目中总结而来,根据实际情况,会有所不同。

你可能感兴趣的:(sql,测试,table,存储,数据仓库,dependencies)