Dela via


Snabbstart: Skapa en Azure Data Factory med PowerShell

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 snabbstarten beskriver hur du använder PowerShell för att skapa en Azure Data Factory. Den pipeline du skapar i den här datafabriken kopierar data från en mapp till en annan mapp i Azure Blob Storage. Om du vill se en självstudie som visar hur du omvandlar data med Azure Data Factory går du till Tutorial: Transform data using Spark (Självstudie: Omvandla data med Spark).

Kommentar

Den här artikeln ger inte någon detaljerad introduktion till Azure Data Factory-tjänsten. En introduktion till Azure Data Factory-tjänsten finns i Introduktion till Azure Data Factory.

Förutsättningar

Azure-prenumeration

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

Azure-roller

Om du vill skapa Data Factory-instanser måste det användarkonto du använder för att logga in på Azure vara medlem av rollerna deltagare eller ägare, eller vara administratör för Azure-prenumerationen. Om du vill visa de behörigheter som du har i prenumerationen går du till Azure-portalen, väljer ditt användarnamn i det övre högra hörnet, väljer ikonen "..." för fler alternativ och väljer sedan Mina behörigheter. Om du har åtkomst till flera prenumerationer väljer du rätt prenumeration.

För att skapa och hantera underordnade resurser för Data Factory – inklusive datauppsättningar, länkade tjänster, pipelines, utlösare och integreringskörningar – gäller följande krav:

  • För att kunna skapa och hantera underordnade resurser i Azure-portalen måste du tillhöra rollen Data Factory-deltagare på resursgruppsnivå eller högre.
  • För att skapa och hantera underordnade resurser med PowerShell eller SDK räcker det att du har rollen som deltagare på resursnivå eller högre.

För exempel på instruktioner om hur du lägger till en användare till en roll läser du artikeln Lägg till roller.

Mer information finns i följande artiklar:

Azure-lagringskonto

Du använder ett Allmänt Azure Storage-konto (särskilt Blob Storage) som både käll - och måldatalager i den här snabbstarten. Om du inte har något allmänt Azure Storage-konto kan du läsa Skapa ett lagringskonto för att skapa ett.

Hämta namnet på lagringskontot

Du behöver namnet på ditt Azure Storage-konto för den här snabbstarten. Följande procedur innehåller steg för att hämta namnet på ditt lagringskonto:

  1. I en webbläsare går du till Azure-portalen och loggar in med ditt Användarnamn och lösenord för Azure.
  2. På Menyn i Azure-portalen väljer du Alla tjänster och sedan Lagringslagringskonton>. Du kan också söka efter och välja Lagringskonton från valfri sida.
  3. På sidan Lagringskonton filtrerar du efter ditt lagringskonto (om det behövs) och väljer sedan ditt lagringskonto.

Du kan också söka efter och välja Lagringskonton från valfri sida.

Skapa en blobcontainer

I det här avsnittet skapar du en blobcontainer med namnet adftutorial i Azure Blob Storage.

  1. På sidan lagringskonto väljer du Översiktscontainrar>.

  2. I verktygsfältet För kontonamncontainrar - > väljer du Container.<

  3. I dialogrutan Ny container anger du adftutorial som namn och väljer OK. Sidan Containrar för kontonamn - >uppdateras så att den innehåller adftutorial i listan över containrar.<

    Lista över behållare

Lägga till en indatamapp och fil för blobcontainern

I det här avsnittet skapar du en mapp med namnet input i containern som du skapade och laddar sedan upp en exempelfil till indatamappen. Innan du börjar öppnar du en textredigerare, till exempel Anteckningar, och skapar en fil med namnet emp.txt med följande innehåll:

John, Doe
Jane, Doe

Spara filen i mappen C:\ADFv2QuickStartPSH . (Om mappen inte redan finns skapar du den.) Gå sedan tillbaka till Azure-portalen och följ dessa steg:

  1. På sidan Kontonamncontainrar - > där du slutade väljer du adftutorial i den uppdaterade listan med containrar.<

    1. Om du stängde fönstret eller gick till en annan sida loggar du in på Azure-portalen igen.
    2. På Menyn i Azure-portalen väljer du Alla tjänster och sedan Lagringslagringskonton>. Du kan också söka efter och välja Lagringskonton från valfri sida.
    3. Välj ditt lagringskonto och välj sedan Containrar>adftutorial.
  2. I verktygsfältet för containersidan adftutorial väljer du Ladda upp.

  3. På sidan Ladda upp blob väljer du rutan Filer och bläddrar sedan till och väljer filen emp.txt .

  4. Expandera rubriken Avancerat . Sidan visas nu som den visas:

    Välj länken Avancerat

  5. I rutan Ladda upp till mapp anger du indata.

  6. Välj knappen Ladda upp. Du bör se filen emp.txt och uppladdningens status i listan.

  7. Välj ikonen Stäng (ett X) för att stänga sidan Ladda upp blob.

Håll sidan adftutorial container öppen. Du kommer att använda den för att bekräfta utdata i slutet av snabbstarten.

Azure PowerShell

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Installera de senaste Azure PowerShell-modulerna enligt instruktionerna i Installera och konfigurera Azure PowerShell.

Varning

Om du inte använder de senaste versionerna av PowerShell- och Data Factory-modulen kan du stöta på deserialiseringsfel när du kör kommandona.

Logga in på PowerShell

  1. Starta PowerShell på din dator. Låt PowerShell vara öppet tills du är klar med snabbstarten. Om du stänger och öppnar det igen måste du köra kommandona en gång till.

  2. Kör följande kommando och ange användarnamnet och lösenordet som du använder för att logga in på Azure-portalen:

    Connect-AzAccount
    
  3. Kör följande kommando för att visa alla prenumerationer för det här kontot:

    Get-AzSubscription
    
  4. Om du har flera Azure-prenumerationer associerade till ditt konto kör du följande kommando för att välja den prenumeration du vill arbeta med. Ersätt SubscriptionId med ID:t för din Azure-prenumeration:

    Select-AzSubscription -SubscriptionId "<SubscriptionId>"
    

Skapa en datafabrik

  1. Definiera en variabel för resursgruppens namn som du kan använda senare i PowerShell-kommandon. Kopiera följande kommandotext till PowerShell, ange ett namn för Azure-resursgruppen, sätt dubbla citattecken omkring namnet och kör sedan kommandot. Exempel: "ADFQuickStartRG".

    $resourceGroupName = "ADFQuickStartRG";
    

    Om resursgruppen redan finns behöver du kanske inte skriva över den. Ge variabeln $ResourceGroupName ett annat värde och kör kommandot igen

  2. Kör följande kommando för att skapa en Azure-resursgrupp:

    $ResGrp = New-AzResourceGroup $resourceGroupName -location 'East US'
    

    Om resursgruppen redan finns behöver du kanske inte skriva över den. Ge variabeln $ResourceGroupName ett annat värde och kör kommandot igen.

  3. Definiera en variabel för datafabrikens namn.

    Viktigt!

    Uppdateringen av datafabrikens namn måste vara unikt globalt. Till exempel ADFTutorialFactorySP1127.

    $dataFactoryName = "ADFQuickStartFactory";
    
  4. Om du vill skapa datafabriken kör du följande Set-AzDataFactoryV2-cmdlet med egenskapen Location och ResourceGroupName från variabeln $ResGrp:

    $DataFactory = Set-AzDataFactoryV2 -ResourceGroupName $ResGrp.ResourceGroupName `
        -Location $ResGrp.Location -Name $dataFactoryName
    

Observera följande:

  • Namnet på Azure Data Factory måste vara globalt unikt. Om du får följande felmeddelande ändrar du namnet och försöker igen.

    The specified Data Factory name 'ADFv2QuickStartDataFactory' is already in use. Data Factory names must be globally unique.
    
  • Om du vill skapa Data Factory-instanser måste det användarkonto du använder för att logga in på Azure vara medlem av rollerna deltagare eller ägare, eller vara administratör för Azure-prenumerationen.

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

Skapa en länkad tjänst

Skapa länkade tjänster i en datafabrik för att länka ditt datalager och beräkna datafabrik-tjänster. I den här snabbstarten skapar du en länkad Azure Storage-tjänst som lagrar både källa och mottagare. Den länkade tjänsten har anslutningsinformationen som Data Factory-tjänsten använder vid körning för att ansluta till den.

Dricks

I den här snabbstarten använder du kontonyckeln som autentiseringstyp för ditt datalager, men du kan välja andra autentiseringsmetoder som stöds: SAS-URI, tjänstens huvudnamn och hanterad identitet om det behövs. Mer information finns i motsvarande avsnitt i den här artikeln . Om du vill lagra hemligheter för datalager på ett säkert sätt rekommenderar vi också att du använder ett Azure Key Vault. Mer information finns i den här artikeln.

  1. Skapa en JSON-fil med namnet AzureStorageLinkedService.json i mappen C:\ADFv2QuickStartPSH med följande innehåll: (skapa mappen ADFv2QuickStartPSH om den inte redan finns.).

    Viktigt!

    Ersätt <accountName> och <accountKey> med namnet och nyckeln för ditt Azure Storage-konto innan du sparar filen.

    {
        "name": "AzureStorageLinkedService",
        "properties": {
            "annotations": [],
            "type": "AzureBlobStorage",
            "typeProperties": {
                "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>;EndpointSuffix=core.windows.net"
            }
        }
    }
    

    Om du använder Anteckningar ska du välja Alla filer för det filformat som anges i dialogrutan Spara som. Annars kan tillägget .txt läggas till för filen. Exempel: AzureStorageLinkedService.json.txt Om du skapar en fil i Utforskaren innan du öppnar den i Anteckningar kanske du inte ser tillägget .txt eftersom alternativet för att dölja tillägg för alla kända filtyper är valt som standard. Ta bort tillägget .txt innan du fortsätter till nästa steg.

  2. I PowerShell växlar du till mappen ADFv2QuickStartPSH.

    Set-Location 'C:\ADFv2QuickStartPSH'
    
  3. Kör cmdleten Set-AzDataFactoryV2LinkedService för att skapa den länkade tjänsten: AzureStorageLinkedService.

    Set-AzDataFactoryV2LinkedService -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName -Name "AzureStorageLinkedService" `
        -DefinitionFile ".\AzureStorageLinkedService.json"
    

    Här är exempel på utdata:

    LinkedServiceName : AzureStorageLinkedService
    ResourceGroupName : <resourceGroupName>
    DataFactoryName   : <dataFactoryName>
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureBlobStorageLinkedService
    

Skapa datauppsättningar

I den här proceduren skapar du två datauppsättningar: InputDataset och OutputDataset. Dessa datauppsättningar är av typen Binär. De refererar till den länkade Azure Storage-tjänst du skapade i föregående avsnitt. Datauppsättningen för indata representerar källdata i indatamappen. I definitionen av datauppsättningen för indata anger du blobcontainern (adftutorial), mappen (input) och filen (emp.txt) som innehåller källdata. Datauppsättningen för utdata representerar de data som kopieras till målet. I definitionen av datauppsättningen för utdata anger du blobcontainern (adftutorial), mappen (output) och filen som data ska kopieras till.

  1. Skapa en JSON-fil med namnet InputDataset.json i mappen C:\ADFv2QuickStartPSH med följande innehåll:

    {
        "name": "InputDataset",
        "properties": {
            "linkedServiceName": {
                "referenceName": "AzureStorageLinkedService",
                "type": "LinkedServiceReference"
            },
            "annotations": [],
            "type": "Binary",
            "typeProperties": {
                "location": {
                    "type": "AzureBlobStorageLocation",
                    "fileName": "emp.txt",
                    "folderPath": "input",
                    "container": "adftutorial"
                }
            }
        }
    }
    
  2. Skapa datauppsättningen: InputDataset genom att köra cmdleten Set-AzDataFactoryV2Dataset .

    Set-AzDataFactoryV2Dataset -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName -Name "InputDataset" `
        -DefinitionFile ".\InputDataset.json"
    

    Här är exempel på utdata:

    DatasetName       : InputDataset
    ResourceGroupName : <resourceGroupname>
    DataFactoryName   : <dataFactoryName>
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.BinaryDataset
    
  3. Upprepa stegen för att skapa datauppsättningen för utdata. Skapa en JSON-fil med namnet OutputDataset.json i mappen C:\ADFv2QuickStartPSH med följande innehåll:

    {
        "name": "OutputDataset",
        "properties": {
            "linkedServiceName": {
                "referenceName": "AzureStorageLinkedService",
                "type": "LinkedServiceReference"
            },
            "annotations": [],
            "type": "Binary",
            "typeProperties": {
                "location": {
                    "type": "AzureBlobStorageLocation",
                    "folderPath": "output",
                    "container": "adftutorial"
                }
            }
        }
    }
    
  4. Kör cmdleten Set-AzDataFactoryV2Dataset för att skapa OutDataset.

    Set-AzDataFactoryV2Dataset -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName -Name "OutputDataset" `
        -DefinitionFile ".\OutputDataset.json"
    

    Här är exempel på utdata:

    DatasetName       : OutputDataset
    ResourceGroupName : <resourceGroupname>
    DataFactoryName   : <dataFactoryName>
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.BinaryDataset
    

Skapa en pipeline

I den här proceduren skapar du en pipeline med en kopieringsaktivitet som använder datauppsättningarna för indata och utdata. Kopieringsaktiviteten kopierar data från filen som anges i inställningarna för datauppsättningen för indata till filen som anges i inställningarna för datauppsättningen för utdata.

  1. Skapa en JSON-fil med namnet Adfv2QuickStartPipeline.json i mappen C:\ADFv2QuickStartPSH med följande innehåll:

    {
        "name": "Adfv2QuickStartPipeline",
        "properties": {
            "activities": [
                {
                    "name": "CopyFromBlobToBlob",
                    "type": "Copy",
                    "dependsOn": [],
                    "policy": {
                        "timeout": "7.00:00:00",
                        "retry": 0,
                        "retryIntervalInSeconds": 30,
                        "secureOutput": false,
                        "secureInput": false
                    },
                    "userProperties": [],
                    "typeProperties": {
                        "source": {
                            "type": "BinarySource",
                            "storeSettings": {
                                "type": "AzureBlobStorageReadSettings",
                                "recursive": true
                            }
                        },
                        "sink": {
                            "type": "BinarySink",
                            "storeSettings": {
                                "type": "AzureBlobStorageWriteSettings"
                            }
                        },
                        "enableStaging": false
                    },
                    "inputs": [
                        {
                            "referenceName": "InputDataset",
                            "type": "DatasetReference"
                        }
                    ],
                    "outputs": [
                        {
                            "referenceName": "OutputDataset",
                            "type": "DatasetReference"
                        }
                    ]
                }
            ],
            "annotations": []
        }
    }
    
  2. Skapa pipelinen: Adfv2QuickStartPipeline genom att köra cmdleten Set-AzDataFactoryV2Pipeline .

    $DFPipeLine = Set-AzDataFactoryV2Pipeline `
        -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName `
        -Name "Adfv2QuickStartPipeline" `
        -DefinitionFile ".\Adfv2QuickStartPipeline.json"
    

Skapa en pipelinekörning

I det här steget skapar du en pipelinekörning.

Kör cmdleten Invoke-AzDataFactoryV2Pipeline för att skapa en pipelinekörning. Cmdleten samlar även in pipelinekörningens ID för kommande övervakning.

$RunId = Invoke-AzDataFactoryV2Pipeline `
  -DataFactoryName $DataFactory.DataFactoryName `
  -ResourceGroupName $ResGrp.ResourceGroupName `
  -PipelineName $DFPipeLine.Name 

Övervaka pipelinekörningen

  1. Kör följande PowerShell-skript för att kontinuerligt kontrollera pipelinekörningens status tills kopieringen av data är klar. Kopiera/klistra in följande skript i PowerShell-fönstret och tryck på RETUR.

    while ($True) {
        $Run = Get-AzDataFactoryV2PipelineRun `
            -ResourceGroupName $ResGrp.ResourceGroupName `
            -DataFactoryName $DataFactory.DataFactoryName `
            -PipelineRunId $RunId
    
        if ($Run) {
            if ( ($Run.Status -ne "InProgress") -and ($Run.Status -ne "Queued") ) {
                Write-Output ("Pipeline run finished. The status is: " +  $Run.Status)
                $Run
                break
            }
            Write-Output ("Pipeline is running...status: " + $Run.Status)
        }
    
        Start-Sleep -Seconds 10
    }
    

    Här är exempel på utdata för pipelinekörning:

    Pipeline is running...status: InProgress
    Pipeline run finished. The status is:  Succeeded
    
    ResourceGroupName : ADFQuickStartRG
    DataFactoryName   : ADFQuickStartFactory
    RunId             : 00000000-0000-0000-0000-0000000000000
    PipelineName      : Adfv2QuickStartPipeline
    LastUpdated       : 8/27/2019 7:23:07 AM
    Parameters        : {}
    RunStart          : 8/27/2019 7:22:56 AM
    RunEnd            : 8/27/2019 7:23:07 AM
    DurationInMs      : 11324
    Status            : Succeeded
    Message           : 
    
  2. Kör följande skript för att hämta körningsinformation för kopieringsaktiviteten, till exempel storleken på data som lästs/skrivits.

    Write-Output "Activity run details:"
    $Result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $DataFactory.DataFactoryName -ResourceGroupName $ResGrp.ResourceGroupName -PipelineRunId $RunId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30)
    $Result
    
    Write-Output "Activity 'Output' section:"
    $Result.Output -join "`r`n"
    
    Write-Output "Activity 'Error' section:"
    $Result.Error -join "`r`n"
    
  3. Bekräfta att du ser utdata som liknar följande exempelutdata för ett aktivitetskörningsresultat:

    ResourceGroupName : ADFQuickStartRG
    DataFactoryName   : ADFQuickStartFactory
    ActivityRunId     : 00000000-0000-0000-0000-000000000000
    ActivityName      : CopyFromBlobToBlob
    PipelineRunId     : 00000000-0000-0000-0000-000000000000
    PipelineName      : Adfv2QuickStartPipeline
    Input             : {source, sink, enableStaging}
    Output            : {dataRead, dataWritten, filesRead, filesWritten...}
    LinkedServiceName :
    ActivityRunStart  : 8/27/2019 7:22:58 AM
    ActivityRunEnd    : 8/27/2019 7:23:05 AM
    DurationInMs      : 6828
    Status            : Succeeded
    Error             : {errorCode, message, failureType, target}
    
    Activity 'Output' section:
    "dataRead": 20
    "dataWritten": 20
    "filesRead": 1
    "filesWritten": 1
    "sourcePeakConnections": 1
    "sinkPeakConnections": 1
    "copyDuration": 4
    "throughput": 0.01
    "errors": []
    "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (Central US)"
    "usedDataIntegrationUnits": 4
    "usedParallelCopies": 1
    "executionDetails": [
      {
        "source": {
          "type": "AzureBlobStorage"
        },
        "sink": {
          "type": "AzureBlobStorage"
        },
        "status": "Succeeded",
        "start": "2019-08-27T07:22:59.1045645Z",
        "duration": 4,
        "usedDataIntegrationUnits": 4,
        "usedParallelCopies": 1,
        "detailedDurations": {
          "queuingDuration": 3,
          "transferDuration": 1
        }
      }
    ]
    
    Activity 'Error' section:
    "errorCode": ""
    "message": ""
    "failureType": ""
    "target": "CopyFromBlobToBlob"
    

Granska distribuerade resurser

Pipelinen skapar automatiskt utdatamappen i blobcontainern adftutorial. Filen emp.txt kopieras från indatamappen till utdatamappen.

  1. I Azure-portalen går du till sidan adftutorial container och väljer Uppdatera för att se utdatamappen.

    Skärmbild som visar containersidan där du kan uppdatera sidan.

  2. Välj utdata i mapplistan.

  3. Kontrollera att emp.txt har kopierats till utdatamappen.

    Skärmbild som visar innehållet i utdatamappen.

Rensa resurser

Du kan rensa de resurser som du skapade i snabbstarten på två sätt. Du kan ta bort den Azure-resursgrupp som innehåller alla resurser i resursgruppen. Om du vill behålla de andra resurserna intakta ska du bara ta bort den datafabrik du har skapat i den här självstudiekursen.

När du tar bort en resursgrupp tas alla resurser inklusive datafabriker i den bort. Kör följande kommando om du vill ta bort hela resursgruppen:

Remove-AzResourceGroup -ResourceGroupName $resourcegroupname

Kommentar

Det kan ta lite tid att ta bort en resursgrupp. Ha tålamod under processen

Om du bara vill ta bort datafabriken och inte hela resursgruppen kör du följande kommando:

Remove-AzDataFactoryV2 -Name $dataFactoryName -ResourceGroupName $resourceGroupName

Pipeline i det här exemplet kopierar data från en plats till en annan i Azure Blob Storage. Gå igenom självstudiekurserna om du vill lära dig hur du använder Data Factory i fler scenarier.