Compartir vía


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 (EDA) 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.

Nota

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 en algún proveedor de recursos de Data Factory, ya que, de lo contrario, recibirá un error en el que se 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 error que indica que la expresión no se puede evaluar porque la propiedad keyName no existe. En este caso, el evento no desencadenará ningúnpipeline run.

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 Azure 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 la CLI.

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 Azure 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 Choose trigger (Elegir desencadenador) y, después, seleccione Nuevo.

  5. Seleccione Eventos personalizados para Tipo.

    Screenshot of Author page to create a new custom event trigger in Data Factory UI.

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

    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 permiso adicional. 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 El elemento "Asunto" empieza por y El elemento "Asunto" termina en le permiten filtrar eventos del desencadenador. 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.

    Screenshot of Edit Trigger page to explain Event Types and Subject filtering in Data Factory UI.

  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 ver una explicación detallada, consulte los artículos siguientes:

    Screenshot of pipeline parameters settings.

    Screenshot of the parameters page to reference data payload in custom event.

  10. Después de que haya escrito 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 una lógica compleja, como el campo date en la lista [1, 2, 3, 4, 5], el campo month que no está en la lista [11, 12], el campo tag contiene cualquiera de los valores ["Fiscal Year 2021", "FiscalYear2021", "FY2021"].

Screenshot of setting advanced filters for customer event trigger

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.

Además, los desencadenadores de eventos personalizados cumplen las mismas limitaciones que Event Grid, entre las que se incluyen:

  • 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 los operadores in y not in
  • Las claves no pueden tener un 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 de la 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
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. String No
subjectEndsWith El campo subject debe terminar con el patrón proporcionado para que se active el desencadenador. String 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

Azure Data Factory utiliza el control de acceso basado en roles de Azure (RBAC) 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 producirá un error en la operación con un error de acceso denegado.

Data Factory no requiere un permiso especial para su 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.

  • Si se desea crear en la factoría de datos (por ejemplo, en el entorno de desarrollo), la cuenta de Azure que ha iniciado sesión debe tener el permiso anterior.
  • Si se publica a través de CI/CD, la cuenta que se usa para publicar la plantilla de ARM en la factoría de pruebas o de producción debe tener el permiso anterior.