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.

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.