Compartir a través de


Creación de un desencadenador que ejecuta una canalización en una ventana de saltos de tamaño constante

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.

En este artículo se explica cómo crear, iniciar y supervisar un desencadenador de ventana de saltos de tamaño constante. Para obtener información general sobre los desencadenadores y los tipos compatibles, vea Ejecución y desencadenadores de canalización.

Los desencadenadores de ventana de saltos de tamaño constante son un tipo de desencadenador que se activa en un intervalo de tiempo periódico a partir de una hora de inicio especificada, mientras conserva el estado. Las ventanas de saltos de tamaño constante son una serie de intervalos de tiempo de tamaño fijo, contiguos y que no se superponen. Un desencadenador de ventana de saltos de tamaño constante tiene una relación uno a uno con una canalización y solo puede hacer referencia a una única canalización.

Un desencadenador periódico es una alternativa más robusta a un desencadenador programado. Ofrece un conjunto de características para escenarios complejos (como dependencia de otros desencadenadores periódicos, , repetición de la ejecución de un trabajo con errores y establecimiento del reintento de usuarios para canalizaciones). Para comprender mejor la diferencia entre un desencadenador programado y un desencadenador periódico, consulte Comparación de tipos de desencadenadores.

Experiencia del portal de Azure Data Factory y Azure Synapse

  1. Para crear un desencadenador periódico en Azure Portal, seleccione la pestaña de los desencadenadores y, a continuación, seleccione Nuevo.
  2. Una vez que se abra el panel de configuración del desencadenador, seleccione Ventana de saltos de tamaño constante. A continuación, defina las propiedades del desencadenador periódico.
  3. Cuando haya terminado, seleccione Guardar.

Propiedades del tipo de desencadenador de ventana de saltos de tamaño constante

Una ventana de saltos de tamaño constante tiene las siguientes propiedades del tipo de desencadenador:

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

En la tabla siguiente se muestra una descripción general de los elementos JSON más importantes relacionados con la periodicidad y la programación de un desencadenador periódico.

Elemento JSON Descripción Tipo Valores permitidos Obligatorio
type El tipo del desencadenador. type es el valor fijo TumblingWindowTrigger. String TumblingWindowTrigger
runtimeState Estado actual del tiempo de ejecución del desencadenador.
Este elemento es <readOnly>.
String Started, Stopped, Disabled
frequency Una cadena que representa la unidad de frecuencia (minutos, horas o meses) con que se repite el desencadenador. Si los valores de fecha startTime son más granulares que el valor frequency, las fechas startTime se consideran cuando se calculan los límites de la ventana. Por ejemplo, si el valor de frequency es hourly y el valor de startTime es 2017-09-01T10:10:10Z, la primera ventana es (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). String Minute, Hour, Month
interval Entero positivo que denota el intervalo del valor frequency, que determina la frecuencia con la que se ejecuta el desencadenador. Por ejemplo, si interval es 3 y frequency es hour, el desencadenador se repite cada 3 horas.
El intervalo de ventana mínimo es de 5 minutos.
Integer Un número entero positivo.
startTime La primera repetición, que puede ser en el pasado. El primer intervalo del desencadenador es (startTime, startTime + interval). DateTime Valor DateTime.
endTime La última repetición, que puede ser en el pasado. DateTime Valor DateTime.
delay La cantidad de tiempo para retrasar el inicio del procesamiento de datos de la ventana. La ejecución de la canalización se inicia después del tiempo de ejecución esperado más el tiempo de retraso establecido en delay. delay define el tiempo de espera del desencadenador antes de desencadenar una nueva ejecución. El retraso no altera la ventana startTime. Por ejemplo, un valor de delay de 00:10:00 implica un retraso de 10 minutos. Timespan
(hh:mm:ss)
Un valor de timespan donde el valor predeterminado es 00:00:00. No
maxConcurrency Número de ejecuciones simultáneas del desencadenador que se activan para las ventanas que están listas. Por ejemplo, reponer las ejecuciones cada hora para el día de ayer genera 24 ventanas. Si maxConcurrency = 10, los eventos del desencadenador se activan solo para las 10 primeras ventanas (00:00-01:00 - 09:00-10:00). Una vez completadas las diez primeras ejecuciones de canalización desencadenadas, se activan las ejecuciones del desencadenador para las diez siguientes (10:00-11:00 - 19:00-20:00). Siguiendo con el ejemplo de maxConcurrency = 10, si hay 10 ventanas listas, habrá también 10 ejecuciones de canalizaciones en total. Si solo hay una ventana lista, solo se ejecuta una canalización. Integer Un número entero comprendido entre uno y cincuenta.
retryPolicy: Count El número de reintentos antes de que la ejecución de la canalización se marca como Failed. Integer Un entero, donde el valor predeterminado es 0 (ningún reintento). No
retryPolicy: intervalInSeconds El retraso entre intentos de reintentos, especificado en segundos. Integer El número de segundos, donde el valor predeterminado es 30. El valor mínimo es 30. No
dependsOn: type Tipo de TumblingWindowTriggerReference. Obligatorio si se establece una dependencia. String TumblingWindowTriggerDependencyReference, SelfDependencyTumblingWindowTriggerReference No
dependsOn: size Tamaño de la ventana de saltos de tamaño constante de la dependencia. Timespan
(hh:mm:ss)
Un valor de timespan positivo en el que el valor predeterminado es el tamaño de la ventana del desencadenador secundario. No
dependsOn: offset Desplazamiento del desencadenador de la dependencia. Timespan
(hh:mm:ss)
Un valor de timespan que debe ser negativo en una autodependencia. Si no se especifica ningún valor, la ventana es la misma que el desencadenador. Autodependencia: Sí
Otros: No

Nota:

Después de publicar un desencadenador periódico, los valores interval y frequency no se pueden editar.

Variables del sistema WindowStart y WindowEnd

Puede usar las variables del sistema WindowStart y WindowEnd del desencadenador periódico en la definición de canalización (es decir, para parte de una consulta). Pase las variables del sistema como parámetros a la canalización en la definición de trigger. En el ejemplo siguiente se muestra cómo pasar estas variables 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 los valores de variable del sistema WindowStart y WindowEnd en la definición de canalización, use los parámetros MyWindowStart y MyWindowEnd en consecuencia.

Orden de ejecución de ventanas en un escenario de reposición

Si valor de startTime del desencadenador se encuentra en el pasado, en función de esta fórmula, M=(CurrentTime- TriggerStartTime)/TumblingWindowSize, el desencadenador generará {M} ejecuciones de reposición (pasadas) en paralelo, respetando la simultaneidad del desencadenador, antes de llevar a cabo las ejecuciones futuras. El orden de ejecución de las ventanas es determinista, de los intervalos más antiguos a los más recientes. Actualmente, no se puede modificar este comportamiento.

Nota:

En este escenario, todas las ejecuciones del valor de startTime seleccionado se ejecutan antes de ejecutar las futuras ejecuciones. Si necesita reponer un largo período de tiempo, se recomienda realizar una carga histórica inicial.

Elementos TriggerResource existentes

Los puntos siguientes se aplican a la actualización de los elementos TriggerResource existentes:

  • El valor del elemento frequency (o tamaño de ventana) del desencadenador junto con el elemento interval no se puede cambiar después de crear el desencadenador. Esta restricción es necesaria para el correcto funcionamiento de las nuevas ejecuciones de triggerRun y las evaluaciones de dependencias.
  • Si el valor del elemento endTimedel desencadenador cambia (se agrega o se actualiza), no se restablece el estado de las ventanas que ya se han procesado. El desencadenador respeta el nuevo valor de endTime. Si el nuevo valor de endTime es anterior a las ventanas que ya se han ejecutado, el desencadenador se detiene. En caso contrario, el desencadenador se detiene cuando se encuentra el nuevo valor de endTime.

Reintentos de canalizaciones asignados por el usuario

En caso de errores de canalización, un desencadenador periódico puede volver a intentar la ejecución de la canalización a la que se hace referencia automáticamente, utilizando los mismos parámetros de entrada, sin la intervención del usuario. Use la propiedad retryPolicy de la definición del desencadenador para especificar esta acción.

Dependencia de un desencadenador de ventana de saltos de tamaño constante

Si quiere asegurarse de que un desencadenador de ventana de saltos de tamaño constante se ejecute solo después de la correcta ejecución de otro desencadenador de ventana de saltos de tamaño constante en la factoría de datos, cree una dependencia de desencadenador de ventana de saltos de tamaño constante.

Cancelación de la ejecución de la ventana de saltos de tamaño constante

Puede cancelar las ejecuciones de un desencadenador periódico si la ventana específica está en estado En espera, En espera de dependencia o En ejecución:

  • Si la ventana se encuentra en estado En ejecución, cancele la ejecución de canalización asociada y la ejecución del desencadenador se marca como Cancelado.
  • Si la ventana está en estado En espera o A la espera de dependencia, puede cancelar la ventana desde Supervisión.

También puede volver a ejecutar una ventana cancelada. La repetición de la ejecución toma las definiciones publicadas más recientes del desencadenador. Las dependencias de la ventana especificada se vuelven a evaluar tras volver a ejecutarse.

Ejemplo de Azure PowerShell y la CLI de Azure

En esta sección se muestra cómo usar Azure PowerShell para crear, iniciar y supervisar un desencadenador.

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Requisitos previos

Código de ejemplo

  1. Cree un archivo JSON llamado MyTrigger.json en la carpeta C:\ADFv2QuickStartPSH\ con el siguiente contenido:

    Importante

    Antes de guardar el archivo JSON, establezca el valor del elemento startTime en la hora universal coordinada (UTC) actual. Establezca el valor del elemento endTime en una hora más allá de la hora UTC actual.

    {
      "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. Cree un desencadenador mediante el cmdlet Set-AzDataFactoryV2Trigger:

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Confirme que el estado del desencadenador es Detenido mediante el cmdlet Get-AzDataFactoryV2Trigger:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  4. Inicie el desencadenador mediante el cmdlet Start-AzDataFactoryV2Trigger:

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Confirme que el estado del desencadenador es Iniciado mediante el cmdlet Get-AzDataFactoryV2Trigger:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. Haga que el desencadenador se ejecute en Azure PowerShell mediante el cmdlet Get-AzDataFactoryV2TriggerRun. Para obtener información sobre cómo se ejecuta el desencadenador, ejecute el siguiente comando periódicamente. Actualice los valores de TriggerRunStartedAfter y TriggerRunStartedBefore para que coincidan con los valores de la definición del desencadenador:

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

Para supervisar las ejecuciones del desencadenador o de la canalización en Azure Portal, consulte la sección sobre la supervisión de ejecuciones de canalización.