Share via


Grootschalige pijplijnen voor het kopiëren van gegevens bouwen met behulp van metagegevens in het hulpprogramma voor het kopiëren van gegevens

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

Wanneer u grote hoeveelheden objecten (bijvoorbeeld duizenden tabellen) wilt kopiëren of gegevens uit grote verschillende bronnen wilt laden, is de juiste methode om de naamlijst van de objecten met het vereiste kopieergedrag in een besturingstabel in te voeren en vervolgens geparameteriseerde pijplijnen te gebruiken om hetzelfde uit de besturingstabel te lezen en deze vervolgens toe te passen op de taken dienovereenkomstig. Als u dit doet, kunt u de objectenlijst (bijvoorbeeld toevoegen/verwijderen) eenvoudig onderhouden door alleen de objectnamen in de besturingstabel bij te werken in plaats van de pijplijnen opnieuw te implementeren. Bovendien beschikt u over één plek om eenvoudig te controleren welke objecten zijn gekopieerd door welke pijplijnen/triggers met gedefinieerd kopieergedrag.

Het hulpprogramma voor het kopiëren van gegevens in ADF vereenvoudigt het bouwen van dergelijke pijplijnen voor het kopiëren van metagegevens. Nadat u een intuïtieve stroom hebt doorlopen vanuit een op een wizard gebaseerde ervaring, kan het hulpprogramma geparameteriseerde pijplijnen en SQL-scripts genereren om dienovereenkomstig externe besturingstabellen te maken. Nadat u de gegenereerde scripts hebt uitgevoerd om de besturingstabel in uw SQL-database te maken, lezen uw pijplijnen de metagegevens uit de besturingstabel en passen ze automatisch toe op de kopieertaken.

Metagegevensgestuurde kopieertaken maken vanuit het hulpprogramma voor het kopiëren van gegevens

  1. Selecteer de kopieertaak op basis van metagegevens in het hulpprogramma voor het kopiëren van gegevens.

    U moet de verbindings- en tabelnaam van de besturingstabel invoeren, zodat de gegenereerde pijplijn metagegevens van die tabel leest.

    Taaktype selecteren

  2. Voer de verbinding van uw brondatabase in. U kunt ook een gekoppelde gekoppelde service met parameters gebruiken.

    Geparameteriseerde gekoppelde service selecteren

  3. Selecteer de tabelnaam die u wilt kopiëren.

    Tabel selecteren

    Notitie

    Als u een tabellair gegevensarchief selecteert, kunt u op de volgende pagina verder volledige belasting of deltabelasting selecteren. Als u opslagarchief selecteert, kunt u op de volgende pagina verder alleen volledig laden selecteren. Het incrementeel laden van nieuwe bestanden alleen vanuit het opslagarchief wordt momenteel niet ondersteund.

  4. Kies laadgedrag.

    Tip

    Als u volledige kopie van alle tabellen wilt uitvoeren, selecteert u Alle tabellen volledig laden. Als u incrementeel kopiëren wilt uitvoeren, kunt u voor elke tabel afzonderlijk configureren en delta laden en de naam en waarde van de watermerkkolom selecteren om voor elke tabel te beginnen.

  5. Selecteer Doelgegevensarchief.

  6. Op de pagina Instellingen kunt u het maximum aantal kopieeractiviteiten bepalen om gegevens uit uw bronarchief gelijktijdig te kopiëren via het aantal gelijktijdige kopieertaken. De standaardwaarde is 20.

    Instellingenpagina

  7. Na de pijplijnimplementatie kunt u de SQL-scripts kopiëren of downloaden uit de gebruikersinterface voor het maken van een besturingstabel en de procedure voor het opslaan.

    Scripts downloaden

    U ziet twee SQL-scripts.

    • Het eerste SQL-script wordt gebruikt om twee besturingstabellen te maken. In de hoofdtabel van het besturingselement wordt de tabellijst, het bestandspad of het kopieergedrag opgeslagen. In de tabel verbindingsbeheer wordt de verbindingswaarde van uw gegevensarchief opgeslagen als u een gekoppelde service met parameters hebt gebruikt.
    • Het tweede SQL-script wordt gebruikt om een winkelprocedure te maken. Deze wordt gebruikt om de grenswaarde in de hoofdbeheertabel bij te werken wanneer de incrementele kopieertaken elke keer worden voltooid.
  8. Open SSMS om verbinding te maken met uw besturingstabelserver en voer de twee SQL-scripts uit om besturingstabellen te maken en procedure op te slaan.

    Besturingselementtabelscript maken

  9. Voer een query uit op de hoofdtabel en verbindingsbeheertabel om de metagegevens hierin te controleren.

    HoofdbeheertabelQuerybeheertabelscript1

    VerbindingsbeheertabelQuerybeheertabelscript2

  10. Ga terug naar de ADF-portal om pijplijnen weer te geven en fouten op te sporen. U ziet een map die is gemaakt met de naam 'MetadataDrivenCopyTask_#########'. Klik op de naamgeving van de pijplijn met 'MetadataDrivenCopyTask###_TopLevel' en klik op de foutopsporingsuitvoering.

    U moet de volgende parameters invoeren:

    Naam van parameters Beschrijving
    MaxNumberOfConcurrentTasks U kunt het maximum aantal gelijktijdige kopieeractiviteiten altijd wijzigen voordat de pijplijn wordt uitgevoerd. De standaardwaarde is degene die u invoert in het hulpprogramma voor het kopiëren van gegevens.
    MainControlTableName U kunt altijd de naam van de hoofdbeheertabel wijzigen, zodat de pijplijn de metagegevens uit die tabel krijgt voordat deze wordt uitgevoerd.
    ConnectionControlTableName U kunt altijd de naam van de tabel voor verbindingsbeheer wijzigen (optioneel), zodat de pijplijn de metagegevens krijgt die betrekking hebben op de verbinding met het gegevensarchief voordat deze wordt uitgevoerd.
    MaxNumberOfObjectsReturnedFromLookupActivity Om te voorkomen dat de limiet van de uitvoerzoekactiviteit wordt bereikt, is er een manier om het maximum aantal objecten te definiëren dat wordt geretourneerd door opzoekactiviteit. In de meeste gevallen hoeft de standaardwaarde niet te worden gewijzigd.
    windowStart Wanneer u dynamische waarde invoert (bijvoorbeeld jjjj/mm/dd) als mappad, wordt de parameter gebruikt om de huidige triggertijd door te geven aan de pijplijn om het dynamische mappad te vullen. Wanneer de pijplijn wordt geactiveerd door een schematrigger of tumblingvenstertrigger, hoeven gebruikers de waarde van deze parameter niet in te voeren. Voorbeeldwaarde: 2021-01-25T01:49:28Z
  11. Schakel de trigger in om de pijplijnen operationeel te maken.

    Trigger inschakelen

Besturingselementtabel bijwerken met het hulpprogramma voor het kopiëren van gegevens

U kunt de besturingstabel altijd rechtstreeks bijwerken door het object toe te voegen of te verwijderen dat moet worden gekopieerd of het kopieergedrag voor elke tabel te wijzigen. We maken ook gebruikersinterface-ervaring in het hulpprogramma voor het kopiëren van gegevens om het bewerken van de besturingstabel te vereenvoudigen.

  1. Klik met de rechtermuisknop op de pijplijn op het hoogste niveau: MetadataDrivenCopyTask_xxx_TopLevel en selecteer besturingselementtabel bewerken.

    Besturingselementtabel1 bewerken

  2. Selecteer rijen in de besturingstabel die u wilt bewerken.

    Besturingselementtabel2 bewerken

  3. Voer het hulpprogramma voor het kopiëren van gegevens door en er wordt een nieuw SQL-script voor u weergegeven. Voer het SQL-script opnieuw uit om de besturingstabel bij te werken.

    Besturingselementtabel3 bewerken

    Notitie

    De pijplijn wordt NIET opnieuw geïmplementeerd. Met het nieuwe gemaakte SQL-script kunt u de besturingstabel alleen bijwerken.

Besturingstabellen

Hoofdbeheertabel

Elke rij in de besturingstabel bevat de metagegevens voor één object (bijvoorbeeld één tabel) dat moet worden gekopieerd.

Kolomnaam Beschrijving
Id Unieke id van het object dat moet worden gekopieerd.
SourceObjectSettings Metagegevens van brongegevensset. Dit kan een schemanaam, tabelnaam, enzovoort zijn. Hier volgt een voorbeeld.
SourceConnectionSettingsName De naam van de bronverbindingsinstelling in de verbindingsbeheertabel. Dit is optioneel.
CopySourceSettings Metagegevens van broneigenschap in kopieeractiviteit. Het kan query's, partities, enzovoort zijn. Hier volgt een voorbeeld.
SinkObjectSettings Metagegevens van doelgegevensset. Dit kan een bestandsnaam, mappad, tabelnaam, enzovoort zijn. Hier volgt een voorbeeld. Als dynamisch mappad is opgegeven, wordt de variabelewaarde hier niet geschreven in de besturingstabel.
SinkConnectionSettingsName De naam van de doelverbindingsinstelling in de verbindingsbeheertabel. Dit is optioneel.
CopySinkSettings Metagegevens van sinkeigenschap in kopieeractiviteit. Dit kan preCopyScript, tableOption, enzovoort zijn. Hier volgt een voorbeeld.
CopyActivitySettings Metagegevens van de eigenschap Translator in kopieeractiviteit. Deze wordt gebruikt om kolomtoewijzing te definiëren.
TopLevelPipelineName De naam van de bovenste pijplijn, die dit object kan kopiëren.
TriggerName Triggernaam, die de pijplijn kan activeren om dit object te kopiëren. Als de foutopsporing wordt uitgevoerd, is de naam Sandbox. Als handmatige uitvoering, is de naam Handmatig. Als de geplande uitvoering wordt uitgevoerd, is de naam de bijbehorende triggernaam. U kunt meerdere namen invoeren.
DataLoadingBehaviorSettings Volledige belasting versus deltabelasting.
TaskId De volgorde van objecten die moeten worden gekopieerd na de TaskId in de besturingstabel (ORDER BY [TaskId] DESC). Als u grote hoeveelheden objecten hebt die moeten worden gekopieerd, maar slechts een beperkt gelijktijdig aantal gekopieerde objecten hebt toegestaan, kunt u de TaskId voor elk object wijzigen om te bepalen welke objecten eerder kunnen worden gekopieerd. De standaardwaarde is 0.
CopyEnabled Geef op of het item is ingeschakeld in het gegevensopnameproces. Toegestane waarden: 1 (ingeschakeld), 0 (uitgeschakeld). De standaardwaarde is 1.

Verbindingsbeheertabel

Elke rij in de besturingstabel bevat één verbindingsinstelling voor het gegevensarchief.

Kolomnaam Description
Naam Naam van de geparameteriseerde verbinding in de hoofdbeheertabel.
ConnectionSettings De verbindingsinstellingen. Dit kan db-naam, servernaam enzovoort zijn.

Pipelines

U ziet dat er drie niveaus pijplijnen worden gegenereerd door het hulpprogramma voor het kopiëren van gegevens.

MetadataDrivenCopyTask_xxx_TopLevel

Met deze pijplijn wordt het totale aantal objecten (tabellen, enzovoort) berekend dat in deze uitvoering moet worden gekopieerd, wordt het aantal opeenvolgende batches berekend op basis van de maximaal toegestane gelijktijdige kopieertaak en voert u vervolgens een andere pijplijn uit om verschillende batches sequentieel te kopiëren.

Parameters

Naam van parameters Beschrijving
MaxNumberOfConcurrentTasks U kunt het maximum aantal gelijktijdige kopieeractiviteiten altijd wijzigen voordat de pijplijn wordt uitgevoerd. De standaardwaarde is degene die u invoert in het hulpprogramma voor het kopiëren van gegevens.
MainControlTableName De tabelnaam van de hoofdbeheertabel. De pijplijn haalt de metagegevens uit deze tabel op voordat deze wordt uitgevoerd
ConnectionControlTableName De tabelnaam van de verbindingsbeheertabel (optioneel). De pijplijn haalt de metagegevens op die betrekking hebben op de verbinding met het gegevensarchief voordat deze wordt uitgevoerd
MaxNumberOfObjectsReturnedFromLookupActivity Om te voorkomen dat de limiet van de uitvoerzoekactiviteit wordt bereikt, is er een manier om het maximum aantal objecten te definiëren dat wordt geretourneerd door opzoekactiviteit. In de meeste gevallen hoeft de standaardwaarde niet te worden gewijzigd.
windowStart Wanneer u dynamische waarde invoert (bijvoorbeeld jjjj/mm/dd) als mappad, wordt de parameter gebruikt om de huidige triggertijd door te geven aan de pijplijn om het dynamische mappad te vullen. Wanneer de pijplijn wordt geactiveerd door een schematrigger of tumblingvenstertrigger, hoeven gebruikers de waarde van deze parameter niet in te voeren. Voorbeeldwaarde: 2021-01-25T01:49:28Z

Activiteiten

Naam van de activiteit Type activiteit Beschrijving
GetSumOfObjectsToCopy Zoekopdracht Bereken het totale aantal objecten (tabellen, enzovoort) dat in deze uitvoering moet worden gekopieerd.
CopyBatchesOfObjectsSequentially ForEach Kom overeen met het aantal opeenvolgende batches op basis van de maximaal toegestane gelijktijdige kopieertaken en voer vervolgens een andere pijplijn uit om verschillende batches sequentieel te kopiëren.
CopyObjectsInOneBtach Pijplijn uitvoeren Voer een andere pijplijn uit om één batch objecten te kopiëren. De objecten die deel uitmaken van deze batch, worden parallel gekopieerd.

MetadataDrivenCopyTask_xxx_ MiddleLevel

Met deze pijplijn wordt één batch objecten gekopieerd. De objecten die deel uitmaken van deze batch, worden parallel gekopieerd.

Parameters

Naam van parameters Beschrijving
MaxNumberOfObjectsReturnedFromLookupActivity Om te voorkomen dat de limiet van de uitvoerzoekactiviteit wordt bereikt, is er een manier om het maximum aantal objecten te definiëren dat wordt geretourneerd door opzoekactiviteit. In de meeste gevallen hoeft de standaardwaarde niet te worden gewijzigd.
TopLevelPipelineName De naam van de pijplijn van de bovenste laag.
TriggerName De naam van de trigger.
CurrentSequentialNumberOfBatch De id van sequentiële batch.
SumOfObjectsToCopy Het totale aantal te kopiëren objecten.
SumOfObjectsToCopyForCurrentBatch Het aantal objecten dat in de huidige batch moet worden gekopieerd.
MainControlTableName De naam van de hoofdbeheertabel.
ConnectionControlTableName De naam van de verbindingsbeheertabel.

Activiteiten

Naam van de activiteit Type activiteit Beschrijving
DivideOneBatchIntoMultipleGroups ForEach Verdeel objecten van één batch in meerdere parallelle groepen om te voorkomen dat de uitvoerlimiet van de opzoekactiviteit wordt bereikt.
GetObjectsPerGroupToCopy Zoekopdracht Objecten (tabellen enzovoort) ophalen uit de besturingstabel die moeten worden gekopieerd in deze groep. De volgorde van objecten die moeten worden gekopieerd na de TaskId in de besturingstabel (ORDER BY [TaskId] DESC).
CopyObjectsInOneGroup Pijplijn uitvoeren Voer een andere pijplijn uit om objecten uit de ene groep te kopiëren. De objecten die bij deze groep horen, worden parallel gekopieerd.

MetadataDrivenCopyTask_xxx_ BottomLevel

Met deze pijplijn worden objecten uit één groep gekopieerd. De objecten die bij deze groep horen, worden parallel gekopieerd.

Parameters

Naam van parameters Beschrijving
ObjectsPerGroupToCopy Het aantal objecten dat moet worden gekopieerd in de huidige groep.
ConnectionControlTableName De naam van de verbindingsbeheertabel.
windowStart Het gebruikte om de huidige triggertijd door te geven aan de pijplijn om het dynamische mappad te vullen als deze door de gebruiker is geconfigureerd.

Activiteiten

Naam van de activiteit Type activiteit Beschrijving
ListObjectsFromOneGroup ForEach Objecten uit één groep weergeven en ze allemaal herhalen naar downstreamactiviteiten.
RouteJobsBasedOnLoadingBehavior Switch Controleer het laadgedrag voor elk object. Als dit de standaard- of FullLoad-case is, voert u de volledige belasting uit. Als het DeltaLoad-geval is, voert u incrementele belasting uit via de kolom watermerk om wijzigingen te identificeren
FullLoadOneObject Kopiëren Maak een volledige momentopname van dit object en kopieer deze naar het doel.
DeltaLoadOneObject Kopiëren Kopieer de gewijzigde gegevens alleen van de vorige keer via het vergelijken van de waarde in de kolom watermerk om wijzigingen te identificeren.
GetMaxWatermarkValue Zoekopdracht Voer een query uit op het bronobject om de maximale waarde op te halen uit de kolom watermerk.
UpdateWatermarkColumnValue StoreProcedure Schrijf de nieuwe grenswaarde terug om de tabel te beheren die de volgende keer moet worden gebruikt.

Bekende beperkingen

  • IR-naam, databasetype, bestandstype kan niet worden geparameteriseerd in ADF. Als u bijvoorbeeld gegevens van zowel Oracle Server als SQL Server wilt opnemen, hebt u twee verschillende geparameteriseerde pijplijnen nodig. Maar de tabel met één besturingselement kan worden gedeeld door twee sets pijplijnen.
  • OPENJSON wordt gebruikt in gegenereerde SQL-scripts door het hulpprogramma voor het kopiëren van gegevens. Als u SQL Server gebruikt om een besturingstabel te hosten, moet dit SQL Server 2016 (13.x) en hoger zijn om de OPENJSON-functie te ondersteunen.

Probeer deze zelfstudies die gebruikmaken van het hulpprogramma Copy Data: