Fino all'attività in Azure Data Factory e Synapse Analytics
SI APPLICA A: Azure Data Factory Azure Synapse Analytics
Suggerimento
Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!
L'attività Until svolge la stessa funzione della struttura di ciclo do-until nei linguaggi di programmazione. Esegue infatti un set di attività in un ciclo finché la condizione associata con l'attività restituisce true. Se un'attività interna ha esito negativo, l'attività Until non si arresta. È possibile specificare un valore di timeout per l'attività Until.
Creare un'attività Until con l'interfaccia utente
Per usare un'attività Until in una pipeline, completare la procedura seguente:
Cercare Until nel riquadro Attività pipeline e trascinare un'attività Until nell'area di disegno della pipeline.
Selezionare l'attività Until nell'area di disegno se non è già selezionata e la relativa scheda Impostazioni per modificarne i dettagli.
Immettere un'espressione che verrà valutata dopo l'esecuzione di tutte le attività figlio definite nell'attività Until. Se l'espressione restituisce false, l'attività Until esegue di nuovo tutte le attività figlio. Quando restituisce true, l'attività Until viene completata. L'espressione può essere un'espressione stringa letterale o qualsiasi combinazione di espressioni dinamiche , funzioni, variabili di sistema o output di altre attività. L'esempio seguente controlla il valore di una variabile di matrice di pipeline definita in precedenza denominata TestVariable per verificare se restituisce ['done'].
Definire le attività eseguite dall'attività Until selezionando il pulsante Modifica attività direttamente nell'attività Until oppure selezionando la scheda Attività per selezionarla. Viene visualizzato un nuovo riquadro dell'editor di attività in cui è possibile aggiungere qualsiasi attività per l'attività Until da eseguire. In questo esempio, un'attività Imposta variabile imposta semplicemente il valore della variabile a cui fa riferimento nell'espressione precedente su ['done'], quindi l'espressione dell'attività Until sarà true la prima volta che viene eseguita e l'attività Until verrà interrotta. Nell'uso reale, è possibile controllare le condizioni necessarie e l'attività Until continuerà a eseguire le attività figlio ogni volta che l'espressione viene valutata, fino a quando non vengono soddisfatte le condizioni.
Sintassi
{
"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"
}
Proprietà del tipo
Proprietà | Descrizione | Valori consentiti | Obbligatoria |
---|---|---|---|
name | Nome dell'attività Until . |
String | Sì |
type | Deve essere impostata su Until. | String | Sì |
expression | Espressione che deve restituire true o false | Espressione. | Sì |
timeout | Il ciclo do-until raggiunge il timeout allo scadere del tempo specificato qui. | String. d.hh:mm:ss (o) hh:mm:ss . Il valore predefinito è sette giorni. Il valore massimo è 90 giorni. |
No |
Impegni | Set di attività che vengono eseguite fino a quando l'espressione restituisce true . |
Matrice di attività. | Sì |
Esempio 1
Nota
Questa sezione include le definizioni JSON e i comandi di PowerShell di esempio per eseguire la pipeline. Per una procedura dettagliata con istruzioni dettagliate per creare una pipeline usando Azure PowerShell e le definizioni JSON, vedere Esercitazione: Creare una data factory usando Azure PowerShell.
Pipeline con attività Until
In questo esempio nella pipeline sono presenti due attività: Until e Wait. L'attività Wait attende per il periodo di tempo specificato prima di eseguire l'attività Web nel ciclo. Per informazioni su espressioni e funzioni, vedere Linguaggio e funzioni delle espressioni.
{
"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"
}
]
}
}
Esempio 2
La pipeline in questo esempio copia i dati da una cartella di input a una cartella di output in un ciclo. Il ciclo termina quando il valore del parametro repeat è impostato su false oppure quando raggiunge il timeout, dopo un minuto.
Pipeline con attività 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"
}
}
}
}
Servizio collegato di Archiviazione di Azure (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Set di dati BLOB di Azure con parametri (BlobDataset.json)
La pipeline imposta folderPath sul valore del parametro outputPath1 o outputPath2 della pipeline.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
JSON dei parametri della pipeline (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
Comandi di PowerShell
Nota
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Questi comandi presuppongono che i file JSON siano stati salvati nella cartella 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
}
Contenuto correlato
Vedere altre attività del flusso di controllo supportate: