pentaho DI を使用して、データをファクト テーブルに挿入しています。Thing は、ファクト テーブルに 10000 のレコードが含まれており、頻繁に変更されるテーブルです。データベース ルックアップと挿入更新を使用して、ファクト テーブルを 1 回正しくロードすることができます。しかし、新しいレコードがソース テーブルに追加され (15000 になるとします)、再びレコードをファクト テーブルに挿入すると、これらの 15000 件のレコードが再びファクト テーブルに追加されます。私が望むのは、ファクト テーブルに存在しない新しい 5000 レコードを追加することです。これを達成するために実行する必要がある変換について教えてください。
2 に答える
挿入の代わりに upsertion を実行してみてください (行が存在する場合は update 、挿入されていない場合)
一部のDB機能を使用できます。
SQL Server 2008 には、このタイプの問題を解決するマージ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;