按照SCD方法更新维度表中的记录的过程是什么

2024-09-28 22:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在维度表中查看scd type two form中的历史记录,因为表中有一个被认为要更新为新值的营销区域的更新。你知道吗

我想在维度表中看到scd type two form中的历史记录,因为表中有一个被认为是更新到新的市场区域的更新我们的价值观主要目标是根据历史数据保存方法更新记录。你知道吗

在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。你知道吗


Tags: theinform区域历史记录iftype记录
2条回答

下面是检查条件并制作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;

所以你有你的SCD2表,这是一种看它的方法:

从一个或多个源表中,您可以确定当天的记录(增量)/或完整图像记录…我将使用别名source

在SCD2中,您必须筛选加载当天的活动记录(筛选有效起始日期和有效终止日期之间的日期)。我将使用别名target。你知道吗

来源 减 目标 是更改的/新的记录,需要在目标中关闭并从源中重新打开/打开。你知道吗

  • 如果存在性能问题,您可能希望使用截断/插入机制创建2-3个具有相同结构的临时表:

    1.有记录要关闭的。你知道吗

    2.有新记录的人。你知道吗

    3.有修改记录的人。

  • 如果您有许多带有SCD2的表,那么您可能希望生成一个生成PL/SQL的包。。。随着时间的推移,表格结构会发生变化,会出现新的表格。

任何人都很难为您的表编写代码,我们不知道您的源表PKs、FKs(启用还是禁用?),列。你知道吗

相关问题 更多 >