Share via


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

  1. 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
    
  2. 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')
    
  3. 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
    
  4. 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.

    Screenshot showing the creation of a new connection to the source table.

  5. Hozzon létre egy új kapcsolatot a céladattárhoz, amelybe az adatokat át szeretné másolni.

    Screenshot showing the creation of a new connection to the destination table.

  6. 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.

    Screenshot showing the creation of a new connection to the control table data store.

  7. Kattintson a Sablon használata lehetőségre.

  8. Az elérhető folyamat az alábbi példában látható módon jelenik meg:

    Screenshot showing the pipeline.

  9. 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.

    Screenshot showing where to set the stored procedure activity.

  10. Írja be a tartalmat @{activity('LookupCurrentWaterMark').output.firstRow.NewWatermarkValue}, majd válassza a Befejezés lehetőséget.

    Screenshot showing where to write the content for the parameters of the stored procedure.

  11. Válassza a Hibakeresés lehetőséget, írja be a paramétereket, majd válassza a Befejezés lehetőséget.

    Screenshot showing the Debug button.

  12. Az alábbi példához hasonló eredmények jelennek meg:

    Sreenshot showing the result of the pipeline run.

  13. 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')
    
  14. 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.

  15. (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.

    Screenshot showing where to configure Polybase.