Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
VZTAHUJE SE NA:
Azure Data Factory
Azure Synapse Analytics
Tip
Pro ekvivalentní aktivitu v Data Factory v Microsoft Fabric viz aktivita Twith.
Aktivita Until poskytuje stejné funkce jako struktura smyčky do-until v programovacích jazycích. Provádí ve smyčce sadu aktivit, dokud se podmínka přidružená k aktivitě nevyhodnotí jako pravdivá. Pokud vnitřní aktivita selže, aktivita Until se nezastaví. Můžete zadat hodnotu časového limitu pro aktivitu do té doby.
Vytvoření aktivity Until s uživatelským rozhraním
Chcete-li v potrubí použít aktivitu Until, proveďte následující kroky:
Vyhledejte Until v podokně aktivit kanálu a přetáhněte aktivitu Until na plátno kanálu.
Vyberte na plátně aktivitu Until, pokud již není vybraná, a otevřete její kartu Nastavení pro úpravu podrobností.
Zadejte výraz, který se vyhodnotí poté, co jsou provedeny všechny podřízené aktivity definované v aktivitě Until. Pokud se výraz vyhodnotí jako false, aktivita Until znovu provede všechny své podřízené aktivity. Když se vyhodnotí jako true, aktivita Until se dokončí. Výrazem může být literálový řetězcový výraz nebo libovolná kombinace dynamických výrazů, funkcí, systémových proměnných nebo výstupů z jiných aktivit. Následující příklad zkontroluje hodnotu dříve definované proměnné pole kanálu s názvem TestVariable a zjistí, jestli se vyhodnotí jako ['done'].
Zobrazuje podokno Přidat dynamický obsah s výrazem pro kontrolu, zda proměnná má definovanou hodnotu.
Definujte aktivity, které aktivita Until spustí, výběrem tlačítka Upravit aktivity přímo na aktivitě Until nebo výběrem karty Aktivity ji tam vyberte. Zobrazí se nové podokno editoru aktivit, kde můžete přidat jakékoli aktivity pro aktivitu Until, která se má provést. V tomto příkladu aktivita pro nastavení proměnné nastaví hodnotu u odkazované proměnné na "hotovo". Výraz aktivity Until bude tedy pravdivý při prvním spuštění a potom se aktivita Until zastaví. Podobné proměnné můžete použít ke kontrole jakýchkoli podmínek. Aktivita Until provádí své podřízené aktivity při každém vyhodnocení výrazu, dokud nejsou splněny podmínky. Pokud iterujete více aktivit, může dojít ke zpoždění ukončení smyčky kvůli agregaci a vyčištění práce prováděné kanálem.
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"
}
Vlastnosti typu
| Vlastnost | Popis | Povolené hodnoty | Povinné |
|---|---|---|---|
| název |
Until Název aktivity. |
String | Yes |
| typ | Musí být nastavena na Until. | String | Yes |
| výraz | Výraz, který musí být vyhodnocen jako true nebo false | Výraz | Yes |
| časový limit | Po uplynutí zadaného času vyprší časový limit smyčky do-until. | Řetězec.
d.hh:mm:ss nebo ) hh:mm:ss. Výchozí hodnota je sedm dní. Maximální hodnota je: 90 dní. |
Ne |
| Aktivity | Sada aktivit, které se provádějí, dokud se výraz nehodnotí jako true. |
Pole činností. | Yes |
Příklad 1
Poznámka
Tato část obsahuje definice JSON a ukázkové příkazy PowerShellu pro spuštění kanálu. Podrobný návod k vytvoření kanálu pomocí Azure PowerShell a definic JSON najdete v tématu tutorial: Vytvoření datové továrny pomocí Azure PowerShell.
Datový tok s aktivitou Until
V tomto příkladu má datový kanál dvě aktivity: Until a Wait. Aktivita Wait čeká na zadanou dobu před spuštěním webové aktivity ve smyčce. Další informace o výrazech a funkcích najdete v tématu Jazyk a funkce výrazů.
{
"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"
}
]
}
}
Příklad 2
Potrubí v této ukázce kopíruje data ze vstupní složky do výstupní složky cyklicky. Smyčka se ukončí, když je hodnota parametru repeat nastavena na false nebo vyprší časový limit po jedné minutě.
Kanál s aktivitou Until (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"
}
}
}
}
propojená služba Azure Storage (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Parametrizovaná datová sada objektů blob Azure (BlobDataset.json)
Kanál nastaví cestu ke složce na hodnotu outputPath1 nebo outputPath2 parametru kanálu.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
JSON parametru potrubí (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
Příkazy PowerShellu
Poznámka
K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Pokud chcete začít, přečtěte si téma Install Azure PowerShell. Informace o migraci do modulu Az PowerShell najdete v tématu Migrace Azure PowerShell z AzureRM do Az.
Tyto příkazy předpokládají, že jste uložili soubory JSON do složky: 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
}
Související obsah
Projděte si další podporované aktivity toku řízení: