Até a atividade no Azure Data Factory e no Synapse Analytics
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Dica
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!
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. Nesse exemplo, uma atividade de Conjunto de Variáveis simplesmente define o valor da variável referenciada na expressão mencionada como [”concluído”], de modo que a expressão da atividade Until será verdadeira na primeira vez que for executada, e a atividade Until será interrompida. No mundo real, você pode verificar as condições necessárias e a atividade Until continuará executando suas atividades filho sempre que a expressão for avaliada, até que as condições sejam atendidas.
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 |
type | Deve ser definido como Until. | String | Sim |
expressão | Expressão que deve ser avaliada como verdadeira ou falsa | Expressão. | Yes |
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. |
No |
Atividades | Conjunto de atividades que é executado até que a expressão seja avaliada como true . |
Matriz de atividades. | Yes |
Exemplo 1
Observação
Esta seção fornece definições de JSON e comandos de exemplo do PowerShell para executar o pipeline. Para obter instruções com instruções passo a passo para criar um pipeline do usando definições de JSON e do Azure PowerShell, consulte o tutorial: criar um Data Factory usando o 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"
}
}
}
}
Serviço vinculado do Armazenamento do Azure (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Conjunto de dados parametrizado do Blob do Azure (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 Az PowerShell do Azure para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o 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: