Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 akcję Until w obszarze roboczym, jeśli nie została jeszcze wybrana, oraz jej kartę Ustawienia, aby edytować jej 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 zwraca wartość false, działanie typu Until ponownie wykonuje wszystkie swoje 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 do wykonania w ramach działania Until. W tym przykładzie działanie Ustaw zmienną ustawia wartość zmiennej, do której się odnosi, na "done". Dlatego wyrażenie Until będzie prawdziwe podczas pierwszego wykonania, a następnie aktywność Until zostanie zatrzymana. Możesz użyć podobnych zmiennych, aby sprawdzić dowolne warunki. Działanie Until wykonuje swoje działania podrzędne za każdym razem, gdy wyrażenie jest oceniane, dopóki warunki nie zostaną spełnione. Jeśli przechodzisz przez wiele działań, może wystąpić potencjalne opóźnienie przy wychodzeniu z pętli z powodu pracy związanej z agregacją i oczyszczaniem, wykonywanej przez potok.
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łasność | opis | Dozwolone wartości | Wymagane |
---|---|---|---|
nazwa |
Until Nazwa działania. |
String | Tak |
typ | Musi być ustawiona na Wartość Do. | String | Tak |
wyrażenie | Wyrażenie, które musi mieć wartość true lub false | Wyrażenie. | Tak |
przerwa czasowa | Pętla do-until kończy się po upływie określonego czasu. | Struna.
d.hh:mm:ss (lub) hh:mm:ss . Wartość domyślna to siedem dni. Wartość maksymalna to: 90 dni. |
Nie. |
Działania | Zestaw czynności wykonywanych, dopóki wyrażenie nie spełnia warunku true . |
Zbiór 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 przepływ ma dwie aktywności: Until 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 danych w tym przykładzie, który 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 false lub gdy upłynie jedna minuta.
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 rurociągu (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
Komendy 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: