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
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.
Voer de verbinding van uw brondatabase in. U kunt ook een gekoppelde gekoppelde service met parameters gebruiken.
Selecteer de tabelnaam die u wilt kopiëren.
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.
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.
Selecteer Doelgegevensarchief.
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.
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.
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.
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.
Voer een query uit op de hoofdtabel en verbindingsbeheertabel om de metagegevens hierin te controleren.
Hoofdbeheertabel
Verbindingsbeheertabel
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 Schakel de trigger in om de pijplijnen operationeel te maken.
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.
Klik met de rechtermuisknop op de pijplijn op het hoogste niveau: MetadataDrivenCopyTask_xxx_TopLevel en selecteer besturingselementtabel bewerken.
Selecteer rijen in de besturingstabel die u wilt bewerken.
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.
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.
Gerelateerde inhoud
Probeer deze zelfstudies die gebruikmaken van het hulpprogramma Copy Data: