标签:
用log表记录业务库某表yw_tableA发生变化数据的主键。数据进入BI库目标表bi_tableA前,先根据log表记录的主键进行delete。
CREATE TABLE LOG ( key_1 VARCHAR(20), --主键1 key_2 VARCHAR(20), --主键2 tName VARCHAR(20), --来源表 updateDate DATE, --更新日期 loadDate DATE --加载日期 );
图1 业务数据进入日志和临时表
图2 目标表初始化以及临时表数据进入目标
--目标表初始化 delete from bi_tableA tg where exists (select 1 from tmp_bi_tableA tmp where tg.key1 = tmp.key1)
业务库某表yw_tableA左关联BI库bi_tableA,可以关联上的舍弃;关联不上的进入目标表bi_tableA,然后对同一个业务主键多条进行处理(打上标记或delete)。比较适合小维表更新。
create tabel bi_tableA ( physical_key int identity, --物理键,自增 logical_key varchar(20), --业务键 col1 varchar(20), --其他列 nowstate char(1), --状态 loadDate DATE --加载日期 )
图3 关联设计
--目标表状态更新(同一业务键记录保留最新) update bi_tableA set nowstate=‘0‘ where physical_key not in (select max(physical_key) from bi_tableA group by logical_key having count(physical_key) > 1 and nowstate=‘1‘ )
标签:
原文地址:http://www.cnblogs.com/BlueBreeze/p/4244662.html