Kopiera flera tabeller i grupp med hjälp av Azure Data Factory i Azure-portalen

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!

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 och kopiera olika sökvägar från Blob till Azure SQL Database-tabeller.

Kommentar

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 länkade 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.

I den här självstudien används Azure Portal. 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 mellanlagrad kopia 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 skapar du 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 med Adventure Works LT-exempeldata efter artikeln Skapa en databas i Azure SQL Database . Den här självstudien kopierar 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 någon Azure Synapse Analytics-arbetsyta kan du läsa artikeln Kom igång med Azure Synapse Analytics för 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 till SQL Server. Se till att Tillåt Att Azure-tjänster och resurser får åtkomst till den här serverinställningen är aktiverade för servern. Med den här inställningen kan Data Factory-tjänsten läsa data från din 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 serverns > säkerhetsbrandväggar > och virtuella nätverk > och ställer in Tillåt Att Azure-tjänster och -resurser får åtkomst till den här servern till .

Skapa en datafabrik

  1. Starta webbläsaren Microsoft Edge eller Google Chrome. Just nu är det bara webbläsarna Microsoft Edge och Google Chrome som har stöd för Data Factory UI.

  2. Gå till Azure-portalen.

  3. Till vänster på Menyn i Azure-portalen väljer du Skapa en resurs>Integration>Data Factory.

    Data Factory selection in the "New" pane

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

    Namnet på Azure Data Factory 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 skapandet är klart väljer du Gå till resurs för att navigera till sidan Data Factory .

  11. Välj Öppna på panelen Öppna Azure Data Factory Studio för att starta Data Factory-användargränssnittet 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 dina Azure SQL Database-, Azure Synapse Analytics- och Azure Blob Storage-datalager till din datafabrik. Azure SQL Database är källdatalagret. Azure Synapse Analytics är datalagret för mottagare/mål. Azure Blob Storage ska mellanlagra 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 i 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 +Nytt för att skapa en ny länkad tjänst.

    New linked service.

  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 Ny länkad tjänst (Azure SQL Database) gör du följande:

    a. Ange AzureSqlDatabaseLinkedService som namn.

    b. Välj servern som Servernamn

    c. Välj databasen som databasnamn.

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

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

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

    g. Spara den länkade tjänsten genom att klicka på Skapa .

Skapa den länkade azure Synapse Analytics-tjänsten för mottagare

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

  2. I fönstret Ny länkad tjänst väljer du Azure Synapse Analytics och klickar på Fortsätt.

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

    a. Ange AzureSqlDWLinkedService som namn.

    b. Välj servern som Servernamn

    c. Välj databasen som databasnamn.

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

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

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

    g. 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 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äng 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.

    New dataset menu

  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 under Namn anger du AzureSqlDatabaseDataset. Under Länkad tjänst väljer du AzureSqlDatabaseLinkedService. Klicka sedan på OK.

  5. Växla till fliken Anslut ion 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 för mottagare

  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 under Namn anger du 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 kontrollerar du att det inte finns något avslutande blankstegstecken i slutet av DWTableName och DWSchema.

  5. Växla till fliken Anslutningar.

    1. För Tabell kontrollerar du alternativet Redigera . Välj i den första inmatningsrutan 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 @dataset().DWSchemaför det översta uttrycket och klickar sedan på Slutför.

      Dataset connection tablename

    2. Välj i den andra inmatningsrutan 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 @dataset().DWTableNameför det översta uttrycket och klickar sedan på Slutfö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
  • Den utlöser pipelinen IterateAndCopySQLTables för att utföra den faktiska datakopieringen.

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

Skapa pipelinen IterateAndCopySQLTables

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

    New pipeline menu

  2. I panelen Allmänt under Egenskaper anger du IterateAndCopySQLTables som Namn. Dölj sedan panelen genom att klicka på ikonen Egenskaper 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å indatarutan 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, klickar på tableList under Parametrar, som automatiskt fyller i textrutan för det översta uttrycket som @pipeline().parameter.tableList. Klicka sedan på Slutför.

    Foreach parameter builder

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

    Foreach activity builder

  5. I verktygslådan Aktiviteter expanderar du Flytta och överför och drar och släpper kopieringsdataaktiviteten till pipelinedesignytan. Lägg märke till adressfältmenyn längst upp. IterateAndCopySQLTable är pipelinenamnet och IterateSQLTables är Namnet på ForEach-aktiviteten. 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 breadcrumb.

    Copy in 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ågealternativ för Använd fråga.

    3. Klicka på rutan Frågeinmatning –> 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å indatarutan för parametern VALUE för DWTableName –> välj Lägg till dynamiskt innehåll nedan, ange @item().TABLE_NAME uttryck som skript och> välj Slutför.

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

    4. Som Kopieringsmetod väljer du PolyBase.

    5. Avmarkera standardalternativet Använd typ.

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

    7. Klicka på rutan Förkopiera skriptindata –> välj Lägg till dynamiskt innehåll nedan –> ange följande uttryck som skript –> välj Slutför.

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

      Copy sink settings

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

    1. Markera kryssrutan för 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 verifieringsfel. Om du vill stänga pipelineverifieringsrapporten klickar du på hakparenteserna >>med dubbel vinkel .

Skapa pipelinen GetTableListAndTriggerCopyData

Den här pipelinen utfö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. I panelen Allmänt under Egenskaper ändrar du namnet på pipelinen till GetTableListAndTriggerCopyData.

  3. I verktygslådan Aktiviteter expanderar du Aktiviteten Allmänt och dra och släpp uppslag till pipelinedesignytan och utför följande steg:

    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).

      Lookup activity - settings page

  5. Dra och släpp aktiviteten Kör pipeline från verktygslådan Aktiviteter till pipelinedesignerns yta och ange namnet till TriggerCopy.

  6. Om du vill Anslut uppslagsaktivitetentill aktiviteten Kör pipeline drar du den gröna rutan som är kopplad till uppslagsaktiviteten till vänster om Aktiviteten Kör pipeline.

    Connect Lookup and Execute Pipeline activities

  7. Växla till fliken Inställningar i Aktiviteten Kör pipeline 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å indatarutan under VÄRDE –> välj Lägg till dynamiskt innehåll nedan –> ange @activity('LookupTableList').output.value som tabellnamnvärde –> välj Slutför. Du ställer in resultatlistan från uppslagsaktiviteten som indata till den andra pipelinen. Resultatlistan innehåller listan över tabeller vars data ska kopieras till målet.

      Execute pipeline activity - settings page

  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, pipelines osv.) till Data Factory-tjänsten klickar du på Publicera alla överst i fönstret. Vänta tills publiceringen har lyckats.

Utlös en pipelinekörning

  1. Gå till pipelinen GetTableListAndTriggerCopyData, klicka på Lägg till utlösare i det översta pipelineverktygsfältet och klicka sedan på Utlösare 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 på Uppdatera tills du ser körningar för båda pipelinerna 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å pipelinens namnlänk för pipelinen. Du ska se två aktivitetskörningar för den här pipelinekörningen. Monitor Pipeline run

  3. Om du vill visa utdata för uppslagsaktiviteten 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 Pipelinekörningar klickar du på länken Alla pipelinekörningar överst på menyn breadcrumb. Klicka på länken IterateAndCopySQLTables (under kolumnen PIPELINE NAME ) för att visa aktivitetskörningar för pipelinen. Observera att det finns en kopieringsaktivitetskörning för varje tabell i uppslagsaktivitetens utdata.

  5. Bekräfta att data kopierades till den Azure Synapse Analytics-målanalys som du använde i den här självstudien.

I den här självstudiekursen fick du:

  • Skapa en datafabrik.
  • Skapa länkade 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: