Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Die meisten Streaming-Datenpipelines erfordern Datentransformationen. Einige Nutzer bevorzugen es, Daten in einer ELT-Pipeline (Extract, Load, Transform) zu transformieren, nachdem sie ihr Ziel erreicht haben, während andere Daten vor der Aufnahme in einer ETL-Pipeline (Extract, Transform, Load) transformieren. Für diese Architektur waren bisher komplexe Pipelines mit Tools wie Dataflow oder Apache Flink erforderlich, um Datentransformationen durchzuführen.
Pub/Sub bietet Single Message Transforms (SMTs), um Datentransformationen für Streaming-Pipelines zu vereinfachen. Mit SMTs können Nachrichtendaten und -attribute direkt in Pub/Sub einfach geändert werden. Durch SMTs sind keine zusätzlichen Schritte zur Datenverarbeitung oder separate Produkte zur Datentransformation erforderlich.
Anwendungsfälle für SMTs
Angenommen, Sie entwerfen einen Onlineshop, in dem Kunden beim Stöbern auf der Website personalisierte Produktempfehlungen erhalten sollen. Dazu können Sie Pub/Sub verwenden, um Echtzeitdaten zu den Kundenaktivitäten auf der Website zu erheben. Dazu gehören Daten zu den angesehenen Produkten, den in den Einkaufswagen gelegten Produkten und den Bewertungen der Produkte.
Diese Rohdaten müssen jedoch oft angepasst werden, bevor sie zur Generierung von Empfehlungen verwendet werden können. Die Rohdaten können beispielsweise überflüssige Details enthalten, die für Ihren Anwendungsfall irrelevant sind. Beispiele für solche Details sind der Browsertyp des Kunden oder die Uhrzeit, zu der er die Website besucht hat. Möglicherweise sind die Daten auch nicht im für das Empfehlungssystem erforderlichen Format. So können Zeitstempel beispielsweise in verschiedenen Formaten vorliegen oder Produkt-IDs müssen möglicherweise in einen anderen Typ umgewandelt werden.
Mit Pub/Sub-SMTs können Sie Datentransformationen wie die folgenden ausführen:
Entfernen Sie personenidentifizierbare Informationen wie vollständige Namen und Adressen, um den Datenschutz für Kunden zu schützen.
Behalten Sie nur für Empfehlungen relevante Ereignisse wie Produktaufrufe und Käufe bei und verwerfen Sie andere, z. B. Änderungen am Kundenprofil.
Achten Sie darauf, dass alle Zeitstempel, Währungswerte und Produkt-IDs ein einheitliches Format und einen Typ haben, der mit dem Empfehlungssystem kompatibel ist.
Erstellen Sie neue Datenfelder aus Rohdaten, z. B. den Gesamtwert des Warenkorbs oder die Verweildauer auf der Produktseite.
Zusammenfassend ermöglichen SMTs eine Vielzahl von Anwendungsfällen, darunter:
Datenmaskierung und ‑entfernung: Schützen Sie sensible Daten, indem Sie Felder wie Kreditkartennummern oder personenidentifizierbare Informationen maskieren oder entfernen. So wird die Einhaltung von Datenschutzbestimmungen unterstützt.
Datenformatkonvertierung: Daten zwischen verschiedenen Formaten transformieren, um die Kompatibilität mit nachgelagerten Systemen zu gewährleisten.
Nachrichtenfilterung: Sie können nur relevante Nachrichten verarbeiten, indem Sie unerwünschte Nachrichten anhand von Inhalt oder Attributen herausfiltern. Mit SMTs lassen sich komplexere Filterbedingungen als mit den vordefinierten Filtern von Pub/Sub definieren.
Einfache Datentransformationen: Sie können grundlegende Datenmanipulationsaufgaben ausführen, z. B. Stringmanipulation, Datumsformatierung oder mathematische Operationen.
Beispiel für den Nachrichtenfluss für SMTs
Das Bild zeigt ein Beispiel für ein Pub/Sub-System mit SMTs, die sowohl auf Themen- als auch auf Aboebene angewendet werden.
Abbildung 1: So werden Nachrichten mit SMTs transformiert.
Im Folgenden wird der Nachrichtenfluss im Pub/Sub-System veranschaulicht:
Die Publisher-Anwendungen Publisher 1 und Publisher 2 veröffentlichen die Nachrichten A und B im Pub/Sub-Thema.
Die SMTs des Themas wandeln die Nachrichten A und B in die Nachrichten A' und B' um.
Wenn dem Thema ein Schema zugeordnet ist, werden die transformierten Nachrichten A' und B' anhand des Schemas validiert. Wenn beispielsweise A' nicht mit dem Schema übereinstimmt, schlägt die Veröffentlichung der Nachricht A mit einer Fehlermeldung fehl.
Die transformierten Nachrichten A' und B' werden in den Pub/Sub-Speicher geschrieben.
Pub/Sub liefert die Nachrichten A' und B' an alle zugehörigen Abos, also Abo 1 und Abo 2, wie in der Abbildung dargestellt.
Wenn für Abo 1 ein Filter konfiguriert ist, werden die Nachrichten A' und B' anhand des Filters ausgewertet. Nur Nachrichten, die dem Filter entsprechen, werden mit dem nächsten Schritt fortgesetzt. Andere Nachrichten werden von Pub/Sub automatisch bestätigt.
Wenn für Abo 2 ein Filter konfiguriert ist, werden die Nachrichten A' und B' anhand des Filters ausgewertet. Nur Nachrichten, die dem Filter entsprechen, werden mit dem nächsten Schritt fortgesetzt. Andere Nachrichten werden von Pub/Sub automatisch bestätigt.
Die SMTs von Abo 1 transformieren die Nachrichten A und B. A' wird zu A'' und B' zu B''.
Die SMTs von Abo 2 transformieren die Nachrichten A' und B'. A' bleibt A' und B' wird herausgefiltert.
Wenn Abo 1 ein Push-Abo ist, für das das Entfernen der Nutzlast aktiviert ist, werden die Nachrichten A und B entpackt. Wenn Abo 2 ein Push-Abo ist, für das das Entpacken der Nutzlast aktiviert ist, wird A' entpackt.
Abonnent 1 empfängt die Nachricht B, Abonnent 2 die Nachricht A und Abonnent 3 die Nachricht A'.
Abonnenten bestätigen die empfangenen Nachrichten.
Pub/Sub löscht die bestätigten Nachrichten aus dem Speicher.
Wichtige Informationen zu SMTs
SMTs sind in die Pub/Sub API eingebunden, sodass Sie sie als Teil Ihrer Themen- oder Abokonfigurationen verwalten können.
Für ein Thema oder Abo können bis zu fünf SMTs aktiviert werden.
SMTs arbeiten mit einer einzelnen Pub/Sub-Nachricht. Sie können nicht mehrere Pub/Sub-Nachrichten zusammenfassen.
Wenn ein SMT ausgeführt wird, nimmt es die Pub/Sub-Nachricht mit ihren Daten und Attributen als Eingabe. Die Ausgabe ist eine transformierte Pub/Sub-Nachricht mit Änderungen an den Daten oder Attributen.
Wenn Sie für ein Abo, für das die Sortierung aktiviert ist, einen SMT definiert haben und bei der Ausführung des SMT für eine Nachricht ein Fehler auftritt, werden die nachfolgenden Nachrichten mit demselben Reihenfolgeschlüssel nicht an den Abonnenten zugestellt.
Richten Sie ein Thema für unzustellbare Nachrichten für das Abo ein, um eine solche Nachricht, die einen Fehler verursacht, aus dem Backlog an Nachrichten zu entfernen, damit nachfolgende Nachrichten zugestellt werden können.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 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)"]]