首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据oracle输入数据对雪花表执行SCD2

根据oracle输入数据对雪花表执行SCD2
EN

Stack Overflow用户
提问于 2019-10-25 07:25:33
回答 5查看 150关注 0票数 1

目前我正在从oracle采购数据

作为初始加载的一部分,使用named stage和copy into命令将oracle表oracle_a中的所有历史数据摄取到雪花表"snow_a“中。

我想在基于oracle_a表的snow_a表上执行SCD2。

我的意思是,如果向Oracle_a表中添加了任何新记录,那么将插入该记录并对oracle_a表的现有记录进行任何更改,

要过期的snow_a表的现有记录并插入该记录。更多细节见下图。

oracle_a表有key_col1、key_col2、key_col3三个键列,如下图所示。attr1和attr2是表enter image description here的其他属性

EN

回答 5

Stack Overflow用户

发布于 2019-10-29 00:13:44

在Snowflake中的表上实现SCD Type 2功能与在任何其他关系数据库中没有什么不同。但是,还有一些额外的功能可以帮助您完成此过程。请看看这篇关于使用Snowflake Streams和Tasks执行SCD逻辑的博客文章系列。https://www.snowflake.com/blog/building-a-type-2-slowly-changing-dimension-in-snowflake-using-streams-and-tasks-part-1/

干杯,迈克尔·雷尼

票数 2
EN

Stack Overflow用户

发布于 2019-10-26 01:52:15

好了,这就是我发现的--尽管你可能需要调整更新和插入的来源--因为oracle_a不在雪花中。

代码语言:javascript
复制
CREATE TABLE snowflake_a(key_col1 varchar(10), key_col2 varchar(10), key_col3 varchar(10), attr1 varchar(8), attr2 varchar(10), eff_ts TIMESTAMP, exp_ts TIMESTAMP, valid varchar(10)); 

DROP table oracle_a;
INSERT INTO snowflake_a VALUES('PT_1', 'DL_1', 'RPT_1', 'Address1', 'APT_1', current_date, current_date, 'Active');


CREATE TABLE oracle_a(key_col1 varchar(10), key_col2 varchar(10), key_col3 varchar(10), attr1 varchar(8), attr2 varchar(8), eff_ts TIMESTAMP, exp_ts TIMESTAMP); 

INSERT INTO oracle_a
VALUES( 'PT_1', 'DL_1', 'RPT_1', 'Address1', 'APT_1', '10/24/2019', '12/31/1999');


UPDATE snowflake_a
   SET valid = 'Expired'
WHERE valid LIKE '%Active%';

SELECT * FROM snowflake_a;

INSERT INTO snowflake_a VALUES( 'PT_1', 'DL_1', 'RPT_1', 'Address1', 'APT_1', '10/24/2019', '12/31/1999', 'Active');

SELECT * FROM snowflake_a;

或者更好的是,我们使用什么来从您的Oracle生态系统连接到Snowflake生态系统?

票数 1
EN

Stack Overflow用户

发布于 2019-10-28 23:30:15

从这个问题可以看出,传入的Oracle行似乎不包含任何SCD2类型的列,而且插入到snowflake中的每一行都是使用SCD2类型功能插入的。

SCD2列可以具有对业务的特定含义,例如'exp_ts‘可以是实际日期或业务日期。Snowflake 'Stage‘不包含SCD2功能。这通常是ETL框架的角色,而不是‘快速/批量’加载实用程序的角色。

大多数ETL供应商都将SCD2函数作为其产品的一部分。

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

https://stackoverflow.com/questions/58550367

复制
相关文章

相似问题

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