Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
SE APLICA A:
Azure Data Factory
Azure Synapse Analytics
Sugerencia
Pruebe Data Factory en Microsoft Fabric, una solución de análisis integral para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.
La actividad Until proporciona la misma funcionalidad que una estructura de bucle Do-Until en lenguajes de programación. Ejecuta un conjunto de actividades en un bucle hasta que la condición asociada a la actividad se evalúa como true. Si se produce un error en una actividad interna, la actividad Until no se detiene. Puede especificar un valor de tiempo de espera para la actividad Until.
Creación de una actividad Until con una interfaz de usuario
Para usar una actividad Until en una canalización, realice los pasos siguientes:
Busque Until en el panel Actividades de canalización y arrastre una actividad Until al lienzo de canalización.
Seleccione la actividad Until en el lienzo si aún no está seleccionada y su pestaña Configuración para editar sus detalles.
Escriba una expresión que se evaluará una vez que se ejecuten todas las actividades secundarias definidas en la actividad Until. Si la expresión se evalúa como false, la actividad Until ejecuta de nuevo todas sus actividades secundarias. Si se evalúa como true, la actividad Until finaliza. La expresión puede ser una expresión de cadena literal o cualquier combinación de expresiones y funciones dinámicas, variables del sistema o salidas de otras actividades. En el ejemplo siguiente se comprueba el valor de una variable de matriz de canalización definida previamente denominada TestVariable para ver si se evalúa como ["done"].
Para definir las actividades que la actividad Until ejecutará, seleccione el botón Editar actividades en la actividad Until directamente, o bien seleccione la pestaña Actividades para definirlas allí. Se muestra un nuevo panel del editor de actividades en el que puede agregar cualquier actividad para que la actividad Until la ejecute. En este ejemplo, una actividad Set Variable establece el valor de la variable a la que se hace referencia en "done". Por lo tanto, la expresión de la actividad Until será verdadera la primera vez que se ejecute y, a continuación, la actividad Until se detendrá. Puede usar variables similares para comprobar las condiciones. La actividad Until ejecuta sus subactividades cada vez que se evalúa la expresión, hasta que se cumplen las condiciones. Si recorre en iteración varias actividades, existe un posible retraso en la salida del bucle debido al trabajo de agregación y limpieza realizado por la canalización.
Sintaxis
{
"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"
}
Propiedades de tipo
| Propiedad | Descripción | Valores permitidos | Obligatorio |
|---|---|---|---|
| name | Nombre de la actividad Until. |
String | Sí |
| type | Debe establecerse en Until. | String | Sí |
| expresión | Expresión que debe evaluarse como "true" o "false" | Expresión. | Sí |
| timeout | El tiempo de espera del bucle Do-Until se agota transcurrido el tiempo especificado aquí. | String.
d.hh:mm:ss (o) hh:mm:ss. El valor predeterminado es de siete días. El valor máximo es 90 días. |
No |
| Actividades | Conjunto de actividades que se ejecutan hasta que la expresión se evalúa como true. |
Matriz de actividades. | Sí |
Ejemplo 1
Nota:
En esta sección se proporcionan definiciones JSON y comandos de PowerShell de ejemplo para ejecutarlos en la canalización. Para ver una guía con instrucciones paso a paso para crear una canalización con definiciones de JSON y Azure PowerShell, consulte Tutorial: Creación de una factoría de datos mediante Azure PowerShell.
Canalización con actividad Until
En este ejemplo, la canalización tiene dos actividades: Until y Wait. La actividad Wait espera durante el período de tiempo especificado antes de ejecutar la actividad Web en el bucle. Para obtener más información sobre las expresiones y funciones, consulte Lenguaje de expresiones y funciones.
{
"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"
}
]
}
}
Ejemplo 2
La canalización de esta muestra copia los datos de una carpeta de entrada a una carpeta de salida en un bucle. El bucle finaliza cuando el valor del parámetro repeat está establecido en "false" o se agota el tiempo de espera transcurrido un minuto.
Canalización con actividad 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"
}
}
}
}
Servicio vinculado de Azure Storage (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Conjunto de datos de blob de Azure con parámetros (BlobDataset.json)
La canalización establece folderPath en el valor de los parámetros outputPath1 o outputPath2 de la canalización.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
Parámetro de canalización JSON (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
Comandos de PowerShell
Nota:
Se recomienda usar el módulo de PowerShell de Azure Az para interactuar con Azure. Para comenzar, consulte Instalar Azure PowerShell. Para obtener más información sobre cómo migrar al módulo Az de PowerShell, consulte Migrar Azure PowerShell de AzureRM a Az.
Estos comandos suponen que guardó los archivos JSON en la carpeta 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
}
Contenido relacionado
Consulte otras actividades de flujo de control admitidas: