我使用pentaho DI将数据插入事实表。事情是我填充我的事实表的表包含10000个记录并经常更改。使用数据库查找和插入更新,我能够正确加载我的事实表一次。但是当新的记录被添加到我的源表(比如它变成15000)并且我再次将记录插入事实表时,这些15000个记录再次被添加到我的事实表中。我想要的是添加事实表中不存在的新5000条记录。请告诉我需要执行哪些转换才能实现此目的。
答案 0 :(得分:2)
尝试进行upsertion而不是插入(如果该行存在则更新,如果不插入)
答案 1 :(得分:0)
您可以使用某些数据库功能。
在SQL Server 2008中,有一个 merge sql可以解决此类问题。
SQL Server 2008中的示例如下:
MERGE Production.UnitMeasure AS target
USING (SELECT @UnitMeasureCode, @Name) AS source (UnitMeasureCode, Name)
ON (target.UnitMeasureCode = source.UnitMeasureCode)
WHEN MATCHED THEN
UPDATE SET Name = source.Name
WHEN NOT MATCHED THEN
INSERT (UnitMeasureCode, Name)
VALUES (source.UnitMeasureCode, source.Name)
OUTPUT deleted., $action, inserted. INTO #MyTempTable;