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
- Aby utworzyć wyzwalacz okna wirowania w witrynie Azure Portal, wybierz kartę Wyzwalacze , a następnie wybierz pozycję Nowy.
- Po otworze okienka konfiguracji wyzwalacza wybierz pozycję Okno wirowania. Następnie zdefiniuj właściwości wyzwalacza okna wirowania.
- 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 , , Stopped Disabled |
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 , , Hour Month |
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 hour wartość , 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 zinterval
elementem po utworzeniu wyzwalacza. To ograniczenie jest wymagane do prawidłowego funkcjonowania ponownychtriggerRun
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 nowaendTime
wartość jest wcześniejsza niż okna, które zostały już wykonane, wyzwalacz zostanie zatrzymany. W przeciwnym razie wyzwalacz zatrzymuje się po napotkaniu nowejendTime
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
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Azure PowerShell: postępuj zgodnie z instrukcjami w temacie Instalowanie programu Azure PowerShell w systemie Windows przy użyciu modułu PowerShellGet.
- Azure Data Factory: postępuj zgodnie z instrukcjami w temacie Tworzenie usługi Azure Data Factory przy użyciu programu PowerShell, aby utworzyć fabrykę danych i potok.
Przykładowy kod
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" } }
Utwórz wyzwalacz przy użyciu polecenia cmdlet Set-AzDataFactoryV2Trigger :
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
Upewnij się, że stan wyzwalacza jest zatrzymany przy użyciu polecenia cmdlet Get-AzDataFactoryV2Trigger :
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Uruchom wyzwalacz przy użyciu polecenia cmdlet Start-AzDataFactoryV2Trigger :
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Upewnij się, że stan wyzwalacza to Rozpoczęto przy użyciu polecenia cmdlet Get-AzDataFactoryV2Trigger :
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
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.