Aktivita Until ve službě Azure Data Factory a Synapse Analytics
PLATÍ PRO: Azure Data Factory Azure Synapse Analytics
Tip
Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.
Aktivita Until funguje stejně jako smyčka 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
Pokud chcete v kanálu použít aktivitu Until, proveďte následující kroky:
Vyhledejte v podokně Aktivity kanálu a přetáhněte aktivitu Until na plátno kanálu.
Chcete-li upravit podrobnosti, vyberte na plátně aktivitu Until (Dokud není vybraná) a jeho kartu Nastavení .
Zadejte výraz, který se vyhodnotí po všech podřízených aktivitách definovaných v aktivitě Until. Pokud se výraz vyhodnotí jako nepravda, aktivita Until znovu provede všechny jeho 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'].
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 Nastavit proměnnou jednoduše nastaví hodnotu proměnné odkazované ve výše uvedeném výrazu na ['done'], takže výraz Until aktivity bude pravdivý při prvním spuštění a aktivita Until se zastaví. V reálném světě můžete zkontrolovat všechny požadované podmínky a aktivita Until bude pokračovat v provádění podřízených aktivit při každém vyhodnocení výrazu, dokud nebudou splněny podmínky.
Syntaxe
{
"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 | Požaduje se |
---|---|---|---|
name | Until Název aktivity. |
String | Ano |
type | Musí být nastavena na Hodnotu Until. | String | Ano |
výraz | Výraz, který musí být vyhodnocen jako true nebo false | Výraz. | Ano |
timeout | 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í. |
No |
Aktivity | Sada aktivit, které se provádějí, dokud se výraz nehodnotí jako true . |
Pole aktivit. | Ano |
Příklad 1
Poznámka:
Tato část obsahuje definice JSON a ukázkové příkazy PowerShellu pro spuštění kanálu. Návod s podrobnými pokyny k vytvoření kanálu pomocí Azure PowerShellu a definic JSON najdete v kurzu: Vytvoření datové továrny pomocí Azure PowerShellu.
Kanál s aktivitou Until
V tomto příkladu má kanál dvě aktivity: Do 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
Kanál v této ukázce kopíruje data ze vstupní složky do výstupní složky ve smyčce. 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 azure blob (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 kanálu (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
Příkazy prostředí PowerShell
Poznámka:
Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na 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í: