Dela via


Masskopiering från en databas med en kontrolltabell

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!

Om du vill kopiera data från ett informationslager i Oracle Server, Netezza, Teradata eller SQL Server till Azure Synapse Analytics måste du läsa in enorma mängder data från flera tabeller. Vanligtvis måste data partitioneras i varje tabell så att du kan läsa in rader med flera trådar parallellt från en enda tabell. I den här artikeln beskrivs en mall som ska användas i dessa scenarier.

Kommentar

Om du vill kopiera data från ett litet antal tabeller med relativt liten datavolym till Azure Synapse Analytics är det mer effektivt att använda verktyget Azure Data Factory Copy Data. Mallen som beskrivs i den här artikeln är mer än du behöver för det scenariot.

Om den här lösningsmallen

Den här mallen hämtar en lista över källdatabaspartitioner som ska kopieras från en extern kontrolltabell. Sedan itererar den över varje partition i källdatabasen och kopierar data till målet.

Mallen innehåller tre aktiviteter:

  • Sökningen hämtar listan över säkra databaspartitioner från en extern kontrolltabell.
  • ForEach hämtar partitionslistan från sökningsaktiviteten och itererar varje partition till kopieringsaktiviteten.
  • Kopierar varje partition från källdatabasarkivet till målarkivet.

Mallen definierar följande parametrar:

  • Control_Table_Name är den externa kontrolltabellen som lagrar partitionslistan för källdatabasen.
  • Control_Table_Schema_PartitionID är namnet på kolumnnamnet i den externa kontrolltabellen som lagrar varje partitions-ID. Kontrollera att partitions-ID:t är unikt för varje partition i källdatabasen.
  • Control_Table_Schema_SourceTableName är den externa kontrolltabellen som lagrar varje tabellnamn från källdatabasen.
  • Control_Table_Schema_FilterQuery är namnet på kolumnen i den externa kontrolltabellen som lagrar filterfrågan för att hämta data från varje partition i källdatabasen. Om du till exempel partitionerade data per år kan frågan som lagras på varje rad likna "select * from datasource where LastModifytime >= ''2015-01-01 00:00:00'' och LastModifytime <= ''2015-12-31 23:59:59.999'''
  • Data_Destination_Folder_Path är sökvägen där data kopieras till målarkivet (gäller när målet som du väljer är "Filsystem" eller "Azure Data Lake Storage Gen1").
  • Data_Destination_Container är sökvägen till rotmappen där data kopieras till i målarkivet.
  • Data_Destination_Directory är katalogsökvägen under roten där data kopieras till målarkivet.

De tre sista parametrarna, som definierar sökvägen i målarkivet, visas bara om målet som du väljer är filbaserad lagring. Om du väljer "Azure Synapse Analytics" som målarkiv krävs inte dessa parametrar. Men tabellnamnen och schemat i Azure Synapse Analytics måste vara samma som i källdatabasen.

Så här använder du den här lösningsmallen

  1. Skapa en kontrolltabell i SQL Server eller Azure SQL Database för att lagra källdatabaspartitionslistan för masskopiering. I följande exempel finns det fem partitioner i källdatabasen. Tre partitioner är för datasource_table och två är för project_table. Kolumnen LastModifytime används för att partitionera data i tabellen datasource_table från källdatabasen. Frågan som används för att läsa den första partitionen är "select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' och LastModifytime <= ''2015-12-31 23:59:59.999'' Du kan använda en liknande fråga för att läsa data från andra partitioner.

     		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. Gå till mallen Masskopiering från databas . Skapa en ny anslutning till den externa kontrolltabellen som du skapade i steg 1.

    Skärmbild som visar skapandet av en ny anslutning till kontrolltabellen.

  3. Skapa en ny anslutning till källdatabasen som du kopierar data från.

    Skärmbild som visar skapandet av en ny anslutning till källdatabasen.

  4. Skapa en ny anslutning till måldatalagret som du kopierar data till.

    Skärmbild som visar skapandet av en ny anslutning till målarkivet.

  5. Välj Använd denna mall.

  6. Du ser pipelinen, som du ser i följande exempel:

    Skärmbild som visar pipelinen.

  7. Välj Felsök, ange Parametrar och välj sedan Slutför.

    Skärmbild som visar knappen Felsök.

  8. Du ser resultat som liknar följande exempel:

    Skärmbild som visar resultatet av pipelinekörningen.

  9. (Valfritt) Om du väljer "Azure Synapse Analytics" som datamål måste du ange en anslutning till Azure Blob Storage för mellanlagring, vilket krävs av Azure Synapse Analytics Polybase. Mallen genererar automatiskt en containersökväg för bloblagringen. Kontrollera om containern har skapats efter pipelinekörningen.

    Skärmbild som visar polybase-inställningen.