Vytváření rozsáhlých kanálů kopírování dat pomocí přístupu řízeného metadaty v nástroji pro kopírování dat
PLATÍ PRO: Azure Data Factory Azure Synapse Analytics
Tip
Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.
Pokud chcete zkopírovat obrovské objemy objektů (například tisíce tabulek) nebo načíst data z velkých zdrojů, je vhodné zadat seznam názvů objektů s požadovaným chováním kopírování v řídicí tabulce a pak použít parametrizované kanály ke čtení stejného z řídicí tabulky a odpovídajícím způsobem je použít pro úlohy. Tímto způsobem můžete seznam objektů snadno zkopírovat (například přidat nebo odebrat), a to tak, že místo opětovného nasazení kanálů aktualizujete názvy objektů v řídicí tabulce. Kromě toho budete mít jediné místo, kde můžete snadno zkontrolovat, které objekty zkopírovaly, podle kterých kanálů a triggerů s definovaným chováním kopírování.
Nástroj pro kopírování dat v ADF usnadňuje vytváření takových kanálů kopírování dat řízených metadaty. Jakmile projdete intuitivním tokem z prostředí založeného na průvodci, může nástroj vygenerovat parametrizované kanály a skripty SQL, abyste mohli odpovídajícím způsobem vytvářet tabulky externích ovládacích prvků. Po spuštění vygenerovaných skriptů pro vytvoření řídicí tabulky v databázi SQL budou kanály číst metadata z řídicí tabulky a automaticky je aplikovat na úlohy kopírování.
Vytváření úloh kopírování řízených metadaty z nástroje pro kopírování dat
V nástroji pro kopírování dat vyberte úlohu kopírování řízenou metadaty.
Potřebujete zadat název připojení a tabulky řídicí tabulky, aby vygenerovaný kanál načetl metadata z této tabulky.
Zadejte připojení zdrojové databáze. Můžete také použít parametrizovanou propojenou službu .
Vyberte název tabulky, který chcete zkopírovat.
Poznámka:
Pokud vyberete tabulkové úložiště dat, budete mít možnost dalšího výběru plného načtení nebo rozdílového načtení na další stránce. Pokud vyberete úložiště úložiště, můžete dále vybrat úplné načtení pouze na další stránce. Přírůstkové načítání nových souborů pouze z úložiště úložiště se v současné době nepodporuje.
Zvolte chování načítání.
Tip
Pokud chcete provést úplné kopírování všech tabulek, vyberte Úplné načtení všech tabulek. Pokud chcete provést přírůstkové kopírování, můžete vybrat konfiguraci pro každou tabulku jednotlivě a vybrat rozdílové načtení a také název sloupce vodoznaku a hodnotu, která se má pro každou tabulku spustit.
Vyberte Cílové úložiště dat.
Na stránce Nastavení můžete určit maximální počet aktivit kopírování pro kopírování dat ze zdrojového úložiště současně prostřednictvím počtu souběžných úloh kopírování. Výchozí hodnota je 20.
Po nasazení kanálu můžete zkopírovat nebo stáhnout skripty SQL z uživatelského rozhraní pro vytvoření řídicí tabulky a uložit proceduru.
Zobrazí se dva skripty SQL.
- První skript SQL slouží k vytvoření dvou řídicích tabulek. Hlavní řídicí tabulka ukládá chování seznamu tabulek, cesty k souboru nebo kopírování. Tabulka ovládacích prvků připojení ukládá hodnotu připojení úložiště dat, pokud jste použili parametrizovanou propojenou službu.
- Druhý skript SQL slouží k vytvoření procedury úložiště. Slouží k aktualizaci hodnoty meze v hlavní řídicí tabulce při každém dokončení úloh přírůstkového kopírování.
Otevřete SSMS , abyste se připojili k řídicímu tabulkovému serveru, a spusťte dva skripty SQL, které vytvoří řídicí tabulky a uloží proceduru.
Zadejte dotaz na hlavní řídicí tabulku a tabulku ovládacích prvků připojení a zkontrolujte metadata v ní.
Hlavní řídicí tabulka
Tabulka ovládacích prvků připojení
Pokud chcete zobrazit a ladit kanály, vraťte se na portál ADF. Zobrazí se složka vytvořená pojmenováním "MetadataDrivenCopyTask_#########". Klikněte na pojmenování kanálu s metadataDrivenCopyTask###_TopLevel" a klikněte na spustit ladění.
Musíte zadat následující parametry:
Název parametrů Popis MaxNumberOfConcurrentTasks Před spuštěním kanálu můžete vždy změnit maximální počet souběžných aktivit kopírování. Výchozí hodnota bude ta, kterou zadáte v nástroji pro kopírování dat. MainControlTableName Název hlavní řídicí tabulky můžete vždy změnit, takže kanál před spuštěním získá metadata z této tabulky. ConnectionControlTableName Název tabulky ovládacích prvků připojení (volitelné) můžete kdykoli změnit, takže kanál před spuštěním získá metadata související s připojením k úložišti dat. MaxNumberOfObjectsReturnedFromLookupActivity Aby se zabránilo dosažení limitu výstupní aktivity vyhledávání, existuje způsob, jak definovat maximální počet objektů vrácených vyhledávací aktivitou. Ve většině případů není nutné změnit výchozí hodnotu. windowStart Když jako cestu ke složce zadáte dynamickou hodnotu (například yyyy/mm/dd), použije se parametr k předání aktuálního času aktivační události kanálu, aby se vyplnila cesta k dynamické složce. Když se kanál aktivuje triggerem plánu nebo triggerem pro přeskakující okna, uživatelé nemusí zadávat hodnotu tohoto parametru. Ukázková hodnota: 2021-01-25T01:49:28Z Povolte trigger pro zprovoznění kanálů.
Aktualizace řídicí tabulky pomocí nástroje pro kopírování dat
Řídicí tabulku můžete kdykoli aktualizovat přidáním nebo odebráním objektu, který se má zkopírovat, nebo změnit chování kopírování pro každou tabulku. Také vytváříme uživatelské rozhraní v nástroji pro kopírování dat, abychom usnadnili úpravu řídicí tabulky.
Klikněte pravým tlačítkem myši na kanál nejvyšší úrovně: MetadataDrivenCopyTask_xxx_TopLevel a pak vyberte Upravit řídicí tabulku.
Vyberte řádky z řídicí tabulky, které chcete upravit.
Přejděte ke propustnosti nástroje pro kopírování dat a zobrazí se vám nový skript SQL. Znovu spusťte skript SQL, aby se aktualizovala tabulka ovládacích prvků.
Poznámka:
Kanál nebude znovu nasazen. Nový vytvořený skript SQL vám pomůže aktualizovat pouze řídicí tabulku.
Řídicí tabulky
Hlavní řídicí tabulka
Každý řádek v řídicí tabulce obsahuje metadata pro jeden objekt (například jednu tabulku), která se mají zkopírovat.
Název sloupce | Popis |
---|---|
ID | Jedinečné ID objektu, který se má zkopírovat. |
SourceObjectSettings | Metadata zdrojové datové sady Může to být název schématu, název tabulky atd. Tady je příklad. |
SourceConnectionSettingsName | Název nastavení zdrojového připojení v tabulce ovládacích prvků připojení. Zadání je volitelné. |
CopySourceSettings | Metadata zdrojové vlastnosti v aktivitě kopírování Může to být dotaz, oddíly atd. Tady je příklad. |
SinkObjectSettings | Metadata cílové datové sady Může to být název souboru, cesta ke složce, název tabulky atd. Tady je příklad. Pokud je zadaná cesta k dynamické složce, proměnná hodnota se sem nezapíše v řídicí tabulce. |
SinkConnectionSettingsName | Název nastavení cílového připojení v tabulce ovládacích prvků připojení. Zadání je volitelné. |
CopySinkSettings | Metadata vlastnosti jímky v aktivitě kopírování Může to být preCopyScript, tableOption atd. Tady je příklad. |
CopyActivitySettings | Metadata vlastnosti translatoru v aktivitě kopírování Slouží k definování mapování sloupců. |
TopLevelPipelineName | Název hlavního kanálu, který může tento objekt zkopírovat. |
TriggerName | Název triggeru, který může aktivovat kanál pro zkopírování tohoto objektu. Pokud se spustí ladění, název je Sandbox. Pokud je ruční spuštění, název je Ruční. Pokud je naplánované spuštění, název je přidruženým názvem triggeru. Může to být zadání více názvů. |
DataLoadingBehaviorSettings | Úplné zatížení vs. rozdílové zatížení. |
Id úkolu | Pořadí objektů, které se mají zkopírovat za TaskId v řídicí tabulce (ORDER BY [TaskId] DESC). Pokud máte obrovské množství objektů, které se mají zkopírovat, ale je povolený pouze omezený souběžný počet zkopírovaných objektů, můžete u každého objektu změnit ID úlohy a rozhodnout, které objekty je možné zkopírovat dříve. Výchozí hodnota je 0. |
CopyEnabled | Určete, jestli je položka povolená v procesu příjmu dat. Povolené hodnoty: 1 (povoleno), 0 (zakázáno). Výchozí hodnota je 1. |
Tabulka ovládacích prvků připojení
Každý řádek v řídicí tabulce obsahuje jedno nastavení připojení pro úložiště dat.
Název sloupce | Popis |
---|---|
Name | Název parametrizovaného připojení v hlavní řídicí tabulce |
ConnectionSettings | Nastavení připojení. Může to být název databáze, název serveru atd. |
Pipelines
Uvidíte, že nástroj pro kopírování dat generuje tři úrovně kanálů.
MetadataDrivenCopyTask_xxx_TopLevel
Tento kanál vypočítá celkový počet objektů (tabulky atd.), které se musí v tomto spuštění zkopírovat, vytvoří se počet sekvenčních dávek na základě maximální povolené úlohy souběžného kopírování a potom spustí jiný kanál, který bude kopírovat různé dávky postupně.
Parametry
Název parametrů | Popis |
---|---|
MaxNumberOfConcurrentTasks | Před spuštěním kanálu můžete vždy změnit maximální počet souběžných aktivit kopírování. Výchozí hodnota bude ta, kterou zadáte v nástroji pro kopírování dat. |
MainControlTableName | Název tabulky hlavní řídicí tabulky. Kanál před spuštěním získá metadata z této tabulky. |
ConnectionControlTableName | Název tabulky tabulky ovládacích prvků připojení (volitelné). Kanál před spuštěním získá metadata související s připojením k úložišti dat. |
MaxNumberOfObjectsReturnedFromLookupActivity | Aby se zabránilo dosažení limitu výstupní aktivity vyhledávání, existuje způsob, jak definovat maximální počet objektů vrácených vyhledávací aktivitou. Ve většině případů není nutné změnit výchozí hodnotu. |
windowStart | Když jako cestu ke složce zadáte dynamickou hodnotu (například yyyy/mm/dd), použije se parametr k předání aktuálního času aktivační události kanálu, aby se vyplnila cesta k dynamické složce. Když se kanál aktivuje triggerem plánu nebo triggerem pro přeskakující okna, uživatelé nemusí zadávat hodnotu tohoto parametru. Ukázková hodnota: 2021-01-25T01:49:28Z |
Aktivity
Název aktivity | Typ aktivity | Popis |
---|---|---|
GetSumOfObjectsToCopy | Vyhledání | Výpočet celkového počtu objektů (tabulek atd.) potřebných ke zkopírování v tomto spuštění. |
CopyBatchesOfObjectsSequenly | ForEach | Vymyslete počet sekvenčních dávek na základě maximálního povoleného počtu souběžných úloh kopírování a pak spusťte další kanál, který bude kopírovat různé dávky postupně. |
CopyObjectsInOneBtach | Spuštění kanálu | Spuštěním jiného kanálu zkopírujte jednu dávku objektů. Objekty patřící do této dávky se zkopírují paralelně. |
střední úroveň MetadataDrivenCopyTask_xxx_
Tento kanál zkopíruje jednu dávku objektů. Objekty patřící do této dávky se zkopírují paralelně.
Parametry
Název parametrů | Popis |
---|---|
MaxNumberOfObjectsReturnedFromLookupActivity | Aby se zabránilo dosažení limitu výstupní aktivity vyhledávání, existuje způsob, jak definovat maximální počet objektů vrácených vyhledávací aktivitou. Ve většině případů není nutné změnit výchozí hodnotu. |
TopLevelPipelineName | Název kanálu nejvyšší vrstvy. |
TriggerName | Název triggeru. |
CurrentSequentialNumberOfBatch | ID sekvenční dávky. |
SumOfObjectsToCopy | Celkový počet objektů, které chcete zkopírovat. |
SumOfObjectsToCopyForCurrentBatch | Počet objektů, které se mají zkopírovat v aktuální dávce. |
MainControlTableName | Název hlavní řídicí tabulky. |
ConnectionControlTableName | Název tabulky ovládacích prvků připojení. |
Aktivity
Název aktivity | Typ aktivity | Popis |
---|---|---|
DivideOneBatchIntoMultipleGroups | ForEach | Rozdělte objekty z jedné dávky do několika paralelních skupin, abyste se vyhnuli dosažení výstupního limitu aktivity vyhledávání. |
GetObjectsPerGroupToCopy | Vyhledání | Získejte objekty (tabulky atd.) z řídicí tabulky, které je potřeba zkopírovat v této skupině. Pořadí objektů, které se mají zkopírovat za TaskId v řídicí tabulce (ORDER BY [TaskId] DESC). |
CopyObjectsInOneGroup | Spuštění kanálu | Spuštěním dalšího kanálu zkopírujte objekty z jedné skupiny. Objekty patřící do této skupiny se zkopírují paralelně. |
MetadataDrivenCopyTask_xxx_ BottomLevel
Tento kanál zkopíruje objekty z jedné skupiny. Objekty patřící do této skupiny se zkopírují paralelně.
Parametry
Název parametrů | Popis |
---|---|
ObjectsPerGroupToCopy | Počet objektů, které se mají kopírovat v aktuální skupině. |
ConnectionControlTableName | Název tabulky ovládacích prvků připojení. |
windowStart | Používá se k předání aktuálního času triggeru kanálu, aby vyplnil cestu k dynamické složce, pokud je nakonfigurovaný uživatelem. |
Aktivity
Název aktivity | Typ aktivity | Popis |
---|---|---|
ListObjectsFromOneGroup | ForEach | Vypíše objekty z jedné skupiny a každý z nich iteruje na podřízené aktivity. |
RouteJobsBasedOnLoadingBehavior | Přepínač | Zkontrolujte chování načítání jednotlivých objektů. Pokud je výchozí případ nebo fullload, proveďte úplné načtení. Pokud se jedná o případ DeltaLoad, proveďte přírůstkové načtení prostřednictvím sloupce meze a identifikujte změny. |
FullLoadOneObject | Kopírovat | Pořiďte na tomto objektu úplný snímek a zkopírujte ho do cíle. |
DeltaLoadOneObject | Kopírovat | Změněná data zkopírujte jenom z posledního okamžiku porovnáním hodnoty ve sloupci vodoznaku a identifikujte změny. |
GetMaxWatermarkValue | Vyhledání | Zadejte dotaz na zdrojový objekt a získejte maximální hodnotu ze sloupce vodoznaku. |
UpdateWatermarkColumnValue | StoreProcedure | Zapište novou hodnotu vodoznaku, aby se příště použila tabulka. |
Známá omezení
- Název prostředí IR, typ databáze, typ formátu souboru nelze parametrizovat v ADF. Pokud například chcete ingestovat data z Oracle Serveru i SQL Serveru, budete potřebovat dva různé parametrizované kanály. Jedinou řídicí tabulku ale můžou sdílet dvě sady kanálů.
- OpenJSON se používá ve generovaných skriptech SQL pomocí nástroje pro kopírování dat. Pokud k hostování řídicí tabulky používáte SQL Server, musí se jednat o SQL Server 2016 (13.x) a novější, aby bylo možné podporovat funkci OPENJSON.
Související obsah
Vyzkoušejte tyto kurzy, které používají nástroj pro kopírování dat: