Tills aktivitet i Azure Data Factory och Synapse Analytics
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!
Aktiviteten Until fungerar på samma sätt som en do-until-loopstruktur i ett programmeringsspråk. En uppsättning aktiviteter körs i en loop tills det villkor som är associerat med aktiviteten utvärderas till sant. Om en inre aktivitet misslyckas stoppas inte Aktiviteten Tills. Du kan ange ett timeout-värde för aktiviteten tills.
Skapa en Until-aktivitet med användargränssnittet
Utför följande steg för att använda en Until-aktivitet i en pipeline:
Sök efter Till i fönstret Pipelineaktiviteter och dra en Till-aktivitet till pipelinearbetsytan.
Välj aktiviteten Till på arbetsytan om den inte redan är markerad och fliken Inställningar för att redigera dess information.
Ange ett uttryck som ska utvärderas när alla underordnade aktiviteter som definierats i aktiviteten Tills har körts. Om uttrycket utvärderas till falskt kör aktiviteten Tills alla dess underordnade aktiviteter igen. När den utvärderas till true slutförs aktiviteten Tills den är klar. Uttrycket kan vara ett literalt stränguttryck eller en kombination av dynamiska uttryck, funktioner, systemvariabler eller utdata från andra aktiviteter. Exemplet nedan kontrollerar värdet för en tidigare definierad pipelinematrisvariabel med namnet TestVariable för att se om den utvärderas till ['klar'].
Definiera aktiviteter som aktiviteten Tills körs genom att välja knappen Redigera aktiviteter på aktiviteten Till direkt eller genom att välja fliken Aktiviteter för att välja den där. Ett nytt fönster för aktivitetsredigeraren visas där du kan lägga till aktiviteter som aktiviteten Tills ska köras. I det här exemplet anger en Set Variable-aktivitet helt enkelt värdet för variabeln som refereras i ovan nämnda uttryck till ['done'], så tills-aktivitetens uttryck blir sant första gången den körs och aktiviteten Until stoppas. I din verkliga användning kan du kontrollera alla villkor som krävs och aktiviteten Until fortsätter att köra sina underordnade aktiviteter varje gång uttrycket utvärderas tills villkoren är uppfyllda.
Syntax
{
"type": "Until",
"typeProperties": {
"expression": {
"value": "<expression that evaluates to true or false>",
"type": "Expression"
},
"timeout": "<time out for the loop. for example: 00:10:00 (10 minute)>",
"activities": [
{
"<Activity 1 definition>"
},
{
"<Activity 2 definition>"
},
{
"<Activity N definition>"
}
]
},
"name": "MyUntilActivity"
}
Typegenskaper
Property | beskrivning | Tillåtna värden | Obligatoriskt |
---|---|---|---|
name | Namnet på Until aktiviteten. |
String | Ja |
type | Måste anges till Till. | String | Ja |
uttryck | Uttryck som måste utvärderas till sant eller falskt | Uttryck. | Ja |
timeout | Do-Until-loopen överskrider tidsgränsen efter den angivna tiden här. | Sträng. d.hh:mm:ss (eller) hh:mm:ss . Standardvärdet är sju dagar. Maximalt värde är: 90 dagar. |
Nej |
Aktiviteter | Uppsättning aktiviteter som körs tills uttrycket utvärderas till true . |
Matris med aktiviteter. | Ja |
Exempel 1
Kommentar
Det här avsnittet innehåller JSON-definitioner och PowerShell-exempelkommandon för att köra pipelinen. En genomgång med stegvisa instruktioner för att skapa en pipeline med hjälp av Azure PowerShell- och JSON-definitioner finns i självstudie: skapa en datafabrik med hjälp av Azure PowerShell.
Pipeline med tills-aktivitet
I det här exemplet har pipelinen två aktiviteter: Tills och Vänta. Vänta-aktiviteten väntar under den angivna tidsperioden innan webbaktiviteten körs i loopen. Mer information om uttryck och funktioner finns i Uttrycksspråk och funktioner.
{
"name": "DoUntilPipeline",
"properties": {
"activities": [
{
"type": "Until",
"typeProperties": {
"expression": {
"value": "@equals('Failed', coalesce(body('MyUnauthenticatedActivity')?.status, actions('MyUnauthenticatedActivity')?.status, 'null'))",
"type": "Expression"
},
"timeout": "00:10:00",
"activities": [
{
"name": "MyUnauthenticatedActivity",
"type": "WebActivity",
"typeProperties": {
"method": "get",
"url": "https://www.fake.com/",
"headers": {
"Content-Type": "application/json"
}
},
"dependsOn": [
{
"activity": "MyWaitActivity",
"dependencyConditions": [ "Succeeded" ]
}
]
},
{
"type": "Wait",
"typeProperties": {
"waitTimeInSeconds": 1
},
"name": "MyWaitActivity"
}
]
},
"name": "MyUntilActivity"
}
]
}
}
Exempel 2
Pipelinen i det här exemplet kopierar data från en indatamapp till en utdatamapp i en loop. Loopen avslutas när värdet för upprepningsparametern är inställt på false eller tidsgränsen uppnås efter en minut.
Pipeline med until-aktivitet (Adfv2QuickStartPipeline.json)
{
"name": "Adfv2QuickStartPipeline",
"properties": {
"activities": [
{
"type": "Until",
"typeProperties": {
"expression": {
"value": "@equals('false', pipeline().parameters.repeat)",
"type": "Expression"
},
"timeout": "00:10:00",
"activities": [
{
"name": "CopyFromBlobToBlob",
"type": "Copy",
"inputs": [
{
"referenceName": "BlobDataset",
"parameters": {
"path": "@pipeline().parameters.inputPath"
},
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "BlobDataset",
"parameters": {
"path": "@pipeline().parameters.outputPath"
},
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "BlobSink"
}
},
"policy": {
"retry": 1,
"timeout": "00:10:00",
"retryIntervalInSeconds": 60
}
}
]
},
"name": "MyUntilActivity"
}
],
"parameters": {
"inputPath": {
"type": "String"
},
"outputPath": {
"type": "String"
},
"repeat": {
"type": "String"
}
}
}
}
Länkad Azure Storage-tjänst (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Parameteriserad Azure Blob-datauppsättning (BlobDataset.json)
Pipelinen anger folderPath till värdet för parametern outputPath1 eller outputPath2 i pipelinen.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
Pipelineparametern JSON (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
PowerShell-kommandon
Kommentar
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Dessa kommandon förutsätter att du har sparat JSON-filerna i mappen: C:\ADF.
Connect-AzAccount
Select-AzSubscription "<Your subscription name>"
$resourceGroupName = "<Resource Group Name>"
$dataFactoryName = "<Data Factory Name. Must be globally unique>";
Remove-AzDataFactoryV2 $dataFactoryName -ResourceGroupName $resourceGroupName -force
Set-AzDataFactoryV2 -ResourceGroupName $resourceGroupName -Location "East US" -Name $dataFactoryName
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureStorageLinkedService" -DefinitionFile "C:\ADF\AzureStorageLinkedService.json"
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "BlobDataset" -DefinitionFile "C:\ADF\BlobDataset.json"
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "Adfv2QuickStartPipeline" -DefinitionFile "C:\ADF\Adfv2QuickStartPipeline.json"
$runId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineName "Adfv2QuickStartPipeline" -ParameterFile C:\ADF\PipelineParameters.json
while ($True) {
$run = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $resourceGroupName -DataFactoryName $DataFactoryName -PipelineRunId $runId
if ($run) {
if ($run.Status -ne 'InProgress') {
Write-Host "Pipeline run finished. The status is: " $run.Status -foregroundcolor "Yellow"
$run
break
}
Write-Host "Pipeline is running...status: InProgress" -foregroundcolor "Yellow"
Write-Host "Activity run details:" -foregroundcolor "Yellow"
$result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $runId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30)
$result
Write-Host "Activity 'Output' section:" -foregroundcolor "Yellow"
$result.Output -join "`r`n"
}
Start-Sleep -Seconds 15
}
Relaterat innehåll
Se andra kontrollflödesaktiviteter som stöds: