Snabbstart: Skapa en Azure Data Factory med PowerShell

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

Tips/Råd

Data Factory i Microsoft Fabric är nästa generations Azure Data Factory, med en enklare arkitektur, inbyggd AI och nya funktioner. Om dataintegrering är nytt för dig börjar du med Fabric Data Factory. Befintliga ADF-arbetsbelastningar kan uppgraderas till Fabric för att få åtkomst till nya funktioner inom datavetenskap, realtidsanalys och rapportering.

Den här snabbstarten beskriver hur du använder PowerShell för att skapa en Azure Data Factory. Pipelinen som du skapar i den här datafabriken kopierar data från en mapp till en annan mapp på ett Azure Blob-lager. För en självstudiekurs om hur man transformerar data med hjälp av Azure Data Factory, se Tutorial: Transformera data med Spark.

Anmärkning

Den här artikeln innehåller ingen detaljerad introduktion till Data Factory-tjänsten. En introduktion till tjänsten Azure Data Factory finns i Introduction to Azure Data Factory.

Förutsättningar

Azure prenumeration

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

Azure roller

Om du vill skapa Data Factory-instanser måste det användarkonto som du använder för att logga in på Azure vara medlem i rollen contributor eller owner eller en administrator 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 och väljer "... "-ikonen för fler alternativ och välj sedan Min behörighet. 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:

  • Om du vill 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 contributorrollen på resursnivå eller högre tillräcklig.

Exempelinstruktioner om hur du lägger till en användare i en roll finns i artikeln Lägg till roller .

Mer information finns i följande artiklar:

Azure Storage konto

Du använder ett allmänt Azure Storage-konto (särskilt Blob Storage) som både source och destination datalager i den här snabbstarten. Om du inte har ett 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 Azure användarnamn och lösenord.
  2. På Azure-portalmenyn väljer du Alla tjänster och väljer sedan Storage>Storage-konton. 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 på sidan <Kontonamn> - Containrar, väljer du Container.

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

    Lista över containrar

Lägg till en mapp och en fil för blobbehållaren

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 som 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å Azure-portalmenyn väljer du Alla tjänster och väljer sedan Storage>Storage-konton. Du kan också söka efter och välja Lagringskonton från valfri sida.
    3. Välj ditt lagringskonto och därefter välj 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 filenemp.txt .

  4. Expandera Avancerat rubriken. Sidan visas nu som följer:

    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 använder den för att verifiera utdata i slutet av den här snabbstarten.

Azure PowerShell

Anmärkning

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

Installera de senaste Azure PowerShell modulerna genom att följa anvisningarna i Så här installerar och konfigurerar du 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å datorn. Håll PowerShell öppet till slutet av den här snabbstarten. Om du stänger och öppnar igen måste du köra dessa kommandon igen.

  2. Kör följande kommando och ange samma Azure användarnamn och lösenord 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 ser flera prenumerationer som är associerade med ditt konto kör du följande kommando för att välja den prenumeration som 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 resursgruppen Azure med dubbla citattecken och kör sedan kommandot . Till exempel: "ADFQuickStartRG".

    $resourceGroupName = "ADFQuickStartRG";
    

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

  2. Kör följande kommando för att skapa resursgruppen Azure:

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

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

  3. Definiera en variabel för datafabrikens namn.

    Viktigt!

    Uppdatera namnet på datafabriken så att det är globalt unikt. 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 punkter:

  • 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 användarkontot som du använder för att logga in på Azure vara medlem i rollerna contributor eller owner eller en administrator för Azure-prenumerationen.

  • Om du vill ha en lista över Azure regioner där Data Factory är tillgängligt för närvarande väljer du de regioner som intresserar dig på följande sida och expanderar sedan Analytics för att hitta Data Factory: Produkter tillgängliga per region. Datalager (Azure Storage, Azure SQL Database osv.) och beräkningar (HDInsight osv.) som används av datafabriken kan finnas i andra regioner.

Skapa en länkad tjänst

Skapa länkade tjänster i en datafabrik för att länka dina datalager och beräkningstjänster till datafabriken. I den här snabbstarten skapar du en Azure Storage länkad tjänst som används som både käll- och mottagararkiv. Den länkade tjänsten har anslutningsdata som Data Factory-tjänsten använder under körning för att ansluta till den.

Tips/Råd

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 en 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 namn och nyckel för ditt Azure lagringskonto 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 Anteckning, välj Alla filer som Spara som typ i dialogrutan Spara som. Annars kan det lägga till .txt tillägg till filen. Till exempel AzureStorageLinkedService.json.txt. Om du skapar filen i Utforskaren innan du öppnar den .txt i Anteckningar kanske du inte ser tillägget eftersom alternativet Dölj tillägg för kända filtyper har angetts som standard. .txt Ta bort tillägget 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 exempelutdata:

    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 Azure Storage länkade tjänsten som du skapade i föregående avsnitt. Datauppsättningen för indata representerar källdata i indatamappen. I datauppsättningsdefinitionen för indata anger du blobcontainern (adftutorial), mappen (indata) och filen (emp.txt) som innehåller källdata. Datauppsättningen för utdata representerar de data som kopieras till destinationen. I datauppsättningsdefinitionen för utdata anger du blobcontainern (adftutorial), mappen (utdata) och filen som data 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 exempelutdata:

    DatasetName       : InputDataset
    ResourceGroupName : <resourceGroupname>
    DataFactoryName   : <dataFactoryName>
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.BinaryDataset
    
  3. Upprepa stegen för att skapa utdatauppsättningen. 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 exempelutdata:

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

Skapa en processkedja

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 den fil som du angav i indatauppsättningsinställningarna till filen som du angav i inställningarna för utdatauppsättningen.

  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 returnerar pipelinekörnings-ID:t för framtida ö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 statusen för pipelinekörningen tills den har kopierat data. 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 exempelutdata från 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 detaljer om kopieringskörningen, till exempel storleken på den data som har lästs eller 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 aktivitetskörningsresultatet:

    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

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

  1. I Azure-portalen går du till containersidan adftutorial och väljer Refresh 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 resursgruppen Azure 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

Anmärkning

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

Om du bara vill ta bort datafabriken, 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 en Azure Blob-lagring. Gå igenom självstudiekurserna om du vill lära dig hur du använder Data Factory i fler scenarier.