MERGE i Integration Services-paket

gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

I den aktuella versionen av služba SSIS kan SQL-instruktionen i en Execute SQL-uppgift innehålla en MERGE -instruktion. Med den här MERGE instruktionen kan du utföra flera INSERTåtgärder , UPDATEoch DELETE i en enda instruktion.

Följ dessa steg om du vill använda -instruktionen MERGE i ett paket:

  • Skapa en dataflödesaktivitet som läser in, transformerar och sparar källdata i en tillfällig tabell eller mellanlagringstabell.

  • Skapa en Execute SQL-uppgift som innehåller SQL-satsen MERGE.

  • Anslut Data Flow-aktiviteten till aktiviteten Execute SQL och använd data från mellanlagringstabellen som indata för MERGE-instruktionen.

    Anmärkning

    Även om en MERGE -instruktion vanligtvis kräver en mellanlagringstabell i det här scenariot, överskrider prestandan för -instruktionen MERGE vanligtvis den rad-för-rad-sökning som utförs av uppslagstransformeringen. MERGE är också användbart när den stora storleken på en uppslagstabell skulle testa det minne som är tillgängligt för uppslagstransformeringen för cachelagring av referenstabellen.

Att använda MERGE

Vanligtvis använder du -instruktionen MERGE när du vill tillämpa ändringar som inkluderar infogningar, uppdateringar och borttagningar från en tabell till en annan tabell. Före SQL Server 2008 (10.0.x) krävde den här processen både en uppslagstransformering och flera OLE DB-kommandotransformeringar. Uppslagstransformeringen utförde en rad-för-rad-sökning för att avgöra om varje rad var ny eller ändrad. OLE DB-kommandotransformeringar utförde sedan de nödvändiga INSERTåtgärderna , UPDATEoch DELETE . Från och med SQL Server 2008 (10.0.x) kan en enda MERGE instruktion ersätta både uppslagstransformeringen och motsvarande OLE DB-kommandotransformeringar.

MERGE med inkrementella belastningar

Funktionen för ändringsdatainsamling som är ny i SQL Server 2008 (10.0.x) gör det enklare att utföra inkrementella belastningar på ett tillförlitligt sätt till ett informationslager. Som ett alternativ till att använda parameteriserade OLE DB-kommandotransformationer för att utföra infogningarna och uppdateringarna kan du använda -instruktionen MERGE för att kombinera båda åtgärderna.

Mer information finns i Tillämpa ändringarna på målet.

MERGE i andra scenarier

I följande scenarier kan du använda -instruktionen MERGE antingen utanför eller inuti ett Integration Services-paket. Ett Integration Services-paket krävs dock ofta för att läsa in dessa data från flera heterogena källor och sedan kombinera och rensa data. Därför kan du överväga att använda satsen MERGE i ett paket för enkelhetens skull och för att underlätta underhåll.

Spåra köpvanor

Tabellen FactBuyingHabits i informationslagret spårar det sista datum då en kund köpte en viss produkt. Tabellen består av kolumnerna ProductID, CustomerID och PurchaseDate. Varje vecka genererar transaktionsdatabasen en PurchaseRecords-tabell som innehåller de inköp som gjorts under den veckan. Målet är att använda en enda MERGE instruktion för att sammanfoga informationen i tabellen PurchaseRecords till tabellen FactBuyingHabits. För produkt-kund-par som inte finns infogar instruktionen MERGE nya rader. För produkt-kund-par som redan finns uppdaterar satsen MERGE det senast registrerade inköpsdatumet.

Spåra prishistorik

DimBook-tabellen representerar listan över böcker i inventeringen av en bokförsäljare och identifierar prishistoriken för varje bok. Den här tabellen innehåller följande kolumner: ISBN, ProductID, Price, Shelf och IsCurrent. Den här tabellen har också en rad för varje pris som boken har haft. En av dessa rader innehåller det aktuella priset. För att ange vilken rad som innehåller det aktuella priset anges värdet för kolumnen IsCurrent för den raden till 1.

Varje vecka genererar databasen en WeeklyChanges-tabell som innehåller prisändringar för veckan och nya böcker som har lagts till under veckan. Genom att använda en enda MERGE instruktion kan du tillämpa ändringarna i tabellen WeeklyChanges på DimBook-tabellen. Instruktionen MERGE infogar nya rader för nyligen tillagda böcker och uppdaterar kolumnen IsCurrent till 0 för rader med befintliga böcker vars priser har ändrats. Instruktionen MERGE infogar också nya rader för böcker vars priser har ändrats och för dessa nya rader anger värdet för kolumnen IsCurrent till 1.

Sammanfoga en tabell med nya data mot den gamla tabellen

Databasen modellerar egenskaperna för ett objekt med hjälp av ett "öppet schema", dvs. en tabell innehåller namn/värde-par för varje egenskap. Tabellen Egenskaper har tre kolumner: EntityID, PropertyID och Value. En NewProperties-tabell som är en nyare version av tabellen måste synkroniseras med tabellen Egenskaper. Om du vill synkronisera dessa två tabeller kan du använda en enda MERGE instruktion för att utföra följande åtgärder:

  • Ta bort egenskaper från tabellen Egenskaper om de saknas i tabellen NewProperties.

  • Uppdatera värden för egenskaper som finns i tabellen Egenskaper med nya värden i tabellen NewProperties.

  • Infoga nya egenskaper för egenskaper som finns i tabellen NewProperties men som inte finns i tabellen Egenskaper.

Den här metoden är användbar i scenarier som liknar replikeringsscenarier, där målet är att hålla data i två tabeller på två servrar synkroniserade.

Spåra lager

Inventeringsdatabasen har en ProductsInventory-tabell med kolumnerna ProductID och StockOnHand. En försändelsetabell med kolumnerna ProductID, CustomerID och Quantity spårar leveranser av produkter till kunder. Tabellen ProductInventory måste uppdateras dagligen baserat på information i tabellen Försändelser. En enda MERGE instruktion kan minska lagret i tabellen ProductInventory baserat på de leveranser som görs. Om lagret för en produkt har minskats till 0 kan den MERGE instruktionen även ta bort produktraden från tabellen ProductInventory.