La mayoría de los flujos de procesamiento de datos de streaming requieren transformaciones de datos. Algunos usuarios prefieren transformar los datos después de que lleguen a su destino en un flujo de procesamiento de extracción, carga y transformación (ELT), mientras que otros optan por transformar los datos antes de ingerirlos en un flujo de procesamiento de extracción, transformación y carga (ETL). Tradicionalmente, esta arquitectura requería flujos de procesamiento complejos con herramientas como Dataflow o Apache Flink para realizar transformaciones de datos.
Pub/Sub ofrece transformaciones de mensajes únicos (SMTs) para simplificar las transformaciones de datos en flujos de procesamiento de streaming. Las SMTs permiten hacer modificaciones ligeras en los datos y atributos de los mensajes directamente en Pub/Sub. Las SMTs eliminan la necesidad de realizar pasos adicionales de tratamiento de datos o de usar productos independientes de transformación de datos.
Casos prácticos de las SMTs
Imagina que quieres diseñar una tienda online que ofrezca a los clientes recomendaciones de productos personalizadas mientras navegan por el sitio web. Para ello, puede usar Pub/Sub para recoger datos en tiempo real sobre la actividad de los clientes en el sitio. Esto incluye datos sobre los productos vistos, los productos añadidos al carrito y las valoraciones que se han dado a los productos.
Sin embargo, estos datos brutos suelen necesitar algunos ajustes antes de poder usarse para generar recomendaciones. Por ejemplo, los datos sin procesar pueden contener detalles superfluos que no sean relevantes para tu caso práctico. Por ejemplo, el tipo de navegador del cliente o la hora a la que visitó el sitio. Es posible que los datos no tengan el formato necesario para el sistema de recomendaciones. Por ejemplo, las marcas de tiempo pueden tener formatos diferentes o los IDs de producto pueden tener que convertirse a otro tipo.
Puedes usar las SMTs de Pub/Sub para hacer transformaciones de datos, como las siguientes:
Elimina la información personal identificable (IPI), como nombres completos y direcciones, para proteger la privacidad de los clientes.
Conserva solo los eventos relevantes para las recomendaciones, como las vistas de productos y las compras, y descarta otros, como los cambios en el perfil de cliente.
Asegúrese de que todas las marcas de tiempo, los valores de moneda y los IDs de producto tengan un formato y un tipo coherentes que sean compatibles con el sistema de recomendaciones.
Generar nuevos campos de datos a partir de datos sin procesar, como el valor total del carrito de la compra o el tiempo de permanencia en la página del producto.
En resumen, las SMTs permiten una amplia gama de casos prácticos, entre los que se incluyen los siguientes:
Enmascaramiento y ocultación de datos: protege los datos sensibles enmascarando u ocultando campos como números de tarjetas de crédito o información personal identificable, lo que ayuda a cumplir las normativas de privacidad de los datos.
Conversión de formato de datos: transforma los datos entre diferentes formatos para asegurar la compatibilidad con los sistemas posteriores.
Filtrado de mensajes: procesa solo los mensajes relevantes filtrando los mensajes no deseados en función del contenido o los atributos. Las transformaciones de mensajes de flujo permiten aplicar condiciones de filtrado más complejas que los filtros integrados de Pub/Sub.
Transformaciones de datos sencillas: realiza tareas básicas de manipulación de datos, como la manipulación de cadenas, el formato de fechas o las operaciones matemáticas.
Ejemplo de flujo de mensajes de las SMTs
En la imagen se muestra un ejemplo de sistema Pub/Sub con SMTs aplicados tanto a nivel de tema como de suscripción.

En el siguiente procedimiento se muestra cómo fluyen los mensajes en el sistema Pub/Sub:
Las aplicaciones del editor Editor 1 y Editor 2 publican los mensajes A y B respectivamente en el tema de Pub/Sub.
Los SMTs del tema transforman los mensajes A y B en los mensajes A' y B', respectivamente.
Si se adjunta un esquema al tema, los mensajes transformados A' y B' se validan con el esquema. Por ejemplo, si A' no coincide con el esquema, la publicación del mensaje A falla y se produce un error.
Los mensajes transformados A' y B' se escriben en el almacenamiento de Pub/Sub.
Pub/Sub envía los mensajes A' y B' a todas las suscripciones asociadas, que son Suscripción 1 y Suscripción 2, como se muestra en la imagen.
Si Suscripción 1 tiene un filtro configurado, los mensajes A' y B' se evalúan en función del filtro. Solo los mensajes que coincidan con el filtro pasarán al siguiente paso. Pub/Sub confirma automáticamente el resto de los mensajes.
Si Suscripción 2 tiene un filtro configurado, los mensajes A' y B' se evalúan con el filtro. Solo los mensajes que coincidan con el filtro pasarán al siguiente paso. Pub/Sub confirma automáticamente el resto de los mensajes.
Los SMTs de Suscripción 1 transforman los mensajes A' y B'. A' se convierte en A'' y B' se convierte en B''.
Los SMTs de Suscripción 2 transforman los mensajes A' y B'. A' se mantiene como A' y B' se excluye.
Si Suscripción 1 es una suscripción push con la opción de desempaquetado de carga útil habilitada, los mensajes A'' y B'' se desempaquetan. Si Suscripción 2 es una suscripción push con la función de desempaquetado de la carga útil habilitada, A' se desempaqueta.
Suscriptor 1 recibe el mensaje B'', Suscriptor 2 recibe el mensaje A'' y Suscriptor 3 recibe el mensaje A'.
Los suscriptores confirman que han recibido los mensajes.
Pub/Sub elimina los mensajes confirmados del almacenamiento.
Información importante sobre las SMTs
Los SMTs están integrados en la API Pub/Sub, lo que te permite gestionarlos como parte de las configuraciones de tus temas o suscripciones.
Se pueden habilitar hasta 5 SMTs en un tema o una suscripción.
Las SMTs operan en un solo mensaje de Pub/Sub. No pueden agregar varios mensajes de Pub/Sub.
Cuando se ejecuta una SMT, toma como entrada el mensaje de Pub/Sub, incluidos sus datos y atributos. El resultado es un mensaje de Pub/Sub transformado, con modificaciones en sus datos o atributos.
Si tienes un SMT definido en una suscripción en la que se ha habilitado la ordenación y se produce un error al ejecutar el SMT en cualquier mensaje, los mensajes posteriores con la misma clave de ordenación no se envían al suscriptor. Configura un tema de mensajes fallidos en la suscripción para eliminar del registro de mensajes un mensaje que genere un error y que se puedan entregar los mensajes posteriores.