Comparteix a través de


Creación de un desencadenador de eventos personalizado para ejecutar una canalización en Azure Data Factory

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.

La arquitectura dirigida por eventos es un patrón de integración de datos común que implica la producción, detección, consumo y reacción a los eventos. Los escenarios de integración de datos a menudo requieren que clientes de Azure Data Factory desencadenen canalizaciones cuando suceden ciertos eventos. La integración nativa de Data Factory con Azure Event Grid ahora abarca temas personalizados. Los eventos se envían a un tema de Event Grid. Data Factory se suscribe al tema, escucha y, a continuación, desencadena canalizaciones en consecuencia.

La integración descrita en este artículo depende de Azure Event Grid. Asegúrese de que el proveedor de la suscripción se registra con el proveedor de recursos de Event Grid. Para más información, consulte Tipos y proveedores de recursos. Debe poder realizar la acción Microsoft.EventGrid/eventSubscriptions/. Esta acción forma parte del rol integrado Colaborador de EventSubscription EventGrid.

Importante

Si usa esta característica en Azure Synapse Analytics, asegúrese de que la suscripción también está registrada con un proveedor de recursos de Data Factory. De lo contrario, recibirá un mensaje que indica que se produjo un error en la creación de una suscripción de eventos.

Si combina parámetros de canalización y un desencadenador de eventos personalizado, puede analizar y hacer referencia a cargas data personalizadas en ejecuciones de canalización. Dado que el campo data de una carga de eventos personalizada es una estructura de clave-valor JSON de formato libre, puede controlar las ejecuciones de canalización controladas por eventos.

Importante

Si falta una clave a la que se hace referencia en la parametrización en la carga del evento personalizado, trigger run producirá un error. Verá un mensaje que indica que la expresión no se puede evaluar porque la propiedad keyName no existe. En este caso, no se desencadenará ningún pipeline run por el evento.

Configuración de un tema personalizado en Event Grid

Para usar el desencadenador de eventos personalizado en Data Factory, primero debe configurar un tema personalizado en Event Grid.

Vaya a Event Grid y cree el tema. Para obtener más información sobre cómo crear el tema personalizado, consulte Tutoriales del portal de Azure Event Grid y tutoriales de CLI de Azure.

Nota:

El flujo de trabajo es diferente del desencadenador de eventos de almacenamiento. Aquí, Data Factory no configura el tema automáticamente.

Data Factory espera que los eventos sigan el esquema de eventos de Event Grid. Asegúrese de que las cargas del evento tienen los siguientes campos:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]

Uso de Data Factory para crear un desencadenador de eventos personalizado

  1. Vaya a Data Factory e inicie sesión.

  2. Cambie a la pestaña Editar. Busque el icono de lápiz.

  3. Seleccione Desencadenador en el menú y, después, seleccione Nuevo/Editar.

  4. En la página para agregar desencadenadores, seleccione Elegir desencadenador y, después, Nuevo.

  5. En Tipo, seleccione Eventos personalizados.

    Captura de pantalla que muestra la creación de un nuevo desencadenador de eventos personalizado en la interfaz de usuario de Data Factory.

  6. Seleccione el tema personalizado en la lista desplegable suscripción de Azure o escriba manualmente el ámbito del tema de eventos.

    Nota:

    Para crear o modificar un desencadenador de eventos personalizado en Data Factory, debe usar una cuenta de Azure con el control de acceso basado en rol (RBAC de Azure) adecuado. No se requiere ningún otro permiso. La entidad de servicio de Data Factory no requiere un permiso especial para su instancia de Event Grid. Para obtener más información sobre el control de acceso, consulte la sección Control de acceso basado en roles.

  7. Las propiedades Subject begins with y Subject ends with permiten filtrar por eventos desencadenantes. Todas las propiedades son opcionales.

  8. Use + Nuevo para agregar los tipos de evento por los que desea filtrar. La lista de desencadenadores de eventos personalizados usa una relación OR. Cuando se produce un evento personalizado con una propiedad eventType que coincide con otra de la lista, se desencadena una ejecución de canalización. El tipo de evento distingue mayúsculas de minúsculas. Por ejemplo, en la captura de pantalla siguiente, el desencadenador coincide con todos los eventos copycompleted o copysucceeded que tienen un asunto que comienza por factories.

    Captura de pantalla que muestra la página Editar desencadenador para explicar los tipos de eventos y el filtrado de asunto en la interfaz de usuario de Data Factory.

  9. Un desencadenador de eventos personalizado puede analizar y enviar la carga de data personalizada a la canalización. Cree los parámetros de canalización y luego rellene los valores en la página Parámetros. Use el formato @triggerBody().event.data._keyName_ para analizar la carga de datos y pasar los valores a los parámetros de canalización.

    Para una explicación detallada, consulte:

    Captura de pantalla que muestra la configuración de parámetros de canalización.

    Captura de pantalla que muestra la página de parámetros para hacer referencia a la carga de datos en un evento personalizado.

  10. Después de escribir los parámetros, seleccione Aceptar.

Filtrado avanzado

El desencadenador de eventos personalizado admite funcionalidades de filtrado avanzadas, de forma similar al Filtrado avanzado de Event Grid. Estos filtros condicionales permiten que las canalizaciones se desencadenen en función de los valores de la carga del evento. Por ejemplo, puede tener un campo en la carga del evento, denominado Departamento, y la canalización solo debe desencadenarse si el valor de Departamento es igual al de Finanzas. También puede especificar lógica compleja, como si el campo date tiene los valores de la lista [1, 2, 3, 4, 5], si el campo mes no tiene los valores de la lista [11, 12] y si el campo etiqueta contiene las cadenas de [Año fiscal 2021, FiscalYear2021 o FY2021].

Captura de pantalla que muestra la configuración de filtros avanzados para un desencadenador de eventos de cliente.

A partir de hoy, el desencadenador de eventos personalizados admite un subconjunto de operadores de filtrado avanzado en Event Grid. Se admiten las siguientes condiciones de filtro:

  • NumberIn
  • NumberNotIn
  • NumberLessThan
  • NumberGreaterThan
  • NumberLessThanOrEquals
  • NumberGreaterThanOrEquals
  • BoolEquals
  • StringContains
  • StringBeginsWith
  • StringEndsWith
  • StringIn
  • StringNotIn

Seleccione +Nuevo para agregar nuevas condiciones de filtro.

Los desencadenadores de eventos personalizados también tienen las mismas limitaciones que Event Grid, como:

  • 5 filtros avanzados y 25 valores de filtro en todos los filtros por desencadenador de evento personalizado.
  • 512 caracteres por valor de cadena.
  • 5 valores para operadores de in y not in.
  • Las teclas no pueden tener el carácter . (punto) en ellas, por ejemplo, john.doe@contoso.com. Actualmente, las claves no admiten caracteres de escape.
  • La misma clave se puede usar en más de un filtro.

Data Factory se basa en la versión más reciente de disponibilidad general (GA) de API de Event Grid. A medida que las nuevas versiones de API lleguen a la fase de disponibilidad general, Data Factory ampliará su compatibilidad con operadores de filtrado más avanzados.

Esquema JSON

En la tabla siguiente se proporciona información general acerca de los elementos de esquema que están relacionados con los desencadenadores de eventos personalizados.

Elemento JSON Descripción Tipo Valores permitidos Obligatorio
scope El identificador de recurso de Azure Resource Manager del tema de Event Grid. String Identificador de Azure Resource Manager Sí.
events El tipo de eventos que provocan la activación de este desencadenador. Matriz de cadenas Sí, se espera al menos un valor.
subjectBeginsWith El campo subject debe comenzar con el patrón proporcionado para que se active el desencadenador. Por ejemplo, factories solo activa el desencadenador para los asuntos de eventos que comienzan por factories. Cadena No.
subjectEndsWith El campo subject debe terminar con el patrón proporcionado para que se active el desencadenador. Cadena No.
advancedFilters Lista de blobs de JSON, donde cada uno especifica una condición de filtro. Cada blob especifica key, operatorType y values. Lista de blobs de JSON No.

Control de acceso basado en rol

Data Factory usa RBAC de Azure para prohibir el acceso no autorizado. Para funcionar correctamente, Data Factory requiere acceso para:

  • Escuchar eventos.
  • Suscribirse a las actualizaciones de eventos.
  • Desencadenar canalizaciones vinculadas a eventos personalizados.

Para crear o actualizar correctamente un desencadenador de eventos personalizado, debe iniciar sesión en Data Factory con una cuenta de Azure que tenga el acceso adecuado. De lo contrario, se produce un error en la operación con el mensaje "Acceso denegado".

Data Factory no requiere permiso especial para la instancia de Event Grid. Igualmente, no es necesario asignar un permiso de Azure RBAC especial a la entidad de servicio de Data Factory para la operación.

En concreto, necesita el permiso Microsoft.EventGrid/EventSubscriptions/Write para /subscriptions/####/resourceGroups//####/providers/Microsoft.EventGrid/topics/someTopics.

  • Al crear en la factoría de datos (por ejemplo, en el entorno de desarrollo), la cuenta de Azure que inició sesión debe tener el permiso anterior.
  • Al publicar a través de integración continua y entrega continua, la cuenta usada para publicar la plantilla de Azure Resource Manager en la factoría de pruebas o producción debe tener el permiso anterior.