大多數串流資料管道都需要進行資料轉換。部分使用者偏好在擷取、載入、轉換 (ELT) 管道中,先將資料載入目的地,再進行轉換;其他使用者則選擇在擷取、轉換、載入 (ETL) 管道中,先轉換資料再擷取。傳統上,這種架構需要使用 Dataflow 或 Apache Flink 等工具,透過複雜的管道執行資料轉換。
Pub/Sub 提供單一訊息轉換 (SMT),可簡化串流管道的資料轉換作業。您可以透過 SMT 功能,直接在 Pub/Sub 中簡單修改訊息資料與屬性。SMT 可省去額外的資料處理步驟或使用其他資料轉換產品。
執行 SMT 時,系統會將 Pub/Sub 訊息 (包括訊息資料和屬性) 做為輸入內容。輸出內容是經過轉換的 Pub/Sub 訊息,資料或屬性會經過修改。SMT 已整合至 Pub/Sub API,因此您可以將 SMT 視為主題或訂閱設定的一部分進行管理。
SMT 的用途
假設您要設計網路商店,在顧客瀏覽網站時提供個人化產品推薦內容。如要這麼做,您可以使用 Pub/Sub 收集網站上客戶活動的即時資料。包括瀏覽過的產品、加入購物車的產品,以及產品評分。
不過,這些原始資料通常需要經過調整,才能用於產生建議。舉例來說,原始資料可能包含與用途無關的額外詳細資料。這類詳細資料的例子包括顧客的瀏覽器類型,或他們造訪網站的時間。資料也可能不符合建議系統的格式要求。舉例來說,時間戳記可能採用不同格式,或產品 ID 可能需要轉換為其他類型。
您可以使用 Pub/Sub SMT 進行資料轉換,例如:
請移除全名和地址等個人識別資訊 (PII),保護顧客隱私。
只保留與推薦相關的事件,例如產品瀏覽和購買,並捨棄其他事件,例如顧客個人資料變更。
請確保所有時間戳記、幣別值和產品 ID 都採用一致的格式,且類型與建議系統相容。
從原始資料產生新的資料欄位,例如購物車總價值或產品頁面停留時間。
將 Gemini Enterprise Agent Platform 模型推論結果新增至事件資料,例如分類、預測、情緒或嵌入。
總而言之,SMT 可用於各種用途,包括:
資料遮蓋和遮蔽:遮蓋或遮蔽信用卡號碼或 PII 等欄位,保護機密資料,協助遵守資料隱私權法規。
資料格式轉換:在不同格式之間轉換資料,確保與後續系統相容。
訊息篩選:根據內容或屬性篩除不想要的訊息,只處理相關訊息。與 Pub/Sub 的內建篩選器相比,SMT 可設定更複雜的篩選條件。
簡單的資料轉換:執行基本資料操作工作,例如字串操作、日期格式設定或數學運算。
AI 推論:使用 AI 推論 SMT,將 AI 模型完美整合至 Pub/Sub 管道。
SMT 類型
Pub/Sub 支援下列 SMT:
- AI 推論:從 Agent Platform 模型取得 Pub/Sub 訊息的推論結果。
- 使用者定義函式:呼叫 JavaScript 使用者定義函式 (UDF),對 Pub/Sub 訊息執行自訂轉換。
SMT 的訊息流程範例
圖片:顯示 Pub/Sub 系統範例,主題和訂閱層級都套用了 SMT。
以下程序說明 Pub/Sub 系統中的訊息流程:
發布者應用程式「發布者 1」和「發布者 2」會分別將訊息「A」和「B」發布至 Pub/Sub 主題。
主題的 SMT 會將訊息 A 和 B 分別轉換為訊息 A' 和 B'。
如果主題附加結構定義,系統會根據結構定義驗證轉換後的訊息 A' 和 B'。舉例來說,如果 A' 不符合結構定義,發布訊息 A 時就會發生錯誤。
轉換後的訊息 A' 和 B' 會寫入 Pub/Sub 儲存空間。
Pub/Sub 會將訊息 A' 和 B' 傳遞至所有附加的訂閱項目,也就是圖片中顯示的「Subscription 1」和「Subscription 2」。
如果訂閱項目 1 已設定篩選器,系統會根據篩選器評估訊息 A' 和 B'。只有符合篩選條件的郵件會進入下一個步驟。Pub/Sub 會自動確認其他訊息。
如果已為「訂閱項目 2」設定篩選器,系統會根據該篩選器評估訊息 A' 和 B'。只有符合篩選條件的郵件會進入下一個步驟。Pub/Sub 會自動確認其他訊息。
訂閱項目 1 的 SMT 會轉換訊息 A 和 B。A' 會變成 A'',B' 會變成 B''。
訂閱項目 2 的 SMT 會轉換訊息 A' 和 B'。A' 仍為 A',而 B' 則會遭到篩除。
如果「Subscription 1」是啟用酬載解除包裝的推送訂閱項目,系統會解除包裝訊息「A''」和「B''」。如果「訂閱項目 2」是啟用酬載解除包裝功能的推送訂閱項目,則會解除包裝「A」。
「Subscriber 1」(訂閱者 1) 接收到訊息「B''」、「Subscriber 2」(訂閱者 2) 接收到訊息「A''」,而「Subscriber 3」(訂閱者 3) 接收到訊息「A'」。
訂閱者會確認收到的訊息。
Pub/Sub 會從儲存空間刪除已確認的訊息。
限制
每個主題或訂閱項目最多可啟用 5 個 SMT。
SMT 會對單一 Pub/Sub 訊息執行作業。無法彙整多則 Pub/Sub 訊息。