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:

  1. Wyszukaj ciąg Until w okienku Działania potoku i przeciągnij działanie Until na kanwę potoku.

  2. Wybierz działanie Until na kanwie, jeśli nie zostało jeszcze wybrane, a jej karta Ustawienia, aby edytować jego szczegóły.

    Shows the Settings tab of the Until activity in the pipeline canvas.

  3. 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'].

    Shows the  Add dynamic content  pane with an expression to check a variable for a defined value.

  4. 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.

    Shows the activities editor for an Until activity with a Set Variable activity defined.

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. Ciąg. 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
}

Zobacz inne obsługiwane działania przepływu sterowania: