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
Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .
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 zelfstudie: een data factory maken met behulp van Azure PowerShell en JSON-definities voor stapsgewijze instructies om een pijplijn te maken.
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"
}
}
}
}
Gekoppelde Azure Storage-service (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
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
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: