2015-07-14 4 views
-1
INSERT INTO Warehouse.dbo.factOrder 
(OrderDate, CustomerID, ProductID, OrderAmount) 
SELECT o.Date, c.CustomerID, p.ProductID, ISNULL(Amount,0) 
FROM Production.dbo.Orders o 
INNER JOIN Warehouse.dbo.dimCustomer c 
ON o.CustCode = c.CustomerCode 
INNER JOIN Warehouse.dbo.dimProduct p 
ON o.Code = p.ProductCode; 

Я хочу только перемещать Недавно добавленные или измененные строки из таблицы OLTP World в таблицу фактов. Как я могу это сделать, изменив код или схему, представленную выше?Как загрузить таблицу фактов поэтапно?

+3

Я не совсем уверен, что вы спрашиваете. –

+0

Благодарим вас за интерес. Непальский новичок отвечает на мой вопрос так, как я хочу. Я хочу сравнить строки в источнике (OLTP) и получателе (DWH), чтобы загружать только новые или измененные строки в таблицу фактов DWH. – Harry

ответ

0

Как правило, вы можете использовать поле даты, если он у вас имеется, чтобы отфильтровать записи, которые вы хотите сделать добавочную загрузку (также известный как дельта нагрузки) от:

INSERT INTO Warehouse.dbo.factOrder 
(OrderDate, CustomerID, ProductID, OrderAmount) 
SELECT o.Date, c.CustomerID, p.ProductID, ISNULL(Amount,0) 
FROM Production.dbo.Orders o 
INNER JOIN Warehouse.dbo.dimCustomer c 
ON o.CustCode = c.CustomerCode 
    and c.RecordCreatedDate > '2015-07-14' 
INNER JOIN Warehouse.dbo.dimProduct p 
ON o.Code = p.ProductCode 
    and p.RecordCreatedDate > '2015-07-14' 
WHERE o.RecordCreatedDate > '2015-07-14'; 
--change this to match your date column name and whatever date you would like to increment 
--(delta load) 
+0

Да, вы получили это правильно! Обычно в производственных средах у нас есть базы данных с несколькими миллионами строк. мы можем делать инкрементную загрузку, сравнивая те записи, которые были изменены или добавлены с теми, которые были загружены в таблицы фактов. Спасибо за предложения в коде и данных. – Harry

+0

@ Харри Это замечательно! Я решил, что у вас будет какое-то поле, чтобы сузить базовые таблицы. Я рад, что это помогло вам, пожалуйста, не стесняйтесь отмечать его как принятый ответ в удобное для вас время. : o) – FutbolFan

+0

Спасибо Очень. Но у меня есть еще один вопрос: что, если я хочу более точно отслеживать изменения? Например, использование столбца временной метки или контрольной суммы. Во-вторых, разве мы не должны отслеживать изменения в таблице фактов? если возможно, то как – Harry

Смежные вопросы