首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按照SCD方法在维度表中更新记录的过程是什么?

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

Stack Overflow用户
提问于 2019-02-01 14:09:53
回答 2查看 888关注 0票数 0

我希望看到在维度表中的scd类型2表单中的历史记录,当表中有被视为更新为新值的营销区域的更新时。

我希望在维度表中看到scd类型2形式的历史记录,当被认为要更新到新的value.our的营销区域的表中有更新时,主要目标是根据历史数据保存方法更新记录。

在SCD-2中更新维度表(没有记录-几百条)的算法如下:

代码语言:javascript
运行
复制
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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-01 16:20:18

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

代码语言:javascript
运行
复制
 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;
票数 0
EN

Stack Overflow用户

发布于 2019-03-05 13:42:13

因此,您有您的SCD2表,这是查看它的一种方法:

从一个/多个源表中确定当天(增量)/or完整图像记录的记录.我将使用别名

在您的SCD2中,您必须过滤加载当天活动的记录(在valid_from和valid_to之间筛选日期)。我将使用别名目标。

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

  • 如果存在性能问题,则可能需要使用截断/插入机制创建具有相同结构的2-3个暂存表: 1.记录有待关闭的记录。 2.有新记录的。 3.有修改记录的一份。
  • 如果您有许多带有SCD2的表,您可能想要生成一个生成PL/SQL的包.表结构随着时间的推移而变化,出现新的表。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54481196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档