Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Фабрика данных Azure
Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
Действие Until выполняет те же функции, что и циклическая структура do-until в языках программирования. Оно выполняет набор действий в цикле, пока условие, связанное с действием, не получит значение true. Если внутреннее действие завершается ошибкой, действие "Пока" не останавливается. Можно указать значение времени ожидания для действия until.
Создание действия Until с помощью пользовательского интерфейса
Чтобы использовать действие Until в конвейере, выполните следующие действия:
Найдите "Пока" в области действий конвейера и перетащите действие "Пока" на холст конвейера.
Выберите действие "Пока" на холсте, если оно еще не выбрано, и вкладку "Параметры", чтобы изменить ее сведения.
Введите выражение, которое будет вычисляться после выполнения всех дочерних действий, определенных в действии "Пока". Если выражение оценивается как ложное, действие "До тех пор, пока" снова выполняет все дочерние действия. При выполнении условия истинности действие "До тех пор, пока" завершается. Можно использовать литеральное строковое выражение, а также любое сочетание динамических выражений, функций, системных переменных или выходных данных других действий. В приведенном ниже примере проверяется значение ранее определенной переменной массива конвейера с именем TestVariable, чтобы определить, имеет ли она значение ['done'].
Определите действия, выполняемые действием "Пока", нажав кнопку "Изменить действия" непосредственно в действии "Пока" или выбрав вкладку "Действия", чтобы выбрать ее. Отобразится новая панель редактора действий, в которой можно добавить любые действия для выполнения действия "До тех пор, пока". В этом примере действие Set Variable задает значение указанной переменной на "выполнено". Поэтому выражение действия "Пока" будет истинным при первом выполнении, а затем действие "Пока" будет остановлено. Для проверки условий можно использовать аналогичные переменные. Действие "Пока" выполняет дочерние действия при каждом вычислении выражения, пока не будут выполнены условия. Если вы выполняете итерацию по нескольким действиям, может возникнуть задержка при выходе из цикла из-за работы по агрегации и очистке, выполняемой конвейером.
Синтаксис
{
"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"
}
Свойства типа
| Свойство | Описание | Допустимые значения | Обязательное поле |
|---|---|---|---|
| имя | Имя действия Until. |
Строка | Да |
| тип | Необходимо установить значение на Until. | Строка | Да |
| выражение | Выражение, которое должно оцениваться как истинное или ложное. | Выражение. | Да |
| таймаут | Цикл do-until прекращается по истечении указанного здесь времени. | Строка.
d.hh:mm:ss (или) hh:mm:ss. Значение по умолчанию — семь дней. Максимальное значение — 90 дней. |
Нет |
| Деятельности | Набор действий, которые выполняются до тех пор, пока выражение не получит значение true. |
Набор действий. | Да |
Пример 1
Примечание.
Этот раздел содержит определения JSON и примеры команд PowerShell для выполнения действий в конвейере. Чтобы получить пошаговые инструкции по созданию конвейера с использованием Azure PowerShell и определений JSON, см. руководство: создание фабрики данных с помощью Azure PowerShell.
Конвейер с действием Until
В этом примере конвейер содержит два действия: Until и Wait. Действие Wait ожидает в течение указанного периода времени перед запуском действия Web в цикле. Дополнительные сведения о языке выражений и функциях см. в статье Язык выражений и функции.
{
"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"
}
]
}
}
Пример 2
В этом примере конвейер в цикле копирует данные из входной папки в выходную папку. Цикл завершается, когда значение параметра repeat станет равным false или по истечении одной минуты.
Конвейер с действием 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"
}
}
}
}
Связанная служба хранилища Azure (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Параметризованный набор данных Azure Blob (BlobDataset.json)
Конвейер устанавливает для параметра folderPath значение outputPath1 или outputPath2.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
JSON-файл с параметрами конвейера (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
Команды PowerShell
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Миграция Azure PowerShell с AzureRM на Az.
Эти команды предполагают, что файлы JSON сохранены в папке: 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
}
Связанный контент
Ознакомьтесь с другими поддерживаемыми действиями потока управления: