首页 > 解决方案 > SCD方法更新维表中记录的过程是什么

问题描述

我想在维度表中以 scd 类型 2 形式查看历史记录,当市场营销区域的表中有更新被认为已更新为新值时。

我想在维度表中看到 scd type 2 形式的历史记录,当表中存在被认为更新为新值的营销区域的更新时。我们的主要目标是根据历史数据保存来更新记录方法。

在 SCD-2 中更新维度表(记录较少 - 几百个)的算法将是:

FOR ALL ROWs in the SOURCE table query LOOP 
IF ( a corresponding row exists in the DIM TABLE 
THEN 
IF data are different THEN 
1. UPDATE the ""CURRENT"" row of the DIM TABLE 
SET EFFECTIVE_TO = NOW 
ACTIVE_FLAG = 0 (ZERO) 
2. INSERT new version into DIM TABLE 
SET EFFECTIVE_TO = NOW+1 day ahead 
ACTIVE_FLAG = 1 (ONE)
END IF 
ELSE 
INSERT new row into DIM TABLE 
END IF

所以我希望存储新值以及将旧值设置为标志 0。

标签: pythonoracleplsql

解决方案


下面是检查条件和制作 SCD-2 的块。也让我知道你到底在找什么。

 BEGIN
      LOOP cusrsor    
       SELECT COUNT(1)
         INTO V_COUNT
         FROM DIM table_name
         WHERE <conditions here key columns and change fields here >

         IF V_COUNT = 1 THEN -- update flag and insert new record

         UPDATE stmt;
         INSERT stmt;
         ELSE -- New values to insert
         INSERT stmt;
         END IF;
   END LOOP;
    END;

推荐阅读