Skapa storskaliga datakopieringspipelines med metadatadriven metod i verktyget kopiera data

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

När du vill kopiera stora mängder objekt (till exempel tusentals tabeller) eller läsa in data från många olika källor är det lämpligt att ange namnlistan för objekten med nödvändiga kopieringsbeteenden i en kontrolltabell och sedan använda parametriserade pipelines för att läsa samma från kontrolltabellen och tillämpa dem på jobben i enlighet därmed. På så sätt kan du underhålla (till exempel lägga till/ta bort) objektlistan som ska kopieras enkelt genom att bara uppdatera objektnamnen i kontrolltabellen i stället för att distribuera om pipelines. Dessutom har du en enda plats för att enkelt kontrollera vilka objekt som kopieras med vilka pipelines/utlösare med definierade kopieringsbeteenden.

Verktyget Kopiera data i ADF underlättar processen med att skapa sådana metadatadrivna datakopieringspipelines. När du har genomgått ett intuitivt flöde från en guidebaserad upplevelse kan verktyget generera parametriserade pipelines och SQL-skript så att du kan skapa externa kontrolltabeller i enlighet med detta. När du har kört de genererade skripten för att skapa kontrolltabellen i SQL-databasen läser dina pipelines metadata från kontrolltabellen och tillämpar dem automatiskt på kopieringsjobben.

Skapa metadatadrivna kopieringsjobb från verktyget kopiera data

  1. Välj Metadatadriven kopieringsaktivitet i verktyget kopiera data.

    Du måste ange anslutnings- och tabellnamnet för kontrolltabellen, så att den genererade pipelinen läser metadata från den.

    Select task type

  2. Ange anslutningen för källdatabasen. Du kan också använda parametriserad länkad tjänst .

    Select parameterized linked service

  3. Välj det tabellnamn som ska kopieras.

    Select table

    Kommentar

    Om du väljer tabelldatalager kan du välja antingen fullständig belastning eller deltainläsning på nästa sida. Om du väljer lagringslager kan du välja fullständig belastning ytterligare på nästa sida. Inkrementell inläsning av nya filer från lagringsarkivet stöds för närvarande inte.

  4. Välj inläsningsbeteende.

    Dricks

    Om du vill göra en fullständig kopia av alla tabeller väljer du Fullständig inläsning av alla tabeller. Om du vill göra inkrementell kopiering kan du välja konfigurera för varje tabell individuellt och välja Deltainläsning samt kolumnnamn och värde för vattenstämpeln som ska startas för varje tabell.

  5. Välj Måldatalager.

  6. Inställningar sidan kan du bestämma det maximala antalet kopieringsaktiviteter för att kopiera data från källlagret samtidigt via Antal samtidiga kopieringsuppgifter. Standardvärdet är 20.

    Settings page

  7. Efter pipelinedistributionen kan du kopiera eller ladda ned SQL-skripten från användargränssnittet för att skapa kontrolltabell och lagringsprocedur.

    Download scripts

    Två SQL-skript visas.

    • Det första SQL-skriptet används för att skapa två kontrolltabeller. Huvudkontrolltabellen lagrar tabelllistan, filsökvägen eller kopieringsbeteenden. I anslutningskontrolltabellen lagras anslutningsvärdet för ditt datalager om du använde en parametriserad länkad tjänst.
    • Det andra SQL-skriptet används för att skapa en lagringsprocedur. Den används för att uppdatera vattenstämpelvärdet i huvudkontrolltabellen när de inkrementella kopieringsjobben slutförs varje gång.
  8. Öppna SSMS för att ansluta till kontrolltabellservern och kör de två SQL-skripten för att skapa kontrolltabeller och lagra proceduren.

    Create control table script

  9. Fråga huvudkontrolltabellen och anslutningskontrolltabellen för att granska metadata i den.

    HuvudkontrolltabellQuery control table script1

    kontrolltabell för Anslut ionQuery control table script2

  10. Gå tillbaka till ADF-portalen för att visa och felsöka pipelines. Du ser en mapp som skapats genom att namnge "MetadataDrivenCopyTask_##########". Klicka på pipelinenamngivningen med "MetadataDrivenCopyTask###_TopLevel" och klicka på Felsökningskörning.

    Du måste ange följande parametrar:

    Namn på parametrar beskrivning
    MaxNumberOfConcurrentTasks Du kan alltid ändra det maximala antalet samtidiga kopieringsaktiviteter som körs innan pipelinekörningen. Standardvärdet är det som du anger i verktyget kopiera data.
    MainControlTableName Du kan alltid ändra huvudnamnet för kontrolltabellen, så att pipelinen hämtar metadata från tabellen innan den körs.
    Anslut ionControlTableName Du kan alltid ändra tabellnamnet för anslutningskontrollen (valfritt), så att pipelinen hämtar metadata relaterade till datalagringsanslutningen innan den körs.
    MaxNumberOfObjectsReturnedFromLookupActivity För att undvika att nå gränsen för uppslagsaktiviteten för utdata finns det ett sätt att definiera det maximala antalet objekt som returneras av uppslagsaktiviteten. I de flesta fall krävs inte standardvärdet för att ändras.
    windowStart När du anger dynamiskt värde (till exempel åååå/mm/dd) som mappsökväg används parametern för att skicka den aktuella utlösartiden till pipelinen för att fylla sökvägen för den dynamiska mappen. När pipelinen utlöses av schemautlösare eller rullande windows-utlösare behöver användarna inte ange värdet för den här parametern. Exempelvärde: 2021-01-25T01:49:28Z
  11. Aktivera utlösaren för att operationalisera pipelines.

    Enable trigger

Uppdatera kontrolltabellen genom att kopiera dataverktyget

Du kan alltid uppdatera kontrolltabellen direkt genom att lägga till eller ta bort objektet som ska kopieras eller ändra kopieringsbeteendet för varje tabell. Vi skapar även användargränssnittsupplevelse i verktyget för kopieringsdata för att underlätta redigeringen av kontrolltabellen.

  1. Högerklicka på pipelinen på den översta nivån: MetadataDrivenCopyTask_xxx_TopLevel och välj sedan Redigera kontrolltabell.

    Edit control table1

  2. Välj rader från kontrolltabellen som ska redigeras.

    Edit control table2

  3. Gå igenom dataflödet för verktyget för kopieringsdata så kommer det att komma med ett nytt SQL-skript åt dig. Kör SQL-skriptet igen för att uppdatera kontrolltabellen.

    Edit control table3

    Kommentar

    Pipelinen distribueras INTE om. Med det nya SQL-skriptet kan du endast uppdatera kontrolltabellen.

Kontrollera tabeller

Huvudkontrolltabell

Varje rad i kontrolltabellen innehåller metadata för ett objekt (till exempel en tabell) som ska kopieras.

Kolumnnamn Beskrivning
ID Unikt ID för det objekt som ska kopieras.
SourceObject Inställningar Metadata för källdatauppsättningen. Det kan vara schemanamn, tabellnamn osv. Här är ett exempel.
Källa Anslut ion Inställningar Name Namnet på källanslutningsinställningen i anslutningskontrolltabellen. Det är valfritt.
CopySource Inställningar Metadata för källegenskapen i kopieringsaktiviteten. Det kan vara fråga, partitioner osv. Här är ett exempel.
SinkObject Inställningar Metadata för måldatauppsättningen. Det kan vara filnamn, mappsökväg, tabellnamn osv. Här är ett exempel. Om dynamisk mappsökväg anges skrivs inte variabelvärdet här i kontrolltabellen.
Sink Anslut ion Inställningar Name Namnet på målanslutningsinställningen i anslutningskontrolltabellen. Det är valfritt.
CopySink Inställningar Metadata för mottagaregenskapen i kopieringsaktiviteten. Det kan vara preCopyScript, tableOption osv. Här är ett exempel.
CopyActivity Inställningar Metadata för translator-egenskapen i kopieringsaktivitet. Den används för att definiera kolumnmappning.
TopLevelPipelineName Det översta pipelinenamnet, som kan kopiera det här objektet.
TriggerName Utlösarnamn, som kan utlösa pipelinen för att kopiera det här objektet. Om felsökningen körs är namnet Sandbox. Om manuell körning är namnet Manuell. Om schemalagd körning är namnet det associerade utlösarnamnet. Det kan vara indata för flera namn.
DataLoadingBehavior Inställningar Fullständig belastning jämfört med deltabelastning.
TaskId Ordningen på objekt som ska kopieras efter TaskId i kontrolltabellen (ORDER BY [TaskId] DESC). Om du har stora mängder objekt som ska kopieras men endast begränsat antal samtidiga kopierade tillåtna objekt kan du ändra TaskId för varje objekt för att bestämma vilka objekt som kan kopieras tidigare. Standardvärdet är 0.
CopyEnabled Ange om objektet är aktiverat i datainmatningsprocessen. Tillåtna värden: 1 (aktiverad), 0 (inaktiverad). Standardvärdet är 1.

kontrolltabell för Anslut ion

Varje rad i kontrolltabellen innehåller en anslutningsinställning för datalagret.

Kolumnnamn beskrivning
Name Namnet på den parametriserade anslutningen i huvudkontrolltabellen.
Anslut ion Inställningar Anslutningsinställningarna. Det kan vara db-namn, servernamn och så vidare.

Pipelines

Du ser att tre nivåer av pipelines genereras av verktyget kopiera data.

MetadataDrivenCopyTask_xxx_TopLevel

Den här pipelinen beräknar det totala antalet objekt (tabeller osv.) som krävs för att kopieras i den här körningen, kommer med antalet sekventiella batchar baserat på den maximala tillåtna samtidiga kopieringsaktiviteten och kör sedan en annan pipeline för att kopiera olika batchar sekventiellt.

Parametrar

Namn på parametrar beskrivning
MaxNumberOfConcurrentTasks Du kan alltid ändra det maximala antalet samtidiga kopieringsaktiviteter som körs innan pipelinekörningen. Standardvärdet är det som du anger i verktyget kopiera data.
MainControlTableName Tabellnamnet för huvudkontrolltabellen. Pipelinen hämtar metadata från den här tabellen innan den körs
Anslut ionControlTableName Tabellnamnet för anslutningskontrolltabellen (valfritt). Pipelinen hämtar metadata relaterade till datalagringsanslutningen före körning
MaxNumberOfObjectsReturnedFromLookupActivity För att undvika att nå gränsen för uppslagsaktiviteten för utdata finns det ett sätt att definiera det maximala antalet objekt som returneras av uppslagsaktiviteten. I de flesta fall krävs inte standardvärdet för att ändras.
windowStart När du anger dynamiskt värde (till exempel åååå/mm/dd) som mappsökväg används parametern för att skicka den aktuella utlösartiden till pipelinen för att fylla sökvägen för den dynamiska mappen. När pipelinen utlöses av schemautlösare eller rullande windows-utlösare behöver användarna inte ange värdet för den här parametern. Exempelvärde: 2021-01-25T01:49:28Z

Aktiviteter

Aktivitetsnamn Aktivitetstyp beskrivning
GetSumOfObjectsToCopy Sökning Beräkna det totala antalet objekt (tabeller osv.) som krävs för att kopieras i den här körningen.
CopyBatchesOfObjectsSequentially ForEach Kom fram till antalet sekventiella batchar baserat på maximalt tillåtna samtidiga kopieringsuppgifter och kör sedan en annan pipeline för att kopiera olika batchar sekventiellt.
CopyObjectsInOneBtach Kör pipeline Kör en annan pipeline för att kopiera en batch med objekt. Objekten som tillhör den här batchen kopieras parallellt.

MetadataDrivenCopyTask_xxx_ Mellannivå

Den här pipelinen kopierar en batch med objekt. Objekten som tillhör den här batchen kopieras parallellt.

Parametrar

Namn på parametrar beskrivning
MaxNumberOfObjectsReturnedFromLookupActivity För att undvika att nå gränsen för uppslagsaktiviteten för utdata finns det ett sätt att definiera det maximala antalet objekt som returneras av uppslagsaktiviteten. I de flesta fall krävs inte standardvärdet för att ändras.
TopLevelPipelineName Namnet på den översta lagerpipelinen.
TriggerName Namnet på utlösaren.
CurrentSequentialNumberOfBatch ID för sekventiell batch.
SumOfObjectsToCopy Det totala antalet objekt som ska kopieras.
SumOfObjectsToCopyForCurrentBatch Antalet objekt som ska kopieras i den aktuella batchen.
MainControlTableName Namnet på huvudkontrolltabellen.
Anslut ionControlTableName Namnet på anslutningskontrolltabellen.

Aktiviteter

Aktivitetsnamn Aktivitetstyp beskrivning
DivideOneBatchIntoMultipleGroups ForEach Dela upp objekt från en batch i flera parallella grupper för att undvika att nå utdatagränsen för uppslagsaktivitet.
GetObjectsPerGroupToCopy Sökning Hämta objekt (tabeller osv.) från kontrolltabellen som krävs för att kopieras i den här gruppen. Ordningen på objekt som ska kopieras efter TaskId i kontrolltabellen (ORDER BY [TaskId] DESC).
CopyObjectsInOneGroup Kör pipeline Kör en annan pipeline för att kopiera objekt från en grupp. Objekten som tillhör den här gruppen kopieras parallellt.

MetadataDrivenCopyTask_xxx_ BottomLevel

Den här pipelinen kopierar objekt från en grupp. Objekten som tillhör den här gruppen kopieras parallellt.

Parametrar

Namn på parametrar beskrivning
ObjectsPerGroupToCopy Antalet objekt som ska kopieras i den aktuella gruppen.
Anslut ionControlTableName Namnet på anslutningskontrolltabellen.
windowStart Den använde för att skicka den aktuella utlösartiden till pipelinen för att fylla sökvägen för den dynamiska mappen om den konfigurerades av användaren.

Aktiviteter

Aktivitetsnamn Aktivitetstyp beskrivning
ListObjectsFromOneGroup ForEach Lista objekt från en grupp och iterera var och en av dem till underordnade aktiviteter.
RouteJobsBasedOnLoadingBehavior Växling Kontrollera inläsningsbeteendet för varje objekt. Om det är standard- eller FullLoad-skiftläge utför du full belastning. Om det är DeltaLoad-fall utför du inkrementell belastning via vattenstämpelkolumnen för att identifiera ändringar
FullLoadOneObject Kopia Ta en fullständig ögonblicksbild av det här objektet och kopiera det till målet.
DeltaLoadOneObject Kopia Kopiera endast ändrade data från förra gången genom att jämföra värdet i vattenstämpelkolumnen för att identifiera ändringar.
GetMaxWatermarkValue Sökning Fråga källobjektet för att hämta maxvärdet från vattenstämpelkolumnen.
UpdateWatermarkColumnValue StoreProcedure Skriv tillbaka det nya vattenstämpelvärdet för att styra tabellen som ska användas nästa gång.

Kända begränsningar

  • IR-namn, databastyp, filformattyp kan inte parametriseras i ADF. Om du till exempel vill mata in data från både Oracle Server och SQL Server behöver du två olika parametriserade pipelines. Men den enskilda kontrolltabellen kan delas av två uppsättningar pipelines.
  • OPENJSON används i genererade SQL-skript genom att kopiera dataverktyget. Om du använder SQL Server som värd för kontrolltabellen måste det vara SQL Server 2016 (13.x) och senare för att stödja funktionen OPENJSON.

Prova de här självstudierna som använder verktyget Kopiera data: