Partilhar via


Create a trigger that runs a pipeline on a tumbling window(Criar um acionador que execute um pipeline numa janela em cascata)

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Este artigo fornece etapas para criar, iniciar e monitorar um gatilho de janela de tombamento. Para obter informações gerais sobre gatilhos e os tipos suportados, consulte Execução e gatilhos de pipeline.

Os acionadores de janela em cascata são um tipo de acionador que é acionado num intervalo de tempo periódico a partir de uma hora de início especificada, mantendo o estado. As janelas de tombamento são uma série de intervalos de tempo de tamanho fixo, não sobrepostos e contíguos. Um gatilho de janela de tombamento tem uma relação um-para-um com um pipeline e só pode fazer referência a um pipeline singular.

Um gatilho de janela de queda é uma alternativa mais pesada para um gatilho de agendamento. Ele oferece um conjunto de recursos para cenários complexos, como (dependência de outros gatilhos de janela de tombamento, reexecução de um trabalho com falha e configuração de repetição do usuário para pipelines). Para entender melhor a diferença entre um gatilho de agendamento e um gatilho de janela de queda, consulte Comparação de tipo de gatilho.

Experiência do portal Azure Data Factory e Azure Synapse

  1. Para criar um gatilho de janela de tombamento no portal do Azure, selecione a guia Gatilhos e, em seguida, selecione Novo.
  2. Depois que o painel de configuração do gatilho for aberto, selecione Janela de tombamento. Em seguida, defina as propriedades do gatilho da janela de tombamento.
  3. Quando tiver terminado, selecione Guardar.

Propriedades do tipo de gatilho da janela de tombamento

Uma janela de tombamento tem as seguintes propriedades de tipo de gatilho:

{
    "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"
            }
        }
    }
}

A tabela a seguir fornece uma visão geral de alto nível dos principais elementos JSON relacionados à recorrência e ao agendamento de um gatilho de janela de queda.

Elemento JSON Description Type Valores permitidos Necessário
type O tipo de gatilho. O type é o valor TumblingWindowTriggerfixo. String TumblingWindowTrigger Sim
runtimeState O estado atual do tempo de execução do gatilho.
Este elemento é <readOnly>.
String Started, Stopped, Disabled Sim
frequency Uma cadeia de caracteres que representa a unidade de frequência (minutos, horas ou meses) na qual o gatilho se repete. Se os valores de startTime data forem mais granulares do que o frequency valor, as startTime datas serão consideradas quando os limites da janela forem calculados. Por exemplo, se o frequency valor for hourly e o startTime valor for 2017-09-01T10:10:10Z, a primeira janela será (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). String Minute, Hour, Month Sim
interval Um inteiro positivo que denota o intervalo para o valor, que determina a frequência com que o gatilho frequency é executado. Por exemplo, se o interval é 3 e o frequency é hour, o gatilho se repete a cada 3 horas.
O intervalo mínimo da janela é de 5 minutos.
Integer Um número inteiro positivo. Sim
startTime A primeira ocorrência, que pode ser no passado. O primeiro intervalo de desencadeamento é (startTime, startTime + interval). DateTime Um DateTime valor. Sim
endTime A última ocorrência, que pode ser no passado. DateTime Um DateTime valor. Sim
delay A quantidade de tempo para atrasar o início do processamento de dados para a janela. A execução do pipeline é iniciada após o tempo de execução esperado mais a quantidade de atraso. O atraso define quanto tempo o gatilho espera além do tempo devido antes de acionar uma nova execução. O atraso não altera a janela startTime. Por exemplo, um delay valor de 00:10:00 implica um atraso de 10 minutos. Timespan
(hh:mm:ss)
Um timespan valor onde o padrão é 00:00:00. Não
maxConcurrency O número de execuções de gatilho simultâneas que são disparadas para janelas que estão prontas. Por exemplo, preencher as execuções horárias de ontem resulta em 24 janelas. Se maxConcurrency = 10, os eventos de gatilho são disparados apenas para as primeiras 10 janelas (00:00-01:00 - 09:00-10:00). Depois que as primeiras 10 execuções de pipeline acionadas forem concluídas, as execuções de gatilho serão disparadas para as próximas 10 janelas (10:00-11:00 - 19:00-20:00). Continuando com este exemplo de maxConcurrency = 10, se houver 10 janelas prontas, haverá 10 execuções de pipeline totais. Se apenas uma janela estiver pronta, apenas um pipeline será executado. Integer Um número inteiro entre 1 e 50. Sim
retryPolicy: Count O número de novas tentativas antes da execução do pipeline é marcado como Failed. Integer Um inteiro, onde o padrão é 0 (sem tentativas). Não
retryPolicy: intervalInSeconds O atraso entre as tentativas de repetição especificado em segundos. Integer O número de segundos, onde o padrão é 30. O valor mínimo é 30. Não
dependsOn: type O tipo de TumblingWindowTriggerReference. Necessário se uma dependência estiver definida. String TumblingWindowTriggerDependencyReference, SelfDependencyTumblingWindowTriggerReference Não
dependsOn: size O tamanho da janela de tombo de dependência. Timespan
(hh:mm:ss)
Um valor positivo timespan em que o padrão é o tamanho da janela do gatilho filho. Não
dependsOn: offset O deslocamento do gatilho de dependência. Timespan
(hh:mm:ss)
Um timespan valor que deve ser negativo numa auto-dependência. Se nenhum valor for especificado, a janela será a mesma que o próprio gatilho. Auto-dependência: Sim
Outros: Não

Nota

Depois que um gatilho de janela de tombo é publicado, os interval valores e frequency não podem ser editados.

Variáveis de sistema WindowStart e WindowEnd

Você pode usar as WindowStart variáveis e WindowEnd de sistema do gatilho da janela de tombamento em sua definição de pipeline (ou seja, para parte de uma consulta). Passe as variáveis do sistema como parâmetros para seu pipeline na definição de gatilho . O exemplo a seguir mostra como passar essas variáveis como parâmetros.

{
    "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'))}"
                }
            }
        }
    }
}

Para usar os valores da variável e WindowEnd do WindowStart sistema na definição de pipeline, use seus MyWindowStart parâmetros e MyWindowEnd de acordo.

Ordem de execução de janelas em um cenário de preenchimento

Se o gatilho startTime estiver no passado, então, com base na fórmula M=(CurrentTime- TriggerStartTime)/TumblingWindowSize, o gatilho gera {M} backfill(past) em paralelo, honrando a simultaneidade do gatilho, antes de executar as execuções futuras. A ordem de execução das janelas é determinística, dos intervalos mais antigos aos mais recentes. Atualmente, não é possível modificar este comportamento.

Nota

Nesse cenário, todas as execuções do selecionado startTime são executadas antes de executar execuções futuras. Se você precisar preencher um longo período de tempo, recomendamos fazer uma carga histórica inicial.

Elementos TriggerResource existentes

Os seguintes pontos aplicam-se à atualização de elementos existentes TriggerResource :

  • O valor do frequency elemento (ou tamanho da janela) do gatilho junto com o interval elemento não pode ser alterado depois que o gatilho é criado. Essa restrição é necessária para o bom funcionamento de reprises e avaliações de triggerRun dependência.
  • Se o valor do endTime elemento do gatilho mudar (adicionando ou atualizando), o estado das janelas que já estão processadas não será redefinido. O gatilho honra o novo endTime valor. Se o novo endTime valor estiver antes das janelas que já estão executadas, o gatilho será interrompido. Caso contrário, o gatilho para quando o novo endTime valor é encontrado.

Tentativas de pipelines atribuídas pelo usuário

No caso de falhas de pipeline, um gatilho de janela de tombamento pode repetir a execução do pipeline referenciado automaticamente usando os mesmos parâmetros de entrada, sem intervenção do usuário. Use a retryPolicy propriedade na definição de gatilho para especificar essa ação.

Janela de tombamento aciona dependência

Se você quiser ter certeza de que um gatilho de janela de tombamento seja executado somente após a execução bem-sucedida de outro gatilho de janela de tombamento no data factory, crie uma dependência de gatilho de janela de queda.

Cancelar uma execução de janela de tombo

Você pode cancelar execuções para um gatilho de janela de tombamento se a janela específica estiver em um estado Aguardando, Aguardando dependência ou Em execução :

  • Se a janela estiver em um estado em execução, cancele a execução de pipeline associada e a execução do gatilho será marcada como Cancelada posteriormente.
  • Se a janela estiver em um estado de dependência Aguardando ou Aguardando, você poderá cancelá-la em Monitoramento.

Você também pode executar novamente uma janela cancelada. A repetição usa as definições publicadas mais recentes do gatilho. As dependências para a janela especificada são reavaliadas após a nova execução.

Exemplo para o Azure PowerShell e a CLI do Azure

Esta seção mostra como usar o Azure PowerShell para criar, iniciar e monitorar um gatilho.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Pré-requisitos

Código de exemplo

  1. Crie um arquivo JSON chamado MyTrigger.json na pasta C:\ADFv2QuickStartPSH\ com o seguinte conteúdo:

    Importante

    Antes de salvar o arquivo JSON, defina o startTime valor do elemento para a hora UTC (Tempo Universal Coordenado) atual. Defina o endTime valor do elemento para uma hora após a hora UTC atual.

    {
      "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. Crie um gatilho usando o cmdlet Set-AzDataFactoryV2Trigger :

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Confirme se o status do gatilho é Interrompido usando o cmdlet Get-AzDataFactoryV2Trigger:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  4. Inicie o gatilho usando o cmdlet Start-AzDataFactoryV2Trigger :

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Confirme se o status do gatilho é Iniciado usando o cmdlet Get-AzDataFactoryV2Trigger:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. Obtenha o gatilho executado no Azure PowerShell usando o cmdlet Get-AzDataFactoryV2TriggerRun . Para obter informações sobre as execuções do gatilho, execute o seguinte comando periodicamente. Atualize os TriggerRunStartedAfter valores e TriggerRunStartedBefore para corresponder aos valores na sua definição de gatilho:

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

Para monitorar execuções de gatilho e pipeline no portal do Azure, consulte Monitorar execuções de pipeline.