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 ciągłe, nienakładające się na siebie serie odstępów czasu o stałych rozmiarach. Wyzwalacz okna wirowania ma relację jeden do jednego z potokiem i może odwoływać się tylko do pojedynczego potoku. Wyzwalacz okien stałoczasowych to bardziej duża alternatywa dla wyzwalacza harmonogramu oferująca zestaw funkcji dla złożonych scenariuszy (zależność od innych wyzwalaczy okien wirowania, 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 i wyzwalaczem okna wirowania, odwiedź tutaj.

Środowisko portalu usługi Azure Data Factory i usługi 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, a następnie zdefiniuj właściwości wyzwalacza okna wirowania.
  3. Po zakończeniu wybierz opcję 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. Typ jest stałą wartością "TumblingWindowTrigger". String "TumblingWindowTrigger" Tak
runtimeState Bieżący stan czasu wykonywania wyzwalacza.
Uwaga: ten element jest <readOnly>.
String "Uruchomiono", "Zatrzymano", "Wyłączone" Tak
frequency Ciąg reprezentujący jednostkę częstotliwości (minuty, godziny lub miesiące), w których wyzwalacz jest powtarzany. Jeśli wartości daty startTime są bardziej szczegółowe niż wartość częstotliwości, daty startTime są brane pod uwagę, gdy są obliczane granice okna. Jeśli na przykład wartość frequency ma wartość godzinową, a wartość startTime to 2017-09-01T10:10:10Z, pierwsze okno to (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). String "Minute", "Hour", "Month" Tak
interval Dodatnia liczba całkowita oznaczająca interwał wartości właściwości frequency, która określa częstotliwość uruchamiania wyzwalacza. Jeśli na przykład interwał wynosi 3, a częstotliwość to "godzina", wyzwalacz jest powtarzany co 3 godziny.
Uwaga: 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, interwał startTime + ). DateTime Wartość typu Data/godzina. Tak
endTime Ostatnie wystąpienie, które może znajdować się w przeszłości. DateTime Wartość typu Data/godzina. Tak
Opóźnienie 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 czasu rozpoczęcia okna. Na przykład wartość opóźnienia 00:10:00 oznacza opóźnienie 10 minut. Zakres czasu
(hh:mm:ss)
Wartość przedziału czasu, w którym wartość domyślna to 00:00:00. Nie.
Maxconcurrency Liczba równoczesnych uruchomień wyzwalacza dla okien, które są gotowe. Na przykład aby przywrócić wypełnienie godzinowe przebiegi dla wczorajszych wyników w 24 oknach. Jeśli parametr 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 jest gotowe tylko 1 okno, istnieje tylko 1 przebieg potoku. Integer Liczba całkowita z zakresu od 1 do 50. Tak
retryPolicy: Liczba Liczba ponownych prób przed uruchomieniem potoku jest oznaczona jako "Niepowodzenie". 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. Wartość minimalna to 30. Nie.
dependsOn: typ Typ tumblingWindowTriggerReference. Wymagane, jeśli ustawiono zależność. String "TumblingWindowTriggerDependencyReference", "SelfDependencyTumblingWindowTriggerReference" Nie.
dependsOn: rozmiar Rozmiar okna wirowania zależności. Zakres czasu
(hh:mm:ss)
Dodatnia wartość przedziału czasu, w której wartością domyślną jest rozmiar okna wyzwalacza podrzędnego Nie.
dependsOn: przesunięcie Przesunięcie wyzwalacza zależności. Zakres czasu
(hh:mm:ss)
Wartość przedziału czasu, 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 wyzwalacza okna wirowania nie można edytować interwału i częstotliwości .

Zmienne systemowe WindowStart i WindowEnd

W definicji potoku można użyć zmiennych systemowych WindowStart i WindowEnd wyzwalacza okna wirowania (czyli 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 WindowStart i WindowEnd w definicji potoku, należy odpowiednio użyć parametrów "MyWindowStart" i "MyWindowEnd".

Kolejność wykonywania okien w scenariuszu wypełniania

Jeśli wyzwalacz startTime jest w przeszłości, na podstawie tej formuły M=(CurrentTime- TriggerStartTime)/TumblingWindowSize wyzwalacz wygeneruje równoległe przebiegi {M} backfill(past), 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

Należy pamiętać, że w tym scenariuszu wszystkie uruchomienia z wybranego startTime zostaną uruchomione przed wykonaniem przyszłych przebiegów. Jeśli konieczne jest wypełnienie kopii zapasowej przez długi okres czasu, zalecane jest wykonywanie przyrostowego obciążenia historycznego.

Istniejące elementy TriggerResource

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

  • Nie można zmienić wartości elementu frequency (lub rozmiaru okna) wyzwalacza wraz z elementem interwału po utworzeniu wyzwalacza. Jest to wymagane do prawidłowego działania wyzwalaczaUruchom ponowne uruchamianie i oceny zależności
  • Jeśli wartość elementu endTime wyzwalacza zmieni się (dodano lub zaktualizowano), stan okien, które są już przetwarzane, nie jest resetowany. Wyzwalacz honoruje nową wartość endTime . Jeśli nowa wartość endTime jest wcześniejsza niż okna, które są już wykonywane, wyzwalacz zostanie zatrzymany. W przeciwnym razie wyzwalacz zatrzymuje się po napotkaniu nowej wartości endTime .

Przypisane przez użytkownika ponawianie prób potoków

W przypadku awarii potoku wyzwalacz okna wirowania może automatycznie ponowić próbę wykonania przywoływalnego potoku przy użyciu tych samych parametrów wejściowych bez interwencji użytkownika. Można to określić za pomocą właściwości "retryPolicy" w definicji wyzwalacza.

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 jest w stanie Oczekiwanie lub Oczekiwanie na zależność, możesz anulować okno z obszaru Monitorowanie:

Możesz również ponownie uruchomić anulowane okno. Ponowne uruchomienie spowoduje użycie najnowszych opublikowanych definicji wyzwalacza, a zależności dla określonego okna zostaną ponownie ocenione 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. 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.

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ść elementu startTime na bieżącą godzinę UTC. Ustaw wartość elementu endTime 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. Zaktualizuj wartości TriggerRunStartedAfter i TriggerRunStartedBefore, 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.