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
- 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, a następnie zdefiniuj właściwości wyzwalacza okna wirowania.
- 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
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ść 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" } }
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. 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.
Powiązana zawartość
- Aby uzyskać szczegółowe informacje o wyzwalaczach, zobacz Wykonywanie i wyzwalacze potoku.
- Utwórz zależność wyzwalacza okna wirowania.
- Dowiedz się, jak odwoływać się do metadanych wyzwalacza w potoku, zobacz Reference Trigger Metadata in Pipeline Runs (Odwołania do metadanych wyzwalacza w uruchomieniach potoku)