Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 deslizante. Para obter informações gerais sobre gatilhos e os tipos suportados, consulte Execução e Triggers de Pipeline.
Os acionadores de janela deslizante são um tipo de acionador que é acionado num intervalo de tempo periódico a partir do momento de início especificado, retendo o estado. As janelas de deslizamento são uma série de intervalos de tempo de tamanho fixo, não sobrepostos e contíguos. Um gatilho de janela deslizante tem uma relação um-para-um com um pipeline e só pode referir-se a um único pipeline.
Um gatilho de janela deslizante é uma alternativa mais robusta para um gatilho de agendamento. Ele oferece um conjunto de recursos para cenários complexos, como dependência de outros gatilhos de janela deslizante, repetição de um trabalho falhado e configuração de tentativa do utilizador para fluxos de trabalho. Para compreender melhor a diferença entre um gatilho de agendamento e um gatilho de janela intermitente, consulte Comparação de tipo de gatilho.
Experiência do portal Azure Data Factory e Azure Synapse
- Para criar um gatilho de janela deslizante no portal do Azure, selecione a guia Gatilhos e, em seguida, selecione Novo.
- Depois de abrir o painel de configuração do gatilho, selecione Janela de tumbling. Em seguida, defina as propriedades do gatilho da janela deslizante.
- Quando tiver terminado, selecione Guardar.
Propriedades do tipo de gatilho da janela deslizante
Uma janela deslizante 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 abaixo fornece um resumo geral dos principais elementos JSON relacionados à recorrência e ao agendamento de um gatilho de janela deslizante.
Elemento JSON | Descrição | Tipo | Valores permitidos | Necessário |
---|---|---|---|---|
type |
O tipo de gatilho. O type é o valor TumblingWindowTrigger fixo. |
String |
TumblingWindowTrigger |
Sim |
runtimeState |
O estado atual do tempo de operaçã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 valor frequency é hourly e o valor startTime é 2017-09-01T10:10:10Z, a primeira janela é (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 frequency , o qual determina a frequência com que o gatilho é 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 valor de DateTime . |
Sim |
endTime |
A última ocorrência, que pode ter ocorrido anteriormente. | DateTime |
Um valor de DateTime . |
Sim |
delay |
A quantidade de tempo para atrasar o início do processamento de dados na janela. A execução do pipeline é iniciada após o tempo de execução esperado mais a quantidade de atraso. O atraso define por quanto tempo o gatilho espera além da hora programada antes de iniciar 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 prontas. Por exemplo, ao preencher as execuções horárias do dia de ontem, obtemos 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 existirem 10 janelas prontas, haverá 10 execuções totais de pipeline. 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 especificado entre as tentativas de repetição, 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 movimentação de dependência. | Timespan (hh:mm:ss) |
Um valor positivo timespan onde 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 de um gatilho de janela deslizante ser publicado, os valores interval
e frequency
não podem ser alterados.
Variáveis de sistema WindowStart e WindowEnd
Você pode usar as variáveis de sistema WindowStart
e WindowEnd
do gatilho da janela deslizante na sua definição de pipeline (isto é, para uma parte de uma consulta). Passe as variáveis do sistema como parâmetros para o seu pipeline na definição do 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 utilizar os valores das variáveis do sistema WindowStart
e WindowEnd
na definição de pipeline, use os seus parâmetros MyWindowStart
e MyWindowEnd
em conformidade.
Ordem de execução de janelas num cenário de retropreenchimento
Se o gatilho startTime
estiver no passado, então, com base na fórmula M=(CurrentTime- TriggerStartTime)/TumblingWindowSize, o gatilho gera {M} execuções de preenchimento retroativo em paralelo, respeitando 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 realizadas antes das execuções futuras. Se precisar completar um longo período de tempo, recomendamos realizar uma carga inicial de dados históricos.
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 ointerval
elemento não pode ser alterado depois que o gatilho é criado. Essa restrição é necessária para o bom funcionamento detriggerRun
reprises e avaliações de dependência. - Se o valor do elemento
endTime
do gatilho mudar (ao adicionar ou atualizar), o estado das janelas que já foram processadas não será reiniciado. O mecanismo respeita o novo valorendTime
. Se o novoendTime
valor estiver antes das janelas que já estão executadas, o gatilho será interrompido. Caso contrário, o gatilho para ao encontrar o novo valorendTime
.
Retries de pipelines atribuídas pelo utilizador
No caso de falhas de pipeline, um gatilho de janela deslizante pode tentar novamente a execução do pipeline em questão 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 quiser garantir que um gatilho de janela de saltos seja executado somente após a execução bem-sucedida de outro gatilho de janela de saltos na fábrica de dados, crie uma dependência de gatilho de janela de saltos.
Cancelar uma execução de janela deslizante
Você pode cancelar execuções de um gatilho de janela deslizante se a janela específica estiver em um estado de 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 estado de Aguardando ou Aguardando dependência, você poderá cancelá-la em Monitorização.
Você também pode reabrir uma janela cancelada. Na repetição, são utilizadas 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
- Subscrição do Azure: se não tem uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Azure PowerShell: Siga as instruções em Instalar o Azure PowerShell no Windows com PowerShellGet.
- Azure Data Factory: siga as instruções em Criar um Azure Data Factory usando o PowerShell para criar uma fábrica de dados e um pipeline.
Código de exemplo
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 valor do elementoendTime
, para uma hora depois da 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" } }
Crie um gatilho usando o cmdlet Set-AzDataFactoryV2Trigger :
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
Confirme que o estado do gatilho é Interrompido utilizando o cmdlet Get-AzDataFactoryV2Trigger:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Inicie o gatilho usando o cmdlet Start-AzDataFactoryV2Trigger :
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Verifique se o status do gatilho é Iniciado usando o cmdlet Get-AzDataFactoryV2Trigger.
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Obtenha as execuções de gatilhos no Azure PowerShell usando o cmdlet Get-AzDataFactoryV2TriggerRun. Para obter informações sobre as execuções dos disparos, execute o seguinte comando de forma periódica. Atualize os valores de
TriggerRunStartedAfter
eTriggerRunStartedBefore
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 monitorizar execuções de gatilho e de pipeline no portal do Azure, consulte Monitorizar execuções de gatilho e de pipeline.