Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Azure Data Factory
Azure Synapse Analytics
Tip
Data Factory in Microsoft Fabric is de volgende generatie van Azure Data Factory, met een eenvoudigere architectuur, ingebouwde AI en nieuwe functies. Als u nieuw bent in gegevensintegratie, begint u met Fabric Data Factory. Bestaande ADF-workloads kunnen upgraden naar Fabric om toegang te krijgen tot nieuwe mogelijkheden voor gegevenswetenschap, realtime analyses en rapportage.
De activiteit Until biedt dezelfde functionaliteit als de lusstructuur do-until in een programmeertaal. Een reeks activiteiten wordt uitgevoerd in een lus totdat de aan de activiteit gekoppelde voorwaarde waar wordt bevonden. Als een interne activiteit mislukt, stopt de Totdat-activiteit niet. U kunt een time-outwaarde opgeven voor de until-activiteit.
Een until-activiteit maken met een UI
Voer de volgende stappen uit om een Until-activiteit in een pijplijn te gebruiken:
Zoek naar Until in het deelvenster Activiteiten van de pijplijn en sleep een Until-activiteit naar het pijplijncanvas.
Selecteer de activiteit Until op het canvas als deze nog niet is geselecteerd en het tabblad Instellingen om de details ervan te bewerken.
Voer een expressie in die wordt geëvalueerd nadat alle onderliggende activiteiten die zijn gedefinieerd in de Until-activiteit zijn voltooid. Als de expressie als onwaar wordt geëvalueerd, voert de Until-activiteit al haar onderliggende activiteiten opnieuw uit. Wanneer de evaluatie waar is, wordt de Totdat-activiteit voltooid. De expressie kan een letterlijke tekenreeksexpressie zijn of een combinatie van dynamische expressies, functies, systeemvariabelen of uitvoer van andere activiteiten. In het onderstaande voorbeeld wordt de waarde gecontroleerd van een eerder gedefinieerde pijplijnmatrixvariabele met de naam TestVariable om te zien of deze resulteert in ['done'].
Definieer activiteiten die de Tot-activiteit uitvoert door de knop 'Activiteiten bewerken' direct op de Tot-activiteit te selecteren, of door het tabblad 'Activiteiten' te selecteren om het daar te bepalen. Er wordt een nieuw activiteiteneditorvenster weergegeven waar u activiteiten kunt toevoegen die door de Totdat-activiteit moeten worden uitgevoerd. In dit voorbeeld stelt de activiteit 'Variabele instellen' de waarde van de variabele waarnaar wordt verwezen in op 'gereed'. Dus de expressie van de Until-activiteit zal waar zijn de eerste keer dat deze wordt uitgevoerd, en daarna stopt de Until-activiteit. U kunt vergelijkbare variabelen gebruiken om eventuele voorwaarden te controleren. De activiteit Until voert de subactiviteiten uit telkens wanneer de expressie wordt geëvalueerd, totdat aan de voorwaarden wordt voldaan. Als u meerdere activiteiten doorloopt, kan er vertraging optreden bij het afsluiten van de lus vanwege aggregatie- en opschoonwerkzaamheden die door de pijplijn worden uitgevoerd.
Syntaxis
{
"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"
}
Typeeigenschappen
| Eigendom | Beschrijving | Toegestane waarden | Vereist |
|---|---|---|---|
| naam | Naam van de Until activiteit. |
String | Ja |
| type | Moet worden ingesteld op Until. | String | Ja |
| uitdrukking | Expressie die moet resulteren in waar of onwaar | Uitdrukking. | Ja |
| timeout | Er treedt hier een time-out op voor de do-until-lus na de opgegeven tijd. | Snaar.
d.hh:mm:ss (of) hh:mm:ss. De standaardwaarde is zeven dagen. Maximumwaarde is: 90 dagen. |
Nee |
| Activiteiten | Set activiteiten die worden uitgevoerd totdat de expressie resulteert in true. |
Matrix van activiteiten. | Ja |
Voorbeeld 1
Notitie
Deze sectie bevat JSON-definities en PowerShell-voorbeeldopdrachten om de pijplijn uit te voeren. Zie tutorial: een data factory maken met behulp van Azure PowerShell voor een overzicht van stapsgewijze instructies voor het maken van een pijplijn met behulp van Azure PowerShell- en JSON-definities.
Pijplijn met een Until-activiteit
In dit voorbeeld heeft de pijplijn twee activiteiten: Tot en Wachten. De wachtactiviteit wacht gedurende de opgegeven periode voordat de webactiviteit in de lus wordt uitgevoerd. Zie Expressietaal en -functies voor meer informatie over expressies en functies.
{
"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"
}
]
}
}
Voorbeeld 2
De pijplijn in dit voorbeeld kopieert gegevens uit een invoermap naar een uitvoermap in een lus. De lus wordt beëindigd wanneer de waarde voor de herhalingsparameter is ingesteld op onwaar of er na één minuut een time-out optreedt.
Pijplijn met Tot-activiteit (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"
}
}
}
}
Azure Storage gekoppelde gegevensservice (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Geparameteriseerde Azure Blob-gegevensset (BlobDataset.json)
De pijplijn stelt het folderPath in op de waarde van óf outputPath1 óf outputPath2 van de pijplijn.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
JSON voor pijplijnparameter (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
PowerShell-opdrachten
Notitie
U wordt aangeraden de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Install Azure PowerShell om aan de slag te gaan. Zie Migrate Azure PowerShell van AzureRM naar Az voor meer informatie over het migreren naar de Az PowerShell-module.
Bij deze opdrachten wordt ervan uitgegaan dat u de JSON-bestanden hebt opgeslagen in de map 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
}
Gerelateerde inhoud
Bekijk andere ondersteunde controlestroomactiviteiten: