Udostępnij za pośrednictwem


Tworzenie wyzwalacza uruchamiającego potok w oknie wirowania

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ą !

Ten artykuł zawiera kroki tworzenia, uruchamiania i monitorowania wyzwalacza okna wirowania. Aby uzyskać ogólne informacje o wyzwalaczach i obsługiwanych typach, zobacz Wykonywanie i wyzwalacze potoku.

Wyzwalacze okna wirowania to rodzaj wyzwalaczy uruchamianych w określonych odstępach czasu od wskazanego czasu rozpoczęcia przy zachowaniu stanu. Okna wirowania to seria stałych rozmiarów, nienalewających się i ciągłych interwałów czasowych. Wyzwalacz okna wirowania ma relację jeden do jednego z potokiem i może odwoływać się tylko do pojedynczego potoku.

Wyzwalacz okna wirowania jest bardziej ciężkim alternatywą dla wyzwalacza harmonogramu. Oferuje ona zestaw funkcji złożonych scenariuszy, takich jak (zależność od innych wyzwalaczy okien stałoczasowych, ponowne uruchamianie zadania, które zakończyło się niepowodzeniem i ustawianie ponawiania próby użytkownika dla potoków). Aby dokładniej zrozumieć różnicę między wyzwalaczem harmonogramu a wyzwalaczem okna wirowania, zobacz Porównanie typów wyzwalaczy.

Środowisko portalu usługi Azure Data Factory i usługi Azure Synapse

  1. Aby utworzyć wyzwalacz okna wirowania w witrynie Azure Portal, wybierz kartę Wyzwalacze , a następnie wybierz pozycję Nowy.
  2. Po otworze okienka konfiguracji wyzwalacza wybierz pozycję Okno wirowania. Następnie zdefiniuj właściwości wyzwalacza okna wirowania.
  3. Kiedy skończysz, wybierz Zapisz.

Właściwości typu wyzwalacza okna wirowania

Okno wirowania ma następujące właściwości typu wyzwalacza:

{
    "name": "MyTriggerName",
    "properties": {
        "type": "TumblingWindowTrigger",
        "runtimeState": "<<Started/Stopped/Disabled - readonly>>",
        "typeProperties": {
            "frequency": <<Minute/Hour>>,
            "interval": <<int>>,
            "startTime": "<<datetime>>",
            "endTime": <<datetime - optional>>,
            "delay": <<timespan - optional>>,
            "maxConcurrency": <<int>> (required, max allowed: 50),
            "retryPolicy": {
                "count": <<int - optional, default: 0>>,
                "intervalInSeconds": <<int>>,
            },
            "dependsOn": [
                {
                    "type": "TumblingWindowTriggerDependencyReference",
                    "size": <<timespan - optional>>,
                    "offset": <<timespan - optional>>,
                    "referenceTrigger": {
                        "referenceName": "MyTumblingWindowDependency1",
                        "type": "TriggerReference"
                    }
                },
                {
                    "type": "SelfDependencyTumblingWindowTriggerReference",
                    "size": <<timespan - optional>>,
                    "offset": <<timespan>>
                }
            ]
        },
        "pipeline": {
            "pipelineReference": {
                "type": "PipelineReference",
                "referenceName": "MyPipelineName"
            },
            "parameters": {
                "parameter1": {
                    "type": "Expression",
                    "value": "@{concat('output',formatDateTime(trigger().outputs.windowStartTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
                },
                "parameter2": {
                    "type": "Expression",
                    "value": "@{concat('output',formatDateTime(trigger().outputs.windowEndTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
                },
                "parameter3": "https://mydemo.azurewebsites.net/api/demoapi"
            }
        }
    }
}

Poniższa tabela zawiera ogólne omówienie głównych elementów JSON związanych z cyklem i planowaniem wyzwalacza okna wirowania.

Element JSON opis Type Dozwolone wartości Wymagania
type Typ wyzwalacza. Jest type to stała wartość TumblingWindowTrigger. String TumblingWindowTrigger Tak
runtimeState Bieżący stan czasu wykonywania wyzwalacza.
Ten element jest <readOnly>.
String Started, , StoppedDisabled Tak
frequency Ciąg reprezentujący jednostkę częstotliwości (minuty, godziny lub miesiące), w których wyzwalacz jest powtarzany. startTime Jeśli wartości daty są bardziej szczegółowe niż frequency wartość, startTime daty są brane pod uwagę, gdy są obliczane granice okna. Jeśli na przykład frequency wartość to hourly i startTime wartość to 2017-09-01T10:10:10Z, pierwszym oknem jest (2017-09-01T10:10:10Z, 2017-09-01T11:10Z). String Minute, , HourMonth Tak
interval Dodatnia liczba całkowita, która określa interwał wartości frequency , która określa częstotliwość uruchamiania wyzwalacza. Jeśli na przykład interval parametr to i 3 frequency ma hourwartość , wyzwalacz jest powtarzany co 3 godziny.
Minimalny interwał okna wynosi 5 minut.
Integer Dodatnia liczba całkowita. Tak
startTime Pierwsze wystąpienie, które może znajdować się w przeszłości. Pierwszy interwał wyzwalacza to (startTime, startTime + interval). DateTime DateTime Wartość. Tak
endTime Ostatnie wystąpienie, które może znajdować się w przeszłości. DateTime DateTime Wartość. Tak
delay Czas opóźnienia rozpoczęcia przetwarzania danych dla okna. Uruchomienie potoku jest uruchamiane po oczekiwanym czasie wykonywania oraz o opóźnieniu. Opóźnienie określa, jak długo wyzwalacz czeka przez czas ukończenia przed wyzwoleniem nowego uruchomienia. Opóźnienie nie zmienia okna startTime. Na przykład delay wartość 00:10:00 oznacza opóźnienie 10 minut. Timespan
(hh:mm:ss)
timespan Wartość, w której wartość domyślna to 00:00:00. Nie.
maxConcurrency Liczba równoczesnych uruchomień wyzwalacza dla okien, które są gotowe. Na przykład, aby wypełnić godzinowe uruchomienia dla wczorajszych wyników w 24 oknach. Jeśli maxConcurrency = 10, zdarzenia wyzwalacza są wyzwalane tylko dla pierwszych 10 okien (00:00-01:00 – 09:00-10:00). Po zakończeniu pierwszych 10 wyzwolonych przebiegów potoku wyzwalacz zostanie wyzwolony dla następnych 10 okien (10:00-11:00 – 19:00-20:00). Kontynuując ten przykład maxConcurrency = 10, jeśli jest gotowych 10 okien, istnieje 10 łącznych przebiegów potoku. Jeśli tylko jedno okno jest gotowe, tylko jedno uruchomienie potoku. Integer Liczba całkowita z zakresu od 1 do 50. Tak
retryPolicy: Count Liczba ponownych prób przed uruchomieniem potoku jest oznaczona jako Failed. Integer Liczba całkowita, gdzie wartość domyślna to 0 (bez ponownych prób). Nie.
retryPolicy: intervalInSeconds Opóźnienie między ponownymi próbami określonymi w sekundach. Integer Liczba sekund, w których wartość domyślna to 30. Minimalna wartość to 30. Nie.
dependsOn: type Typ .TumblingWindowTriggerReference Wymagane, jeśli ustawiono zależność. String TumblingWindowTriggerDependencyReference, SelfDependencyTumblingWindowTriggerReference Nie.
dependsOn: size Rozmiar okna wirowania zależności. Timespan
(hh:mm:ss)
Wartość dodatnia timespan , w której wartością domyślną jest rozmiar okna wyzwalacza podrzędnego. Nie.
dependsOn: offset Przesunięcie wyzwalacza zależności. Timespan
(hh:mm:ss)
timespan Wartość, która musi być ujemna w zależności od siebie. Jeśli nie określono żadnej wartości, okno jest takie samo jak sam wyzwalacz. Samodzielna zależność: Tak
Inne: Nie

Uwaga

Po opublikowaniu interval wyzwalacza okna wirowania nie można edytować wartości i frequency .

Zmienne systemowe WindowStart i WindowEnd

Możesz użyć WindowStart zmiennych systemowych i WindowEnd wyzwalacza okna wirowania w definicji potoku (czyli dla części zapytania). Przekaż zmienne systemowe jako parametry do potoku w definicji wyzwalacza . W poniższym przykładzie pokazano, jak przekazać te zmienne jako parametry.

{
    "name": "MyTriggerName",
    "properties": {
        "type": "TumblingWindowTrigger",
            ...
        "pipeline": {
            "pipelineReference": {
                "type": "PipelineReference",
                "referenceName": "MyPipelineName"
            },
            "parameters": {
                "MyWindowStart": {
                    "type": "Expression",
                    "value": "@{concat('output',formatDateTime(trigger().outputs.windowStartTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
                },
                "MyWindowEnd": {
                    "type": "Expression",
                    "value": "@{concat('output',formatDateTime(trigger().outputs.windowEndTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
                }
            }
        }
    }
}

Aby użyć wartości zmiennych systemowych i WindowEnd w definicji potoku, należy odpowiednio użyć MyWindowStart WindowStart parametrów i MyWindowEnd .

Kolejność wykonywania okien w scenariuszu wypełniania

Jeśli wyzwalacz znajduje się w przeszłości, na podstawie formuły M=(CurrentTime- TriggerStartTime)/TumblingWindowSize wyzwalacz startTime generuje równoległe operacje wypełniania wstecznego {M} (przeszłości), honorując współbieżność wyzwalacza przed wykonaniem przyszłych przebiegów. Kolejność wykonywania okien jest deterministyczna, od najstarszych do najnowszych interwałów. Obecnie nie można zmodyfikować tego zachowania.

Uwaga

W tym scenariuszu wszystkie uruchomienia z wybranego startTime programu są uruchamiane przed wykonaniem przyszłych przebiegów. Jeśli konieczne jest wypełnienie kopii zapasowej przez długi czas, zalecamy przeprowadzenie początkowego ładowania historycznego.

Istniejące elementy TriggerResource

Następujące kwestie dotyczą aktualizowania istniejących TriggerResource elementów:

  • Nie można zmienić wartości frequency elementu (lub rozmiaru okna) wyzwalacza wraz z interval elementem po utworzeniu wyzwalacza. To ograniczenie jest wymagane do prawidłowego funkcjonowania ponownych triggerRun uruchomień i ocen zależności.
  • Jeśli wartość endTime elementu wyzwalacza zmienia się (dodając lub aktualizując), stan okien, które są już przetwarzane, nie jest resetowany. Wyzwalacz honoruje nową endTime wartość. Jeśli nowa endTime wartość jest wcześniejsza niż okna, które zostały już wykonane, wyzwalacz zostanie zatrzymany. W przeciwnym razie wyzwalacz zatrzymuje się po napotkaniu nowej endTime wartości.

Ponowne próby przypisane przez użytkownika potoków

W przypadku awarii potoku wyzwalacz okna wirowania może ponowić próbę wykonania przywoływalnego potoku automatycznie przy użyciu tych samych parametrów wejściowych bez interwencji użytkownika. retryPolicy Użyj właściwości w definicji wyzwalacza, aby określić tę akcję.

Zależność wyzwalacza okna wirowania

Jeśli chcesz upewnić się, że wyzwalacz okna wirowania jest wykonywany dopiero po pomyślnym wykonaniu innego wyzwalacza okna wirowania w fabryce danych, utwórz zależność wyzwalacza okna wirowania.

Anulowanie uruchomienia okna wirowania

Możesz anulować przebiegi wyzwalacza okna wirowania, jeśli określone okno znajduje się w stanie Oczekiwanie, Oczekiwanie na zależność lub Uruchomione :

  • Jeśli okno jest w stanie Uruchomiono , anuluj skojarzone uruchomienie potoku, a uruchomienie wyzwalacza zostanie oznaczone jako Anulowane później.
  • Jeśli okno znajduje się w stanie oczekiwania lub oczekiwania na zależność , możesz anulować okno z obszaru Monitorowanie.

Możesz również ponownie uruchomić anulowane okno. Ponowne uruchomienie pobiera najnowsze opublikowane definicje wyzwalacza. Zależności dla określonego okna są ponownie oceniane po ponownym uruchomieniu .

Przykład dla programu Azure PowerShell i interfejsu wiersza polecenia platformy Azure

W tej sekcji pokazano, jak używać programu Azure PowerShell do tworzenia, uruchamiania i monitorowania wyzwalacza.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Wymagania wstępne

Przykładowy kod

  1. Utwórz plik JSON o nazwie MyTrigger.json w folderze C:\ADFv2QuickStartPSH\ o następującej zawartości:

    Ważne

    Przed zapisaniem pliku JSON ustaw wartość startTime elementu na bieżący czas uniwersalny koordynowany (UTC). Ustaw wartość endTime elementu na jedną godzinę po bieżącej godzinie UTC.

    {
      "name": "PerfTWTrigger",
      "properties": {
        "type": "TumblingWindowTrigger",
        "typeProperties": {
          "frequency": "Minute",
          "interval": "15",
          "startTime": "2017-09-08T05:30:00Z",
          "endTime" : "2017-09-08T06:30:00Z",
          "delay": "00:00:01",
          "retryPolicy": {
            "count": 2,
            "intervalInSeconds": 30
          },
          "maxConcurrency": 50
        },
        "pipeline": {
          "pipelineReference": {
            "type": "PipelineReference",
            "referenceName": "DynamicsToBlobPerfPipeline"
          },
          "parameters": {
            "windowStart": "@trigger().outputs.windowStartTime",
            "windowEnd": "@trigger().outputs.windowEndTime"
          }
        },
        "runtimeState": "Started"
      }
    }
    
  2. Utwórz wyzwalacz przy użyciu polecenia cmdlet Set-AzDataFactoryV2Trigger :

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Upewnij się, że stan wyzwalacza jest zatrzymany przy użyciu polecenia cmdlet Get-AzDataFactoryV2Trigger :

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  4. Uruchom wyzwalacz przy użyciu polecenia cmdlet Start-AzDataFactoryV2Trigger :

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Upewnij się, że stan wyzwalacza to Rozpoczęto przy użyciu polecenia cmdlet Get-AzDataFactoryV2Trigger :

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. Pobierz przebiegi wyzwalacza w programie Azure PowerShell przy użyciu polecenia cmdlet Get-AzDataFactoryV2TriggerRun . Aby uzyskać informacje na temat przebiegów wyzwalacza, wykonaj następujące polecenie okresowo. TriggerRunStartedAfter Zaktualizuj wartości iTriggerRunStartedBefore, aby odpowiadały wartościom w definicji wyzwalacza:

    Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"
    

Aby monitorować uruchomienia wyzwalacza i uruchomienia potoków w witrynie Azure Portal, zobacz Monitorowanie przebiegów potoków.