Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
APLICA-SE A:
Azure Data Factory
Azure Synapse Analytics
Dica
Data Factory no Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA interna e novos recursos. Se você não estiver familiarizado com a integração de dados, comece com Fabric Data Factory. As cargas de trabalho existentes do ADF podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.
A atividade Until fornece a mesma funcionalidade que uma estrutura de loop do-until fornece em linguagens de programação. Ela executa um conjunto de atividades em um loop até que a condição associada à atividade seja avaliada como verdadeira. Se uma atividade interna falhar, a atividade Until não será interrompida. Você pode especificar um valor de tempo limite para a atividade Until.
Criar um atividade Until com a interface do usuário
Para usar uma atividade Until em um pipeline, conclua estas etapas:
Procure Until no painel Atividades do pipeline e arraste uma atividade Until para a tela do pipeline.
Selecione a atividade Until na tela, se ainda não estiver selecionada, e sua guia Configurações, para editar seus detalhes.
Insira uma expressão que será avaliada após todas as atividades filho definidas na atividade Until serem executadas. Se a expressão for avaliada como falsa, a atividade Until executará todas as suas atividades filhas novamente. Quando for avaliado como verdadeiro, a atividade Until será concluída. A expressão pode ser uma expressão de cadeia de caracteres literais ou uma combinação de expressões dinâmicas, variáveis do sistema ou saídas de outras atividades. O exemplo a seguir verifica o valor de uma variável de matriz de pipeline definida anteriormente chamada TestVariable para ver se ela é avaliada como ['done'].
Defina as atividades que a atividade Until executa selecionando o botão Editar Atividades diretamente na atividade Até ou selecionando a guia Atividades para selecioná-la ali. Um novo painel do editor de atividades é exibido onde você pode adicionar quaisquer atividades para a atividade Until executar. Neste exemplo, uma atividade Definir Variável define o valor da variável referenciada como 'done'. Portanto, a expressão da atividade Until será verdadeira na primeira vez em que for executada e, em seguida, a atividade Until será interrompida. Você pode usar variáveis semelhantes para verificar quaisquer condições. A atividade Until executa suas atividades filho sempre que a expressão é avaliada, até que as condições sejam atendidas. Se você iterar em várias atividades, haverá um possível atraso na saída do loop devido ao trabalho de agregação e limpeza executado pelo pipeline.
Sintaxe
{
"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"
}
Propriedades de tipo
| Propriedade | Descrição | Valores permitidos | Obrigatório |
|---|---|---|---|
| name | Nome da atividade Until. |
String | Sim |
| tipo | Deve ser definido como Until. | String | Sim |
| expressão | Expressão que deve ser avaliada como verdadeira ou falsa | Expressão. | Sim |
| tempo limite | O loop do-until atinge o tempo limite após o tempo especificado aqui. | Cadeia de caracteres.
d.hh:mm:ss (ou) hh:mm:ss. O valor padrão é sete dias. Valor máximo é: 90 dias. |
Não |
| Atividades | Conjunto de atividades que é executado até que a expressão seja avaliada como true. |
Matriz de atividades. | Sim |
Exemplo 1
Observação
Esta seção fornece definições de JSON e comandos de exemplo do PowerShell para executar o pipeline. Para obter um guia passo a passo para criar um pipeline usando definições de Azure PowerShell e JSON, consulte tutorial: criar um data factory usando Azure PowerShell.
Pipeline com a atividade Until
Neste exemplo, o pipeline tem duas atividades: Until e Wait. A atividade Wait aguarda o período especificado antes de executar a atividade da Web no loop. Para saber mais sobre expressões e funções, consulte Linguagem e funções de expressão.
{
"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"
}
]
}
}
Exemplo 2
O pipeline desta amostra copia dados de uma pasta de entrada para uma pasta de saída em um loop. O loop é encerrado quando o valor do parâmetro de repetição é definido como falso ou atinge o tempo limite após um minuto.
Pipeline com a atividade 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"
}
}
}
}
Armazenamento do Azure Linked Service (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Conjunto de dados de blob de Azure parametrizado (BlobDataset.json)
Os pipeline define o folderPath com o valor do parâmetro outputPath1 ou outputPath2 do pipeline.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
JSON do parâmetro do pipeline (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
Comandos do PowerShell
Observação
Recomendamos que você use o módulo Azure Az PowerShell para interagir com Azure. Para começar, consulte Instalar Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, consulte Migrate Azure PowerShell do AzureRM para o Az.
Esses comandos pressupõem que você salvou os arquivos JSON na pasta: 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
}
Conteúdo relacionado
Veja outras atividades de fluxo de controle com suporte: