Panoramica delle trasformazioni di singoli messaggi (SMT)
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
La maggior parte delle pipeline di dati in streaming richiede trasformazioni dei dati. Alcuni utenti preferiscono trasformare i dati dopo che raggiungono la destinazione in una pipeline ELT (estrazione, caricamento e trasformazione), mentre altri scelgono di trasformarli prima dell'importazione in una pipeline ETL (estrazione, trasformazione e caricamento). Tradizionalmente, questa
architettura richiedeva pipeline complesse con strumenti come Dataflow o
Apache Flink per eseguire trasformazioni dei dati.
Pub/Sub offre Single Message Transform (SMT) per semplificare le trasformazioni dei dati per le pipeline di streaming. Gli SMT consentono di apportare modifiche leggere ai dati e agli attributi dei messaggi direttamente in Pub/Sub. Gli SMT eliminano la necessità di ulteriori passaggi di elaborazione dei dati o di prodotti di trasformazione dei dati separati.
Casi d'uso degli SMT
Valuta la possibilità di progettare un negozio online che voglia offrire ai clienti consigli personalizzati sui prodotti mentre navigano sul sito web. A tal fine, puoi utilizzare Pub/Sub per raccogliere dati in tempo reale sull'attività dei clienti sul sito. Sono inclusi i dati sui prodotti visualizzati, sui prodotti aggiunti al carrello e sulle valutazioni assegnate ai prodotti.
Tuttavia, questi dati non elaborati spesso richiedono alcuni aggiustamenti prima di poter essere utilizzati per generare consigli. Ad esempio, i dati non elaborati potrebbero contenere dettagli estranei non pertinenti per il tuo caso d'uso. Esempi di questi dettagli sono il tipo di browser del cliente o l'ora in cui ha visitato il sito. Inoltre, i dati potrebbero non essere nel formato richiesto per il sistema di consigli. Ad esempio,
i timestamp potrebbero essere in formati diversi o gli ID prodotto potrebbero dover essere
convertiti in un tipo diverso.
Puoi utilizzare gli SMT Pub/Sub per eseguire trasformazioni dei dati come le seguenti:
Rimuovi le informazioni che consentono l'identificazione personale (PII), come nomi e cognomi e indirizzi, per proteggere la privacy dei clienti.
Mantieni solo gli eventi pertinenti per i consigli, come le visualizzazioni e gli acquisti di prodotti, ed elimina gli altri, come le modifiche al profilo del cliente.
Assicurati che tutti i timestamp, i valori in valuta e gli ID prodotto rispettino un formato e un tipo coerenti e compatibili con il sistema di consigli.
Genera nuovi campi di dati dai dati non elaborati, ad esempio il valore totale del carrello degli acquisti o il tempo di permanenza sulla pagina del prodotto.
In sintesi, gli SMT consentono un'ampia gamma di casi d'uso, tra cui:
Mascheramento e oscuramento dei dati: proteggi i dati sensibili mascherando o oscurando campi come numeri di carte di credito o PII, agevolando la conformità alle normative sulla privacy dei dati.
Conversione del formato dei dati: trasforma i dati tra formati diversi per garantire la compatibilità con i sistemi a valle.
Filtro dei messaggi: elabora solo i messaggi pertinenti escludendo quelli indesiderati in base ai contenuti o agli attributi. Le SMT consentono condizioni di filtro più complesse rispetto ai filtri integrati di Pub/Sub.
Trasformazioni di dati semplici: esegui attività di manipolazione di dati di base, come la manipolazione di stringhe, la formattazione di date o operazioni matematiche.
Flusso di messaggi di esempio per gli SMT
L'immagine mostra un esempio di sistema Pub/Sub con SMT applicati sia a livello di argomento sia a livello di abbonamento.
Figura 1 Come i messaggi vengono trasformati con gli SMT.
La procedura seguente mostra come i messaggi fluiscono nel sistema Pub/Sub:
Le applicazioni publisher Publisher 1 e Publisher 2 pubblicano rispettivamente i messaggi A e B nell'argomento Pub/Sub.
Gli SMT dell'argomento trasformano i messaggi A e B in messaggi A' e
B', rispettivamente.
Se allo schema è associato uno schema, i messaggi trasformati A' e
B' vengono convalidati in base allo schema. Se, ad esempio, A' non corrisponde allo schema, la pubblicazione del messaggio A non va a buon fine e viene visualizzato un errore.
I messaggi trasformati A' e B' vengono scritti nello spazio di archiviazione Pub/Sub.
Pub/Sub invia i messaggi A' e B' a tutte le sottoscrizioni collegate, ovvero Abbonamento 1 e Abbonamento 2 come mostrato nell'immagine.
Se per l'Abbonamento 1 è configurato un filtro, i messaggi
A' e B' vengono valutati in base al filtro. Solo i messaggi corrispondenti al filtro procedono al passaggio successivo. Gli altri messaggi vengono riconosciuti automaticamente da Pub/Sub.
Se per l'Abbonamento 2 è configurato un filtro, i messaggi A' e B' vengono valutati in base al filtro. Solo i messaggi corrispondenti al filtro procedono al passaggio successivo. Gli altri messaggi vengono riconosciuti automaticamente da Pub/Sub.
Gli SMT dell'abbonamento 1 trasformano i messaggi A' e B'. A' diventa A'' e B' diventa B''.
Gli SMT dell'abbonamento 2 trasformano i messaggi A' e B'. A' rimane A' e B' viene escluso.
Se l'abbonamento 1 è un abbonamento push con l'annullamento del wrapping del payload attivo, i messaggi A e B vengono sballati. Se
Abbonamento 2 è un abbonamento push con l'annullamento del wrapping del payload attivo, A' viene sballato.
L'abbonato 1 riceve il messaggio B'', l'abbonato 2 riceve il messaggio A'' e l'abbonato 3 riceve il messaggio A'.
Gli abbonati confermano i messaggi ricevuti.
Pub/Sub elimina i messaggi confermati dallo spazio di archiviazione.
Informazioni importanti sugli SMT
Le SMT sono integrate nell'API Pub/Sub, il che ti consente di gestirle come parte delle configurazioni degli argomenti o delle iscrizioni.
In un argomento o in una sottoscrizione è possibile attivare fino a 5 SMT.
Le SMT operano su un singolo messaggio Pub/Sub. Non possono aggregare più messaggi Pub/Sub.
Quando viene eseguito un SMT, viene preso in input il messaggio Pub/Sub, inclusi i relativi dati e attributi. L'output è un messaggio Pub/Sub trasformato, con modifiche ai dati o agli attributi.
Se hai definito un SMT su un abbonamento per il quale è attivato l'ordinamento e l'esecuzione dell'SMT su un messaggio genera un errore, i messaggi successivi per la stessa chiave di ordinamento non vengono recapitati all'abbonato.
Configura un argomento messaggi non recapitabili nell'abbonamento
per rimuovere un messaggio che genera un errore dalla coda dei messaggi
in modo che i messaggi successivi possano essere recapitati.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-08-19 UTC."],[],[],null,["# Single Message Transforms (SMTs) overview\n\nMost streaming data pipelines require data transformations. Some users prefer\ntransforming data after it reaches its destination in an extract, load,\ntransform (ELT) pipeline, while others opt for transforming data before its\ningestion in an extract, transform, and load (ETL) pipeline. Traditionally, this\narchitecture required complex pipelines with tools like Dataflow or\nApache Flink to perform data transformations.\n\nPub/Sub offers **Single Message Transforms** (SMTs) to simplify\ndata transformations for streaming pipelines. SMTs enable lightweight\nmodifications to message data and attributes directly within\nPub/Sub. SMTs eliminate the need for additional data processing\nsteps or separate data transformation products.\n\nSMTs use cases\n--------------\n\nConsider designing an online store that wants to give customers personalized\nproduct recommendations as they browse the website. To do this, you can use\nPub/Sub to collect real-time data about customer activity on the\nsite. This includes data about the products viewed, the products added to the\ncart, and the ratings given to products.\n\nHowever, this raw data often needs some adjustments before it can be used to\ngenerate recommendations. For example, the raw data might contain extraneous\ndetails which are irrelevant for your use case. Examples of such details are the\ncustomer's browser type or the time they visited the site. The data might also\nnot be in the required format for the recommendation system. For example,\ntimestamps might be in different formats, or product IDs might need to be\nconverted to a different type.\n\nYou can use Pub/Sub SMTs to make data transformations\nsuch as the following:\n\n- Remove personally identifiable information (PII), such as full names and\n addresses, to protect customer privacy.\n\n- Retain only recommendation-relevant events, such as product views and\n purchases, and discard others, such as customer profile changes.\n\n- Ensure all timestamps, currency values, and product IDs adhere to a\n consistent format and type compatible with the recommendation system.\n\n- Generate new data fields from raw data, such as shopping cart total value or\n product page dwell time.\n\nIn summary, SMTs enable a wide range of use cases, including the following:\n\n- **Data masking and redaction**: Protect sensitive data by masking or\n redacting fields like credit card numbers or PII, aiding compliance with\n data privacy regulations.\n\n- **Data format conversion**: Transform data between different formats to\n ensure compatibility with downstream systems.\n\n- **Message filtering** : Process only relevant messages by filtering out\n unwanted messages based on content or attributes. SMTs allow for more\n complex filtering conditions than Pub/Sub's\n [built-in filters](/pubsub/docs/subscription-message-filter).\n\n- **Simple data transformations**: Perform basic data manipulation tasks, such\n as string manipulation, date formatting, or mathematical operations.\n\nSample message flow for SMTs\n----------------------------\n\nThe image shows an example Pub/Sub system with SMTs applied at both the\ntopic and subscription levels.\n**Figure 1** How messages are transformed with SMTs.\n\n\u003cbr /\u003e\n\nThe following procedure shows how the messages flow in the Pub/Sub\nsystem:\n\n1. The publisher applications **Publisher 1** and **Publisher 2** publish\n messages **A** and **B** respectively to the Pub/Sub topic.\n\n2. The topic's SMTs transform messages **A** and **B** into messages **A'** and\n **B'**, respectively.\n\n3. If a schema is attached to the topic, the transformed messages **A'** and\n **B'** are validated against the schema. If, for example, **A'** does not\n match the schema, the publish of message **A** fails with an error.\n\n4. The transformed messages **A'** and **B'** are written to\n Pub/Sub storage.\n\n5. Pub/Sub delivers messages **A'** and **B'** to all attached\n subscriptions, which are **Subscription 1** and **Subscription 2** as shown\n in the image.\n\n6. If **Subscription 1** has a filter configured, messages\n **A'** and **B'** are evaluated against the filter. Only messages matching\n the filter proceed to the next step. Other messages are automatically\n acknowledged by Pub/Sub.\n\n7. If **Subscription 2** has a filter configured, messages\n **A'** and **B'** are evaluated against the filter. Only messages matching\n the filter proceed to the next step. Other messages are automatically\n acknowledged by Pub/Sub.\n\n8. **Subscription 1** 's SMTs transform messages **A'** and **B'** . **A'**\n becomes **A''** and **B'** becomes **B''**.\n\n9. **Subscription 2** 's SMTs transform messages **A'** and **B'** . **A'**\n remains as **A'** and **B'** is filtered out.\n\n10. If **Subscription 1** is a push subscription with payload unwrapping\n enabled, messages **A''** and **B''** are unwrapped. If\n **Subscription 2** is a push subscription with payload unwrapping\n enabled, **A'** is unwrapped.\n\n11. **Subscriber 1** receives message **B''** , **Subscriber 2** receives\n message **A''** , and **Subscriber 3** receives message **A'**.\n\n12. Subscribers acknowledge the received messages.\n\n13. Pub/Sub deletes the acknowledged messages from storage.\n\nImportant information about SMTs\n--------------------------------\n\n- SMTs are integrated into the Pub/Sub\n API, allowing you to manage them as part of your topic or subscription\n configurations.\n\n- Up to 5 SMTs can be enabled on a topic or subscription.\n\n- SMTs operate on a single Pub/Sub message. They\n cannot aggregate multiple Pub/Sub messages.\n\n- When a SMT is run, it takes as input the Pub/Sub message,\n including its data and attributes. The output is a transformed\n Pub/Sub message, with modifications to its data or attributes.\n\n- If you have an SMT defined on a subscription that has ordering enabled and\n executing the SMT on any message throws an error, the subsequent messages\n for the same ordering key are not delivered to the subscriber.\n [Set up a dead-letter topic on the subscription](/pubsub/docs/handling-failures)\n to remove such a message that throws an error from the backlog of messages\n so subsequent messages can be delivered.\n\nTypes of SMTs\n-------------\n\n- [User Defined Functions](/pubsub/docs/smts/udfs-overview)\n\nWhat's next\n-----------\n\n- [Choose between topic and subscription SMTs](/pubsub/docs/smts/choose-smts)\n\n- [Learn about User Defined Functions](/pubsub/docs/smts/udfs-overview)\n\n- [Create a topic with SMTs](/pubsub/docs/smts/create-topic-smt)\n\n- [Create a subscription with SMTs](/pubsub/docs/smts/create-subscription-smt)"]]