Változásmásolás egy vezérlőtáblával rendelkező adatbázisból
A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
Ez a cikk egy olyan sablont ismertet, amely lehetővé válik új vagy frissített sorok növekményes betöltésére egy adatbázistáblából az Azure-ba egy magas vízjelértéket tároló külső vezérlőtáblával.
Ez a sablon megköveteli, hogy a forrásadatbázis sémája tartalmazzon egy időbélyegoszlopot vagy egy növekményes kulcsot az új vagy frissített sorok azonosításához.
Megjegyzés:
Ha a forrásadatbázisban van egy időbélyegoszlop az új vagy frissített sorok azonosításához, de nem szeretne külső vezérlőtáblát létrehozni a változásmásoláshoz, ehelyett az Azure Data Factory Adatmásolási eszközével kérhet le egy folyamatot. Ez az eszköz egy eseményindító-ütemezett időt használ változóként a forrásadatbázis új sorainak beolvasásához.
A megoldássablon ismertetése
Ez a sablon először lekéri a régi vízjelértéket, és összehasonlítja az aktuális vízjel értékkel. Ezután csak a forrásadatbázis módosításait másolja át a két vízjel értékének összehasonlítása alapján. Végül az új magas vízjelértéket egy külső vezérlőtáblában tárolja a következő alkalommal történő változásadatok betöltéséhez.
A sablon négy tevékenységet tartalmaz:
- A Lookup egy külső vezérlőtáblában tárolt régi magas vízjelértéket kéri le.
- Egy másik keresési tevékenység lekéri az aktuális magas vízjelértéket a forrásadatbázisból.
- Csak a forrásadatbázis módosításainak másolása a céltárolóba. A forrásadatbázis változásait azonosító lekérdezés a következőhöz hasonló: "Standard kiadás LECT * FROM Data_Source_Table WHERE TIMESTAMP_Column > "last high-watermark" és TIMESTAMP_Column <= "current high-watermark".
- Az SqlServerStoredProcedure a jelenlegi magas vízjelértéket egy külső vezérlőtáblába írja a következő alkalommal történő változásmásoláshoz.
A sablon a következő paramétereket határozza meg:
- Data_Source_Table_Name a forrásadatbázis azon táblája, amelyből adatokat szeretne betölteni.
- Data_Source_WaterMarkColumn annak az oszlopnak a neve a forrástáblában, amely az új vagy frissített sorok azonosítására szolgál. Az oszlop típusa általában datetime, INT vagy hasonló.
- Data_Destination_Container annak a helynek a gyökérútvonala, ahová az adatokat a céltárolóba másolja.
- Data_Destination_Directory a könyvtár elérési útja annak a helynek a gyökere alatt, ahová az adatokat a céltárolóba másolja.
- Data_Destination_Table_Name az a hely, ahová az adatok át lesznek másolva a céltárolóban (akkor alkalmazható, ha az "Azure Synapse Analytics" adatcélként van kiválasztva).
- Data_Destination_Folder_Path az a hely, ahová az adatok át lesznek másolva a céltárolóban (akkor alkalmazható, ha a "Fájlrendszer" vagy az "Azure Data Lake Storage Gen1" van kiválasztva adatcélként).
- Control_Table_Table_Name a magas vízjelértéket tároló külső vezérlőtábla.
- Control_Table_Column_Name a magas vízjelértéket tároló külső vezérlőtábla oszlopa.
A megoldássablon használata
Fedezze fel a betölteni kívánt forrástáblát, és határozza meg az új vagy frissített sorok azonosítására használható magas vízjelű oszlopot. Ennek az oszlopnak a típusa lehet datetime, INT vagy hasonló. Ennek az oszlopnak az értéke az új sorok hozzáadásakor nő. A következő mintaforrástáblából (data_source_table) a LastModifytime oszlopot használhatjuk magas vízjelű oszlopként.
PersonID Name LastModifytime 1 aaaa 2017-09-01 00:56:00.000 2 bbbb 2017-09-02 05:23:00.000 3 cccc 2017-09-03 02:36:00.000 4 dddd 2017-09-04 03:21:00.000 5 eeee 2017-09-05 08:06:00.000 6 fffffff 2017-09-06 02:23:00.000 7 gggg 2017-09-07 09:01:00.000 8 hhhh 2017-09-08 09:01:00.000 9 iiiiiiiii 2017-09-09 09:01:00.000
Hozzon létre egy vezérlőtáblát az SQL Serverben vagy az Azure SQL Database-ben a deltaadatok betöltéséhez szükséges magas vízjelérték tárolásához. Az alábbi példában a vezérlőtábla neve vízjeltábla. Ebben a táblázatban a WatermarkValue az az oszlop, amely a magas vízjelértéket tárolja, és típusa dátumidő.
create table watermarktable ( WatermarkValue datetime, ); INSERT INTO watermarktable VALUES ('1/1/2010 12:00:00 AM')
Hozzon létre egy tárolt eljárást ugyanabban az SQL Server- vagy Azure SQL Database-példányban, amelyet a vezérlőtábla létrehozásához használt. A tárolt eljárás az új magas vízjel értékének a külső vezérlőtáblába való írására szolgál a következő alkalommal történő változásadatok betöltéséhez.
CREATE PROCEDURE update_watermark @LastModifiedtime datetime AS BEGIN UPDATE watermarktable SET [WatermarkValue] = @LastModifiedtime END
Nyissa meg a Delta-példányt az adatbázissablonból . Hozzon létre egy új kapcsolatot a forrásadatbázissal, amelyből adatokat szeretne másolni.
Hozzon létre egy új kapcsolatot a céladattárhoz, amelybe az adatokat át szeretné másolni.
Hozzon létre egy új kapcsolatot a külső vezérlőtáblával és a 2. és 3. lépésben létrehozott tárolt eljárással.
Kattintson a Sablon használata lehetőségre.
Az elérhető folyamat az alábbi példában látható módon jelenik meg:
Válassza a Tárolt eljárás lehetőséget. A tárolt eljárás neveként válassza a [dbo].[ update_watermark]. Válassza az Importálás paramétert, majd a Dinamikus tartalom hozzáadása lehetőséget.
Írja be a tartalmat @{activity('LookupCurrentWaterMark').output.firstRow.NewWatermarkValue}, majd válassza a Befejezés lehetőséget.
Válassza a Hibakeresés lehetőséget, írja be a paramétereket, majd válassza a Befejezés lehetőséget.
Az alábbi példához hasonló eredmények jelennek meg:
A forrástáblában új sorokat hozhat létre. Az alábbi SQL-mintanyelv segítségével hozhat létre új sorokat:
INSERT INTO data_source_table VALUES (10, 'newdata','9/10/2017 2:23:00 AM') INSERT INTO data_source_table VALUES (11, 'newdata','9/11/2017 9:01:00 AM')
A folyamat ismételt futtatásához válassza a Hibakeresés lehetőséget, írja be a paramétereket, majd válassza a Befejezés lehetőséget.
Látni fogja, hogy csak az új sorok lettek átmásolva a célhelyre.
(Nem kötelező:) Ha az Azure Synapse Analyticset választja adatcélként, az előkészítéshez meg kell adnia egy kapcsolatot az Azure Blob Storage-hoz, amelyet az Azure Synapse Analytics Polybase igényel. A sablon létrehoz egy tároló elérési útját. A folyamat futtatása után ellenőrizze, hogy a tároló a Blob Storage-ban lett-e létrehozva.
Kapcsolódó tartalom
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: