Kopiera flera tabeller i grupp med hjälp Azure Data Factory i Azure Portal

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Den här självstudien visar hur du kopierar ett antal tabeller från Azure SQL Database till Azure Synapse Analytics. Du kan även använda samma mönster i andra kopieringssituationer. Du kan till exempel kopiera tabeller från SQL Server/Oracle till Azure SQL Database/Azure Synapse Analytics /Azure Blob, kopiera olika sökvägar från Blob till Azure SQL Database tabeller.

Anteckning

Om du inte har använt Azure Data Factory tidigare kan du läsa Introduktion till Azure Data Factory.

Sett på en hög nivå ingår följande steg i självstudierna:

  • Skapa en datafabrik.
  • Skapa Azure SQL Database, Azure Synapse Analytics och Azure Storage länkade tjänster.
  • Skapa Azure SQL Database och Azure Synapse Analytics datauppsättningar.
  • Skapa en pipeline för att leta upp de tabeller som ska kopieras och en annan pipeline för att utföra den faktiska kopieringsåtgärden.
  • Starta en pipelinekörning.
  • Övervaka pipelinen och aktivitetskörningarna.

I den här självstudien används Azure-portalen. Läs mer om att använda andra verktyg/SDK:er för att skapa en datafabrik i Snabbstarter.

Arbetsflödet slutpunkt till slutpunkt

I det här scenariot har du ett antal tabeller i Azure SQL Database som du vill kopiera till Azure Synapse Analytics. Här är den logiska ordningsföljden i arbetsflödet som sker i våra pipelines:

Workflow

  • Den första pipelinen letar rätt på listan med tabeller som ska kopieras till de mottagande datalagren. Du kan istället underhålla en metadatatabell som innehåller alla tabeller som ska kopieras till de mottagande datalagren. Sedan utlöser pipelinen en annan pipeline, som itererar över varje tabell i databasen och utför själva datakopieringen.
  • Den andra pipelinen utför den faktiska kopieringen. Den tar listan med tabeller som en parameter. För varje tabell i listan kopierar du den specifika tabellen i Azure SQL Database till motsvarande tabell i Azure Synapse Analytics med mellanlagring via Blob Storage och PolyBase för bästa prestanda. I det här exemplet skickar den första pipelinen listan med tabeller som värde för parametern.

Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Förutsättningar

  • Azure Storage konto. Azure Storage-kontot används för mellanlagring för Blob Storage i masskopieringsåtgärden.
  • Azure SQL Database. Den här databasen innehåller källdata. Skapa en databas i SQL Database Adventure Works LT-exempeldata genom att följa artikeln Skapa en databas Azure SQL Database databas. I den här självstudien kopieras alla tabeller från den här exempeldatabasen till en Azure Synapse Analytics.
  • Azure Synapse Analytics. Det här datalagret innehåller de data som kopieras från SQL Database. Om du inte har en arbetsyta Azure Synapse Analytics kan du läsa artikeln Kom igång med Azure Synapse Analytics steg för att skapa en.

Azure-tjänster för åtkomst till SQL-servern

För både SQL Database och Azure Synapse Analytics tillåter du att Azure-tjänster får åtkomst SQL server. Se till att Tillåt Azure-tjänster och resurser att komma åt den här serverinställningen är aktiverat för servern. Med den här inställningen kan Data Factory tjänsten läsa data från Azure SQL Database och skriva data till Azure Synapse Analytics.

Om du vill verifiera och aktivera den här inställningen går du till servern > Security > Firewalls and virtual networks (Brandväggar och virtuella nätverk för >) och anger Tillåt Azure-tjänster och -resurser att få åtkomst till den här servern till PÅ.

Skapa en datafabrik

  1. Starta webbläsaren Microsoft Edge eller Google Chrome. Användargränssnittet för Data Factory stöds för närvarande bara i webbläsarna Microsoft Edge och Google Chrome.

  2. Gå till Azure-portalen.

  3. Till vänster om menyn Azure Portal väljer du Skapa en resursintegrering > Data Factory > .

    Data Factory i fönstret " " Nytt

  4. På sidan Ny datafabrik anger du ADFTutorialBulkCopyDF som namn.

    Namnet på Azure-datafabriken måste vara globalt unikt. Om följande fel visas för namnfältet ändrar du namnet på datafabriken (till exempel dittnamnADFTutorialBulkCopyDF). Se artikeln Data Factory – namnregler för namnregler för Data Factory-artefakter.

    Data factory name "ADFTutorialBulkCopyDF" is not available
    
  5. Välj den Azure-prenumeration som du vill skapa den nya datafabriken i.

  6. För resursgruppen utför du något av följande steg:

  7. Välj V2 för versionen.

  8. Välj plats för datafabriken. Om du vill se en lista med Azure-regioner där Data Factory är tillgängligt för närvarande markerar du de regioner du är intresserad av på följande sida. Expandera sedan Analytics och leta rätt på Data Factory: Tillgängliga produkter per region. Datalagren (Azure Storage, Azure SQL Database osv.) och beräkningarna (HDInsight osv.) som används i Data Factory kan finnas i andra regioner.

  9. Klicka på Skapa.

  10. När du har skapat den väljer du Gå till resurs för att gå Data Factory sidan.

  11. Välj Öppnapanelen Öppna Azure Data Factory Studio för att starta Data Factory användargränssnittsprogrammet på en separat flik.

Skapa länkade tjänster

Du kan skapa länkade tjänster för att länka dina datalager och beräkna till en datafabrik. En länkad tjänst har anslutningsinformationen som Data Factory-tjänsten använder för att ansluta till datalagret i körningsfasen.

I den här självstudien länkar du Azure SQL Database, Azure Synapse Analytics och Azure Blob Storage datalager till din datafabrik. Azure SQL Database är källdatalagret. Den Azure Synapse Analytics är datalagret för mottagare/mål. Azure Blob Storage mellanlagring av data innan data läses in i Azure Synapse Analytics med hjälp av PolyBase.

Skapa den länkade tjänsten för Azure SQL Database-källan

I det här steget skapar du en länkad tjänst för att länka databasen Azure SQL Database till datafabriken.

  1. Öppna fliken Hantera i det vänstra fönstret.

  2. På sidan Länkade tjänster väljer du +Ny för att skapa en ny länkad tjänst.

    Ny länkad tjänst.

  3. I fönstret New Linked Service (Ny länkad tjänst) väljer du Azure SQL Database och klickar på Fortsätt.

  4. I fönstret New Linked Service (Azure SQL Database) (Ny länkad tjänst (Azure SQL Database) gör du följande:

    a. Ange AzureSqlDatabaseLinkedService som namn.

    b. Välj din server som servernamn

    c. Välj din databas för Databasnamn.

    d. Ange namnet på användaren som ska ansluta till databasen.

    e. Ange lösenord för användaren.

    f. Testa anslutningen till databasen med den angivna informationen genom att klicka på Testa anslutning.

    ex. Klicka på Skapa för att spara den länkade tjänsten.

Skapa mottagaren Azure Synapse Analytics länkad tjänst

  1. På fliken Anslutningar klickar du på + Ny på verktygsfältet igen.

  2. I fönstret New Linked Service (Ny länkad tjänst) väljer Azure Synapse Analytics och klickar på Fortsätt.

  3. I fönstret New Linked Service (Azure Synapse Analytics) (Ny länkad tjänst (Azure Synapse Analytics) gör du följande:

    a. Ange AzureSqlDWLinkedService som namn.

    b. Välj din server som servernamn

    c. Välj din databas som databasnamn.

    d. Ange Användarnamn för att ansluta till databasen.

    e. Ange användarens lösenord.

    f. Om du vill testa anslutningen till databasen med den angivna informationen klickar du på Testa anslutning.

    ex. Klicka på Skapa.

Skapa den länkade tjänsten för Azure Storage-mellanlagringen

I den här självstudien använder du Azure Blob Storage som ett mellanlagringsutrymme så att PolyBase aktiveras och ger kopieringen bättre prestanda.

  1. På fliken Anslutningar klickar du på + Ny på verktygsfältet igen.

  2. I fönstret New Linked Service (Ny länkad tjänst) väljer du Azure Blob Storage och klickar på Fortsätt.

  3. I fönstret New Linked Service (Azure Blob Storage) (Ny länkad tjänst (Azure Blob Storage) gör du följande:

    a. Ange AzureStorageLinkedService som namn.
    b. Välj ditt Azure-lagringskonto som Lagringskontonamn.

    c. Klicka på Skapa.

Skapa datauppsättningar

I den här självstudien skapar du datauppsättningar för källa och mottagare som anger var data lagras.

Datauppsättningen för indata AzureSqlDatabaseDataset refererar till AzureSqlDatabaseLinkedService. Den länkade tjänsten anger anslutningssträngen för att ansluta till databasen. Datauppsättningen anger namnet på databasen och tabellen som innehåller källdata.

Datauppsättningen för utdata AzureSqlDWDataset refererar till AzureSqlDWLinkedService. Den länkade tjänsten anger anslutningssträngen för att ansluta till Azure Synapse Analytics. Datauppsättningen anger databasen och tabellen som data kopieras till.

I den här självstudien är käll- och måltabellerna i SQL inte hårdkodade i definitionen för datauppsättningen. Istället skickar ForEach-aktiviteten tabellens namn under körningsfasen till kopieringsaktiviteten.

Skapa en datauppsättning för SQL Database-källan

  1. Välj fliken Författare i det vänstra fönstret.

  2. Välj + (plus) i den vänstra rutan och välj sedan Datauppsättning.

    Menyn Ny datauppsättning

  3. I fönstret Ny datauppsättning väljer du Azure SQL Database och klickar sedan på Fortsätt.

  4. I fönstret Ange egenskaper går du till Namn och anger AzureSqlDatabaseDataset. Under Länkad tjänst väljer du AzureSqlDatabaseLinkedService. Klicka sedan på OK.

  5. Växla till fliken Anslutning och välj valfri tabell för Tabell. Den här tabellen är en dummytabell. Du anger en fråga för källdatauppsättningen när du skapar en pipeline. Frågan används för att extrahera data från databasen. Du kan också klicka på kryssrutan Redigera och ange dbo.dummyName som tabellnamn.

Skapa en datauppsättning för Azure Synapse Analytics

  1. Klicka på + (plus) i den vänstra rutan och sedan på Datauppsättning.

  2. I fönstret Ny datauppsättning väljer du Azure Synapse Analytics och klickar sedan på Fortsätt.

  3. I fönstret Ange egenskaper går du till Namn och anger AzureSqlDWDataset. Under Länkad tjänst väljer du AzureSqlDWLinkedService. Klicka sedan på OK.

  4. Byt till fliken Parametrar, klicka på + Ny och ange DWTableName som parameternamn. Klicka på + Ny igen och ange DWSchema som parameternamn. Om du kopierar/klistrar in det här namnet från sidan ser du till att det inte finns något avslutande blanksteg i slutet av DWTableName och DWSchema.

  5. Växla till fliken Anslutningar.

    1. För Tabell markerar du alternativet Redigera. Välj i den första indatarutan och klicka på länken Lägg till dynamiskt innehåll nedan. På sidan Lägg till dynamiskt innehåll klickar du på DWSchema under Parametrar, som automatiskt fyller i textrutan för det översta uttrycket och klickar sedan @dataset().DWSchemaSlutför.

      Tabellnamn för datauppsättningsanslutning

    2. Välj i den andra indatarutan och klicka på länken Lägg till dynamiskt innehåll nedan. På sidan Lägg till dynamiskt innehåll klickar du på DWTAbleName under Parametrar, som automatiskt fyller i textrutan för det översta uttrycket och klickar sedan @dataset().DWTableNameSlutför.

    3. Egenskapen tableName för datauppsättningen är inställd på de värden som skickas som argument för parametrarna DWSchema och DWTableName. ForEach-aktiviteten itereras via en lista över tabeller och skickar en i taget till kopieringsaktiviteten.

Skapa pipelines

I den här självstudien skapar du två pipeliner: IterateAndCopySQLTables och GetTableListAndTriggerCopyData.

Pipelinen GetTableListAndTriggerCopyData utför två åtgärder:

  • Den söker i Azure SQL Database-systemtabellen för att få fram listan med tabeller som ska kopieras
  • Utlöser pipelinen IterateAndCopySQLTables för att göra den faktiska datakopian.

IterateAndCopySQLTables-pipelinen tar en lista med tabeller som en parameter. För varje tabell i listan kopieras data från tabellen i Azure SQL Database till Azure Synapse Analytics med mellanstegskopiering och PolyBase.

Skapa pipelinen IterateAndCopySQLTables

  1. I den vänstra rutan klickar du på + (plus) och sedan på Pipeline.

    Meny för ny pipeline

  2. I panelen Allmänt under Egenskaper anger du IterateAndCopySQLTables som namn. Dölj sedan panelen genom att klicka på egenskapsikonen i det övre högra hörnet.

  3. Växla till fliken Parametrar och gör följande:

    a. Klicka på + Ny.

    b. Ange tableList som parameternamn.

    c. Välj Matris för Typ.

  4. I verktygslådan Aktiviteter expanderar du Iteration & Conditions (Iteration och villkor) och drar och släpper aktiviteten ForEach till pipelinedesignytan. Du kan också söka efter aktiviteter i verktygslådan Aktiviteter.

    a. I fliken Allmänt längst ned skriver du IterateSQLTables för Namn.

    b. Växla till fliken Inställningar, klicka på inmatningsrutan för Objekt och klicka sedan på länken Lägg till dynamiskt innehåll nedan.

    c. På sidan Lägg till dynamiskt innehåll döljer du avsnitten Systemvariabler och Funktioner och klickar på tableList under Parametrar, som automatiskt fyller i textrutan för det översta uttrycket som @pipeline().parameter.tableList . Klicka sedan på Slutför.

    Byggare för parametern Foreach

    d. Växla till fliken Aktiviteter och klicka på pennikonen för att lägga till en underordnad aktivitet i ForEach-aktiviteten.

    Foreach-aktivitetsbyggare

  5. I verktygslådan Aktiviteter expanderar du Flytta & Överför och drar och släpper aktiviteten Kopiera data till pipelinedesignytan. Lägg märke till adressfältmenyn längst upp. IterateAndCopySQLTable är pipelinenamnet och IterateSQLTables är ForEach-aktivitetsnamnet. Designern är i aktivitetsomfånget. Om du vill växla tillbaka till pipelineredigeraren från ForEach-redigeraren kan du klicka på länken i menyn för dynamiska sökvägar.

    Kopiera i ForEach

  6. Växla till fliken Källa och gör följande:

    1. Välj AzureSqlDatabaseDataset för källdatauppsättning.

    2. Välj frågealternativet för Använd fråga.

    3. Klicka på textrutan Fråga -> välj Lägg till dynamiskt innehåll nedan -> ange följande uttryck för Fråga -> välj Slutför.

      SELECT * FROM [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]
      
  7. Växla till fliken Mottagare och gör följande:

    1. Välj AzureSqlDWDataset för Sink Dataset (Datauppsättning för mottagare).

    2. Klicka på inmatningsrutan för VÄRDET för DWTableName-parametern -> välj Lägg till dynamiskt innehåll nedan, ange uttryck som @item().TABLE_NAME skript, -> välj Slutför.

    3. Klicka på inmatningsrutan för parametern VALUE för DWSchema -> välj Lägg till dynamiskt innehåll nedan, ange uttryck som @item().TABLE_SCHEMA skript, -> välj Slutför.

    4. För Kopiera metod väljer du PolyBase.

    5. Avmarkera alternativet Använd standardtyp.

    6. För tabellalternativet är standardinställningen "Ingen". Om du inte har tabeller som har skapats i förväg i mottagaren Azure Synapse Analytics aktiverar du alternativet Skapa tabell automatiskt. Kopieringsaktiviteten skapar sedan automatiskt tabeller åt dig baserat på källdata. Mer information finns i Skapa tabeller för mottagare automatiskt.

    7. Klicka på textrutan Pre-copy Script (Förkopieringsskript) -> välj Lägg till dynamiskt innehåll nedan -> ange följande uttryck för Fråga -> välj Slutför.

      IF EXISTS (SELECT * FROM [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]) TRUNCATE TABLE [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]
      

      Inställningar för att kopiera mottagare

  8. Växla till fliken Inställningar och gör följande:

    1. Markera kryssrutan för Enable Staging (Aktivera mellanlagring).
    2. Välj AzureStorageLinkedService för Store Account Linked Service (Länkad tjänst för lagringskonto).
  9. Verifiera pipelineinställningarna genom att klicka på Verifiera i verktygsfältet för pipelinen. Kontrollera att det inte finns något valideringsfel. Stäng pipelinevalideringsrapporten genom att klicka på de dubbla vinkelparenteserna >> .

Skapa pipelinen GetTableListAndTriggerCopyData

Den här pipelinen gör två åtgärder:

  • Den söker i Azure SQL Database-systemtabellen för att få fram listan med tabeller som ska kopieras
  • den utlöser pipelinen ”IterateAndCopySQLTables” för att utföra den faktiska kopieringen.

Här är stegen för att skapa pipelinen:

  1. I den vänstra rutan klickar du på + (plus) och sedan på Pipeline.

  2. På panelen Allmänt under Egenskaper ändrar du namnet på pipelinen till GetTableListAndTriggerCopyData.

  3. I verktygslådan Aktiviteter expanderar du Allmänt och drar och släpper sökningsaktiviteten till pipelinedesignytan och gör följande:

    1. Skriv LookupTableList som namn.
    2. Ange Hämta tabelllistan från min databas som Beskrivning.
  4. Växla till fliken Inställningar och gör följande:

    1. Välj AzureSqlDatabaseDataset för källdatauppsättning.

    2. Välj Fråga för Använd fråga.

    3. Ange följande SQL-fråga för Fråga.

      SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE = 'BASE TABLE' and TABLE_SCHEMA = 'SalesLT' and TABLE_NAME <> 'ProductModel'
      
    4. Avmarkera kryssrutan för fältet First row only (Endast första raden).

      Sökningsaktivitet – inställningssida

  5. Dra och släpp Aktiviteten Kör pipeline från verktygslådan Aktiviteter till pipelinedesignytan och ställ in namnet på TriggerCopy.

  6. Om Anslut till aktiviteten Kör pipeline drar du den gröna rutan som är kopplad till sökningsaktiviteten till vänster om aktiviteten Execute Pipeline.

    Ansluta kopierings- och Kör pipeline-aktiviteter

  7. Växla till fliken Inställningar kör pipeline-aktivitet och gör följande:

    1. Välj IterateAndCopySQLTables som Invoked pipeline (Anropad pipeline).

    2. Avmarkera kryssrutan för Vänta vid slutförande.

    3. I avsnittet Parametrar klickar du på inmatningsrutan under VALUE -> och väljer Lägg till dynamiskt innehåll under -> ange som @activity('LookupTableList').output.value tabellnamnsvärde -> välj Slutför. Du anger resultatlistan från sökningsaktiviteten som indata till den andra pipelinen. Resultatlistan innehåller listan över tabeller vars data ska kopieras till målet.

      Kör pipeline-aktivitet – sidan inställningar

  8. Verifiera pipelinen genom att klicka på Verifiera i verktygsfältet. Kontrollera att det inte finns några verifieringsfel. Om du vill stänga verifieringsrapporten för pipeline klickar du på >>.

  9. Om du vill publicera entiteter (datauppsättningar, pipeliner osv.) till Data Factory-tjänsten klickar du på Publicera alla överst i fönstret. Vänta tills publiceringen har lyckats.

Utlösa en pipelinekörning

  1. Gå till pipelinen GetTableListAndTriggerCopyData, klicka på Lägg till utlösare i det översta pipeline-verktygsfältet och klicka sedan på Trigger now (Utlöst nu).

  2. Bekräfta körningen på sidan Pipelinekörning och välj sedan Slutför.

Övervaka pipelinekörningen

  1. Växla till fliken Övervaka. Klicka Uppdatera tills du ser körningar för båda pipelines i din lösning. Fortsätt att uppdatera listan tills du ser statusen Lyckades.

  2. Om du vill visa aktivitetskörningar som är associerade med pipelinen GetTableListAndTriggerCopyData klickar du på pipelinenamnlänken för pipelinen. Du ska se två aktivitetskörningar för den här pipelinekörningen. Övervaka pipelinekörning

  3. Om du vill visa utdata för sökningsaktiviteten klickar du på länken Utdata bredvid aktiviteten under kolumnen AKTIVITETSNAMN. Du kan maximera och återställa fönstret Utdata. Stäng fönstret Utdata när du har sett klart genom att klicka på X.

    {
        "count": 9,
        "value": [
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "Customer"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "ProductDescription"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "Product"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "ProductModelProductDescription"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "ProductCategory"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "Address"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "CustomerAddress"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "SalesOrderDetail"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "SalesOrderHeader"
            }
        ],
        "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (East US)",
        "effectiveIntegrationRuntimes": [
            {
                "name": "DefaultIntegrationRuntime",
                "type": "Managed",
                "location": "East US",
                "billedDuration": 0,
                "nodes": null
            }
        ]
    }
    
  4. Om du vill växla tillbaka till vyn Pipeline Runs (Pipelinekörningar) klickar du på länken All Pipeline runs (Alla pipelinekörningar) längst upp på den dynamiska menyn. Klicka på iterateAndCopySQLTables-länken (under kolumnen PIPELINENAMN) för att visa aktivitetskörningar av pipelinen. Observera att det finns en kopieringsaktivitetskörning för varje tabell i uppslagsaktivitetens utdata.

  5. Bekräfta att data har kopierats till målvärdet Azure Synapse Analytics du använde i den här självstudien.

Nästa steg

I den här självstudiekursen fick du:

  • Skapa en datafabrik.
  • Skapa Azure SQL Database, Azure Synapse Analytics och Azure Storage länkade tjänster.
  • Skapa Azure SQL Database och Azure Synapse Analytics datauppsättningar.
  • Skapa en pipeline för sökning av de tabeller som ska kopieras och en annan pipeline för den faktiska kopieringsåtgärden.
  • Starta en pipelinekörning.
  • Övervaka pipelinen och aktivitetskörningarna.

Fortsätt till följande självstudiekurs om du vill lära dig att kopiera data stegvis från en källa till ett mål: