您好想要将数据导入到我的数据仓库并简化导入一些数据我想在表中创建一个新的列,将跟踪最新的值,因为我得到新的数据。定义具有变量根的记录的递归查询
我的表如下所示:
CREATE TABLE CustomerFact(
Id INT IDENTITY PRIMARY KEY
,CustomerId NVARCHAR(20) NOT NULL --Current Id of a Customer
);
--Track changes to CustomerId
CREATE TABLE CustomerHistoryFact(
Id INT IDENTITY PRIMARY KEY
,CurrentCustomerId NVARCHAR(20) --Most recent Customer Id
,CustomerId NVARCHAR(20) NOT NULL --Customer Id at time of record insert
,PrvsCustomerId NVARCHAR(20) NOT NULL --Customer Id at time of transaction
,PrvsCustomerIdEffectiveDate DATE NOT NULL --Date when PrvsCustomerId was effective
,PrvsCustomerIdObsoleteDate DATE NOT NULL --When the PrvsCustomerId was expired and replaced with a new Customer Id
);
的CustomerId
,PrvsCustomerId
,PrvsCustomerIdEffectiveDate
,并PrvsCustomerIdObsoleteDate
都是外在的。无论何时插入新记录,我都要分配一个CurrentCustomerId
。
这取决于插入新的CustomerHistoryFact
的时间,请检查PrvsCustomerId
以及所有其他记录的CurrentCustomerId
。如果有一个匹配,那么新记录的CustomerId
变的记录插入所有以前的记录,否则CurrentCustomerId
和CustomerId
成为CurrentCustomerId
。
要考虑的事情是我从现有的数据源导入'CustomerFact'和'CustomerHistoryFact'。他们将随着时间的推移提供其数据的增量更新,因此我需要将他们的更改导入到现有的数据集中。你的策略可能会起作用,我会研究它。 – Romoku
看看更新后的答案 – tranceporter
事情是,PrvsCustomerIdEffectiveDate和PrvsCustomerIdObsoleteDate可以合并到一列UpdatedDate中。这是因为一个CustomerHistoryFact记录的updatedDate成为过去记录的过时日期。 – tranceporter