La plupart des pipelines de données en streaming nécessitent des transformations de données. Certains utilisateurs préfèrent transformer les données une fois qu'elles ont atteint leur destination dans un pipeline ELT (extraction, chargement, transformation), tandis que d'autres optent pour transformer les données avant leur ingestion dans un pipeline ETL (extraction, transformation, chargement). Traditionnellement, cette architecture nécessitait des pipelines complexes avec des outils tels que Dataflow ou Apache Flink pour effectuer des transformations de données.
Pub/Sub propose des transformations de message unique (SMT) pour simplifier les transformations de données pour les pipelines de streaming. Les SMT permettent de modifier de manière légère les données et les attributs des messages directement dans Pub/Sub. Les SMT éliminent le besoin d'étapes de traitement des données supplémentaires ou de produits de transformation des données distincts.
Cas d'utilisation des SMT
Imaginez que vous concevez une boutique en ligne qui souhaite proposer des recommandations de produits personnalisées aux clients lorsqu'ils parcourent le site Web. Pour ce faire, vous pouvez utiliser Pub/Sub pour collecter des données en temps réel sur l'activité des clients sur le site. Cela inclut les données sur les produits consultés, les produits ajoutés au panier et les notes attribuées aux produits.
Toutefois, ces données brutes nécessitent souvent des ajustements avant de pouvoir générer des recommandations. Par exemple, les données brutes peuvent contenir des détails superflus qui ne sont pas pertinents pour votre cas d'utilisation. Il peut s'agir, par exemple, du type de navigateur du client ou de l'heure à laquelle il a visité le site. Il est également possible que les données ne soient pas au format requis pour le système de recommandation. Par exemple, les codes temporels peuvent être au format différent, ou les ID produit peuvent devoir être convertis en un autre type.
Vous pouvez utiliser des SMT Pub/Sub pour effectuer des transformations de données, par exemple:
Supprimez les informations permettant d'identifier personnellement l'utilisateur, telles que les noms complets et les adresses, pour protéger la confidentialité des clients.
Ne conservez que les événements pertinents pour les recommandations, tels que les vues et les achats de produits, et supprimez les autres, comme les modifications apportées au profil client.
Assurez-vous que tous les codes temporels, les valeurs de devise et les ID de produit respectent un format et un type cohérents, compatibles avec le système de recommandation.
Générez de nouveaux champs de données à partir de données brutes, telles que la valeur totale du panier ou la durée de la visite sur la page produit.
En résumé, les SMT permettent de nombreux cas d'utilisation, y compris les suivants:
Masquage et masquage des données: protégez les données sensibles en masquant ou en masquant des champs tels que des numéros de carte de crédit ou des informations permettant d'identifier personnellement l'utilisateur, ce qui facilite la conformité aux réglementations sur la confidentialité des données.
Conversion de format de données: permet de transformer les données entre différents formats afin de garantir la compatibilité avec les systèmes en aval.
Filtrage des messages: ne traitez que les messages pertinents en filtrant les messages indésirables en fonction du contenu ou des attributs. Les SMT permettent des conditions de filtrage plus complexes que les filtres intégrés de Pub/Sub.
Transformations de données simples: effectuez des tâches de manipulation de données de base, telles que la manipulation de chaînes, la mise en forme de dates ou les opérations mathématiques.
Exemple de flux de messages pour les SMT
L'image montre un exemple de système Pub/Sub avec des SMT appliqués au niveau du sujet et de l'abonnement.

La procédure suivante montre comment les messages circulent dans le système Pub/Sub:
Les applications d'éditeur Éditeur 1 et Éditeur 2 publient respectivement les messages A et B dans le sujet Pub/Sub.
Les SMT du sujet transforment les messages A et B en messages A' et B', respectivement.
Si un schéma est associé au sujet, les messages transformés A' et B' sont validés par rapport au schéma. Par exemple, si A' ne correspond pas au schéma, la publication du message A échoue avec une erreur.
Les messages transformés A' et B' sont écrits dans l'espace de stockage Pub/Sub.
Pub/Sub distribue les messages A' et B' à tous les abonnements associés, qui sont Abonnement 1 et Abonnement 2, comme illustré dans l'image.
Si un filtre est configuré pour l'abonnement 1, les messages A' et B' sont évalués par rapport à ce filtre. Seuls les messages correspondant au filtre passent à l'étape suivante. Les autres messages sont automatiquement confirmés par Pub/Sub.
Si un filtre est configuré pour l'abonnement 2, les messages A' et B' sont évalués par rapport à ce filtre. Seuls les messages correspondant au filtre passent à l'étape suivante. Les autres messages sont automatiquement confirmés par Pub/Sub.
Les SMT de l'abonnement 1 transforment les messages A' et B'. A' devient A'' et B' devient B''.
Les SMT de l'abonnement 2 transforment les messages A' et B'. A' reste A' et B' est filtré.
Si l'abonnement 1 est un abonnement push avec le déballage de la charge utile activé, les messages A'' et B'' sont déballés. Si l'abonnement 2 est un abonnement push avec la désencapsulation de la charge utile activée, A' est désencapsulé.
L'abonné 1 reçoit le message B'', l'abonné 2 reçoit le message A'' et l'abonné 3 reçoit le message A'.
Les abonnés confirment la réception des messages.
Pub/Sub supprime les messages confirmés de l'espace de stockage.
Informations importantes sur les SMT
Les SMT sont intégrés à l'API Pub/Sub, ce qui vous permet de les gérer dans le cadre de vos configurations de sujet ou d'abonnement.
Vous pouvez activer jusqu'à cinq services de messagerie par sujet ou abonnement.
Les SMT fonctionnent sur un seul message Pub/Sub. Ils ne peuvent pas agréger plusieurs messages Pub/Sub.
Lorsqu'un SMT est exécuté, il prend en entrée le message Pub/Sub, y compris ses données et ses attributs. La sortie est un message Pub/Sub transformé, avec des modifications apportées à ses données ou attributs.
Si vous avez défini un SMT sur un abonnement pour lequel le tri est activé et que l'exécution du SMT sur un message génère une erreur, les messages suivants pour la même clé de tri ne sont pas distribués à l'abonné. Configurez un file d'attente de lettres mortes sur l'abonnement pour supprimer un message qui génère une erreur de la file d'attente de messages afin que les messages suivants puissent être distribués.