如何解决使用 SQL 创建 SCD 类型 2
我正在尝试在 sql Server 中为数据仓库创建 SCD 类型 2 表。 我正在使用 MERGE 语句,我的问题是“匹配时”部分。 例如:我有一个客户从迈阿密搬到纽约。我想保存历史版本并为该客户插入新记录。 问题是这不起作用。
请注意,“当不匹配时”部分运行良好,并且插入了新客户。 有没有其他人遇到过这个问题? 谢谢!
这是我写的代码:
insert FandangoDW.dbo.DIM_CUSTOMERS
select Customer,CustomerName,Gender,BirthDate,Age,AgeGroup,CustomerCity,CustomerState,CustomerCountry,ValidFrom,ValidUntil
from (merge FandangoDW.dbo.DIM_CUSTOMERS as dim using (select * from FandangoSTG.dbo.STG_CUSTOMERS) as stg
on dim.Customer = stg.Customer
WHEN NOT MATCHED by target
THEN
INSERT
(
Customer,ValidUntil
)
VALUES
( stg.Customer,stg.CustomerName,stg.Gender,stg.BirthDate,stg.Age,stg.AgeGroup,stg.CustomerCity,stg.CustomerState,stg.CustomerCountry,GETDATE() - 1,null
)
WHEN MATCHED AND dim.ValidUntil = null AND stg.CustomerCity <> dim.CustomerCity
THEN
UPDATE SET
dim.ValidUntil = GETDATE() - 2,dim.CustomerCity = stg.CustomerCity,dim.CustomerState=stg.CustomerState,dim.CustomerCountry=stg.CustomerCountry
OUTPUT
$Action,stg.Customer,null
)as merge_out
(
Action,Customer,ValidUntil
)
WHERE Action = 'UPDATE';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。