python - 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。
解决方案
下面是检查条件和制作 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;
推荐阅读
- java - 使用 EasyWSDL 进行 WSDL 解析并在运行时出现 sexonica 错误
- mysql - 如何将图像上传到照片托管并在我的 laravel 项目中使用
- swagger - 如何记录同步和异步 API 的混合?我们使用 AsyncAPI 或 OpenAPI 还是两者兼而有之?
- c# - 我可以在 console.WriteLine 中设置未知数量的对象参数吗?
- amazon-web-services - 尝试运行 RTSP 示例应用程序 (AWS)
- sql - & 在 Oracle Column Name 中认为它是一个变量
- php - 即使条件为假,PHP IF 语句中的 SQL 语句也会执行
- java - 访问 Java admin SDK Firestore 实例的关闭选项
- python - 有没有办法在 POST 方法的主体中发送函数
- python - 如何在不更改 Python 中的原始列表变量的情况下修改列表?