Do czasu działania w usługach Azure Data Factory i Synapse Analytics
DOTYCZY: Azure Data Factory Azure Synapse Analytics
Napiwek
Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !
Działanie Until udostępnia te same funkcje, co struktura pętli do-until w językach programowania. Służy do wykonywania zestawu działań w pętli do momentu, gdy warunek skojarzony z działaniem zostanie obliczony na wartość true. Jeśli działanie wewnętrzne zakończy się niepowodzeniem, działanie Until nie zostanie zatrzymane. Możesz określić wartość limitu czasu dla działania until.
Tworzenie działania Until za pomocą interfejsu użytkownika
Aby użyć działania Until w potoku, wykonaj następujące kroki:
Wyszukaj ciąg Until w okienku Działania potoku i przeciągnij działanie Until na kanwę potoku.
Wybierz działanie Until na kanwie, jeśli nie zostało jeszcze wybrane, a jego karta Ustawienia , aby edytować jego szczegóły.
Wprowadź wyrażenie, które będzie oceniane po wykonaniu wszystkich działań podrzędnych zdefiniowanych w działaniu Until. Jeśli wyrażenie zwróci wartość false, działanie Until ponownie wykonuje wszystkie działania podrzędne. Gdy zostanie obliczona wartość true, działanie Until zostanie ukończone. Wyrażenie może być wyrażeniem ciągu literału lub dowolną kombinacją wyrażeń dynamicznych , funkcji, zmiennych systemowych lub danych wyjściowych z innych działań. Poniższy przykład sprawdza wartość wcześniej zdefiniowanej zmiennej tablicy potoku o nazwie TestVariable, aby sprawdzić, czy daje ona wartość ['done'].
Zdefiniuj działania wykonywane przez działanie Until, wybierając przycisk Edytuj działania bezpośrednio w działaniu Until lub wybierając kartę Działania, aby ją tam wybrać. Zostanie wyświetlone nowe okienko edytora działań, w którym można dodać dowolne działania dla działania Until do wykonania. W tym przykładzie działanie Ustaw zmienną po prostu ustawia wartość zmiennej przywoływanej w wyżej wymienionym wyrażeniu na wartość ['done'], więc wyrażenie Until będzie prawdziwe przy pierwszym jego wykonaniu, a działanie Until zostanie zatrzymane. W rzeczywistym użyciu można sprawdzić wszystkie wymagane warunki, a działanie Until będzie nadal wykonywać swoje działania podrzędne za każdym razem, gdy wyrażenie zostanie ocenione, dopóki warunki nie zostaną spełnione.
Składnia
{
"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"
}
Właściwości typu
Właściwości | opis | Dozwolone wartości | Wymagania |
---|---|---|---|
name | Until Nazwa działania. |
String | Tak |
type | Musi być ustawiona na Wartość Do. | String | Tak |
wyrażenie | Wyrażenie, które musi mieć wartość true lub false | Wyrażenie. | Tak |
timeout | Pętla do-until jest przekroczona po upływie określonego czasu w tym miejscu. | Struna. d.hh:mm:ss (lub) hh:mm:ss . Wartość domyślna to siedem dni. Wartość maksymalna to: 90 dni. |
Nie. |
Działania | Zestaw działań, które są wykonywane, dopóki wyrażenie nie zwróci wartości .true |
Tablica działań. | Tak |
Przykład 1
Uwaga
Ta sekcja zawiera definicje JSON i przykładowe polecenia programu PowerShell służące do uruchamiania potoku. Aby zapoznać się z instrukcjami krok po kroku dotyczącymi tworzenia potoku przy użyciu programu Azure PowerShell i definicji JSON, zobacz samouczek: tworzenie fabryki danych przy użyciu programu Azure PowerShell.
Potok z działaniem Until
W tym przykładzie potok ma dwa działania: Do i Zaczekaj. Działanie Wait czeka na określony okres czasu przed uruchomieniem działania internetowego w pętli. Aby dowiedzieć się więcej o wyrażeniach i funkcjach, zobacz Język i funkcje wyrażeń.
{
"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"
}
]
}
}
Przykład 2
Potok w tym przykładzie kopiuje dane z folderu wejściowego do folderu wyjściowego w pętli. Pętla kończy się, gdy wartość parametru powtórzenia jest ustawiona na wartość false lub limit czasu po jednej minucie.
Potok z działaniem 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"
}
}
}
}
Połączona usługa Azure Storage (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Sparametryzowany zestaw danych obiektów blob platformy Azure (BlobDataset.json)
Potok ustawia parametr folderPath na wartość parametru outputPath1 lub outputPath2 potoku.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
Kod JSON parametru potoku (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
Polecenia programu PowerShell
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Te polecenia zakładają, że pliki JSON zostały zapisane w folderze: 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
}
Powiązana zawartość
Zobacz inne obsługiwane działania przepływu sterowania: