MERGE az Integrációs Szolgáltatások Csomagokban

A következőkre vonatkozik:SQL Server SSIS integrációs futtatókörnyezet az Azure Data Factory-ban

Az SQL Server Integration Services jelenlegi kiadásában az SQL-feladat végrehajtásának SQL-utasítása TARTALMAZHAT MERGE utasítást. Ez a MERGE utasítás lehetővé teszi, hogy egyetlen utasításban több INSERT, UPDATE és DELETE műveletet hajthat végre.

A MERGE utasítás csomagban való használatához kövesse az alábbi lépéseket:

  • Hozzon létre egy adatfolyam-feladatot, amely betölti, átalakítja és menti a forrásadatokat egy ideiglenes vagy átmeneti táblába.

  • Hozzon létre egy VÉGREHAJTÁSI SQL-feladatot, amely tartalmazza a MERGE utasítást.

  • Csatlakoztassa az adatfolyam-feladatot az SQL-feladat végrehajtásához, és használja az előkészítési táblában lévő adatokat a MERGE utasítás bemeneteként.

    Megjegyzés:

    Bár a MERGE utasítás általában átmeneti táblát igényel ebben a forgatókönyvben, a MERGE utasítás teljesítménye általában meghaladja a keresési átalakítás által végrehajtott sorról sorra történő keresés teljesítményét. A MERGE akkor is hasznos, amikor egy keresési tábla nagy mérete kihívást jelent a keresési átalakítás rendelkezésére álló memória számára a referenciatábla gyorsítótárazása során.

A MERGE használata

A MERGE utasítást általában akkor használja, ha olyan módosításokat szeretne alkalmazni, amelyek beszúrásokat, frissítéseket és törléseket tartalmaznak az egyik táblából egy másik táblába. Az SQL Server 2008 (10.0.x) előtt ez a folyamat mind keresési, mind több OLE DB-parancsátalakítást igényelt. A Keresési átalakítás sorról sorra végzett kereséssel meghatározta, hogy az egyes sorok újak vagy megváltoztak-e. Az OLE DB-parancs transzformációi ezután végrehajtották a szükséges INSERT, UPDATE és DELETE műveleteket. Az SQL Server 2008 -tól kezdve (10.0.x) egyetlen MERGE utasítás helyettesítheti a Keresési és a megfelelő OLE DB-parancsátalakításokat.

EGYESÍTÉS növekményes terhelésekkel

Az SQL Server 2008 (10.0.x) új adatrögzítési funkciója megkönnyíti a növekményes terhelések megbízható végrehajtását az adattárházban. A paraméteres OLE DB-parancsátalakítások helyett a beszúrások és a frissítések végrehajtásához használhatja a MERGE utasítást mindkét művelet kombinálásához.

További információ: Módosítások alkalmazása a célhelyre.

MERGE más forgatókönyvekben

Az alábbi forgatókönyvekben a MERGE utasítást egy Integration Services-csomagon kívül vagy belül is használhatja. Az Integration Services-csomag azonban gyakran szükséges ahhoz, hogy ezeket az adatokat több heterogén forrásból töltse be, majd egyesítse és megtisztítsa az adatokat. Ezért érdemes lehet a MERGE utasítást egy csomagban használni a kényelem és a könnyű karbantartás érdekében.

Vásárlási szokások nyomon követése

Az adattárházban található FactBuyingHabits tábla nyomon követi, hogy az ügyfél mikor vásárolt utoljára egy adott terméket. A tábla ProductID, CustomerID és PurchaseDate oszlopból áll. A tranzakciós adatbázis minden héten létrehoz egy PurchaseRecords táblát, amely tartalmazza az adott héten végrehajtott vásárlásokat. A cél egyetlen MERGE utasítás használata a PurchaseRecords tábla adatainak a FactBuyingHabits táblába való egyesítéséhez. A nem létező termék-ügyfél párok esetében a MERGE utasítás új sorokat szúr be. A meglévő termék-ügyfél párok esetében a MERGE utasítás frissíti a legutóbbi vásárlás dátumát.

Árelőzmények nyomon követése

A DimBook tábla a könyvárusok leltárában szereplő könyvek listáját jelöli, és azonosítja az egyes könyvek árelőzményeit. Ez a táblázat a következő oszlopokat tartalmazza: ISBN, ProductID, Price, Shelf és IsCurrent. Ez a táblázat egy sort is tartalmaz minden egyes árhoz, amelyet a könyv tartalmaz. Az egyik sor az aktuális árat tartalmazza. Annak jelzéséhez, hogy melyik sor tartalmazza az aktuális árat, az adott sor IsCurrent oszlopának értéke 1.

Az adatbázis minden héten létrehoz egy WeeklyChanges táblát, amely tartalmazza a hét árváltozásait és a hét során hozzáadott új könyveket. Egyetlen MERGE utasítással alkalmazhatja a WeeklyChanges tábla módosításait a DimBook táblára. A MERGE utasítás új sorokat szúr be az újonnan hozzáadott könyvekhez, és az IsCurrent oszlopot 0-ra frissíti azon meglévő könyvek sorai esetében, amelyek árai megváltoztak. A MERGE utasítás új sorokat is beszúr azokhoz a könyvekhez, amelyek árai megváltoztak, és az új sorok esetében az IsCurrent oszlop értékét 1 értékre állítja.

Tábla egyesítése új adatokkal a régi táblával

Az adatbázis egy objektum tulajdonságait egy "nyitott séma" használatával modellezi, azaz egy tábla név-érték párokat tartalmaz minden tulajdonsághoz. A Tulajdonságok tábla három oszlopból áll: EntityID, PropertyID és Value. A tábla újabb verzióját tartalmazó NewProperties táblát szinkronizálni kell a Tulajdonságok táblával. A két tábla szinkronizálásához egyetlen MERGE utasítással hajthatja végre a következő műveleteket:

  • Törölje a tulajdonságokat a Tulajdonságok táblából, ha hiányoznak a NewProperties táblából.

  • Frissítse a Tulajdonságok táblában lévő tulajdonságok értékeit a NewProperties táblában található új értékekkel.

  • Szúrjon be új tulajdonságokat a NewProperties táblában lévő, de a Tulajdonságok táblában nem található tulajdonságokhoz.

Ez a megközelítés olyan helyzetekben hasznos, amelyek hasonlítanak a replikációs forgatókönyvekre, ahol a cél az adatok két táblában való szinkronizálása két kiszolgálón.

Készlet nyomon követése

Az Inventory adatbázis egy ProductID és StockOnHand oszlopokat tartalmazó ProductsInventory táblával rendelkezik. A ProductID, CustomerID és Quantity oszlopokkal rendelkező Szállítmányok tábla nyomon követi a termékek ügyfeleknek történő szállítását. A ProductInventory táblát naponta frissíteni kell a Szállítmányok tábla adatai alapján. Egyetlen MERGE utasítás csökkentheti a ProductInventory táblában lévő készletet a végrehajtott szállítmányok alapján. Ha egy termék készlete 0-ra csökkent, akkor a MERGE utasítás törölheti a terméksort a ProductInventory táblából is.