Sdílet prostřednictvím


Hromadné kopírování z databáze s řídicí tabulkou

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 kopírovat data z datového skladu v Oracle Serveru, Netezza, Teradata nebo SQL Serveru do Azure Synapse Analytics, musíte načíst obrovské objemy dat z více tabulek. Data se obvykle musí rozdělit do jednotlivých tabulek, abyste mohli načíst řádky s více vlákny paralelně z jedné tabulky. Tento článek popisuje šablonu, která se má v těchto scénářích použít.

Poznámka:

Pokud chcete kopírovat data z malého počtu tabulek s relativně malým objemem dat do Azure Synapse Analytics, je efektivnější použít nástroj pro kopírování dat služby Azure Data Factory. Šablona popsaná v tomto článku je víc, než potřebujete pro tento scénář.

O této šabloně řešení

Tato šablona načte seznam oddílů zdrojové databáze pro kopírování z tabulky externích ovládacích prvků. Pak iteruje přes každý oddíl ve zdrojové databázi a zkopíruje data do cíle.

Šablona obsahuje tři aktivity:

  • Vyhledávání načte seznam oddílů databáze z tabulky externích ovládacích prvků.
  • ForEach získá seznam oddílů z aktivity Vyhledávání a iteruje každý oddíl do aktivita Copy.
  • Zkopírujte každý oddíl ze zdrojového úložiště databáze do cílového úložiště.

Šablona definuje následující parametry:

  • Control_Table_Name je tabulka externích ovládacích prvků, ve které je uložen seznam oddílů zdrojové databáze.
  • Control_Table_Schema_PartitionID je název sloupce v tabulce externího ovládacího prvku, ve které jsou uloženy ID každého oddílu. Ujistěte se, že ID oddílu je jedinečné pro každý oddíl ve zdrojové databázi.
  • Control_Table_Schema_SourceTableName je tabulka externích ovládacích prvků, která ukládá názvy jednotlivých tabulek ze zdrojové databáze.
  • Control_Table_Schema_FilterQuery je název sloupce v tabulce externího ovládacího prvku, který ukládá dotaz filtru pro získání dat z každého oddílu ve zdrojové databázi. Pokud jste například rozdělili data podle roku, může být dotaz, který je uložený v každém řádku, podobný příkazu select * ze zdroje dat, kde LastModifytime >= ''2015-01-01 00:00:00'' a LastModifytime <= ''2015-12-31 23:59:59.999''
  • Data_Destination_Folder_Path je cesta, do které se data zkopírují do cílového úložiště (platí, pokud je zvolený cíl "Systém souborů" nebo "Azure Data Lake Storage Gen1").
  • Data_Destination_Container je cesta ke kořenové složce, do které se data zkopírují do cílového úložiště.
  • Data_Destination_Directory je cesta k adresáři v kořenovém adresáři, do kterého se data zkopírují do cílového úložiště.

Poslední tři parametry, které definují cestu v cílovém úložišti, jsou viditelné pouze v případě, že zvolený cíl je úložiště založené na souborech. Pokud jako cílové úložiště zvolíte Azure Synapse Analytics, tyto parametry se nevyžadují. Názvy tabulek a schéma ve službě Azure Synapse Analytics ale musí být stejné jako názvy tabulek ve zdrojové databázi.

Jak používat tuto šablonu řešení

  1. Vytvořte řídicí tabulku v SQL Serveru nebo Azure SQL Database pro uložení seznamu oddílů zdrojové databáze pro hromadné kopírování. V následujícím příkladu je ve zdrojové databázi pět oddílů. Tři oddíly jsou určené pro datasource_table a dva oddíly jsou určené pro project_table. Sloupec LastModifytime slouží k rozdělení dat v tabulce datasource_table ze zdrojové databáze. Dotaz, který se používá ke čtení prvního oddílu, je "select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00' and LastModifytime <= ''2015-12-31 23:59:59.999''' Podobný dotaz můžete použít ke čtení dat z jiných oddílů.

     		Create table ControlTableForTemplate
     		(
     		PartitionID int,
     		SourceTableName  varchar(255),
     		FilterQuery varchar(255)
     		);
    
     		INSERT INTO ControlTableForTemplate
     		(PartitionID, SourceTableName, FilterQuery)
     		VALUES
     		(1, 'datasource_table','select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''),
     		(2, 'datasource_table','select * from datasource_table where LastModifytime >= ''2016-01-01 00:00:00'' and LastModifytime <= ''2016-12-31 23:59:59.999'''),
     		(3, 'datasource_table','select * from datasource_table where LastModifytime >= ''2017-01-01 00:00:00'' and LastModifytime <= ''2017-12-31 23:59:59.999'''),
     		(4, 'project_table','select * from project_table where ID >= 0 and ID < 1000'),
     		(5, 'project_table','select * from project_table where ID >= 1000 and ID < 2000');
    
  2. Přejděte do šablony Hromadné kopírování z databáze . Vytvořte nové připojení k tabulce externího ovládacího prvku, kterou jste vytvořili v kroku 1.

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

  3. Vytvořte nové připojení ke zdrojové databázi, ze které kopírujete data.

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

  4. Vytvořte nové připojení k cílovému úložišti dat, do kterého data kopírujete.

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

  5. Vyberte Použít tuto šablonu.

  6. Zobrazí se kanál, jak je znázorněno v následujícím příkladu:

    Screenshot showing the pipeline.

  7. Vyberte Ladit, zadejte parametry a pak vyberte Dokončit.

    Screenshot showing the Debug button.

  8. Zobrazí se výsledky podobné následujícímu příkladu:

    Screenshot showing the result of the pipeline run.

  9. (Volitelné) Pokud jako cíl dat zvolíte Azure Synapse Analytics, musíte zadat připojení ke službě Azure Blob Storage pro přípravu, jak to vyžaduje Azure Synapse Analytics Polybase. Šablona automaticky vygeneruje cestu kontejneru pro vaše úložiště objektů blob. Zkontrolujte, jestli byl kontejner vytvořen po spuštění kanálu.

    Screenshot showing the Polybase setting.