当您执行从阶段表到事实和维度表的加载过程时,是否意味着您还相对于新行从阶段将代理键加载到维度表?
还是通过使用sql代码为表在维度表中创建新的代理键? (https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property?view=sql-server-2017)?
哪种方法正确?
其他信息:
*我是ETL和商业智能领域的新手
*我只使用T-SQL,没有使用SSIS。
谢谢!
答案 0 :(得分:0)
问题不是很清楚。病态的尝试会根据您的“想法”回答,但最好是让对数据不熟悉的人清楚地知道这个问题,并提供示例数据。
我想您是在问是否需要在将事实表加载到维度表的同时将条目加载到事实表中。
通常,在将数据加载到事实表之前,将维成员加载到维表中。如果可能的话,这样做更容易。 我将依次使用的步骤是:
下面的代码用人为的数据填充示例维和factStaging表,以显示如何获取代理键和要插入到事实表中的数据。
create table #factstaging
(
dimension1Value nvarchar(20),
factmeasure1 int,
factmeasure2 int
)
create table #dimension1
(
ID int identity(1,1),
dimension1Value nvarchar(20)
)
insert into #dimension1
values
('d1 value 1'),
('d1 value 2'),
('d1 value 3')
insert into #factstaging
values
('d1 value 1',22,44),
('d1 value 1',22,44),
('d1 value 2',22,44),
('d1 value 3',22,44)
--contents of stored procedure to insert fact rows
select d1.ID as Dimension1SurrogateKey, s.factmeasure1,s.factmeasure2
from #factStaging s
join #dimension1 d1 on s.dimension1Value = d1.dimension1Value
注意: