ほとんどのストリーミング データ パイプラインでは、データ変換が必要です。抽出、読み込み、変換(ELT)パイプラインでデータが宛先に到達した後に変換することを好むユーザーもいれば、抽出、変換、読み込み(ETL)パイプラインで取り込み前にデータを変換することを好むユーザーもいます。従来、このアーキテクチャでは、Dataflow や Apache Flink などのツールを使用してデータ変換を行う複雑なパイプラインが必要でした。
Pub/Sub では、ストリーミング パイプラインのデータ変換を簡素化するための単一メッセージ変換(SMT)が提供されています。SMT を使用すると、メッセージデータと属性に対する軽量な変更を Pub/Sub 内で直接行うことができます。SMT を使用すると、追加のデータ処理ステップや個別のデータ変換プロダクトが不要になります。
SMT が実行されると、メッセージデータや属性などの Pub/Sub メッセージが入力として使用されます。出力は、データまたは属性が変更された変換済みの Pub/Sub メッセージです。SMT は Pub/Sub API に統合されているため、トピックまたはサブスクリプションの構成の一部として管理できます。
SMT のユースケース
ウェブサイトを閲覧しているお客様にパーソナライズされたおすすめの商品情報を表示するオンライン ショップを設計することを検討します。これを行うには、Pub/Sub を使用して、サイトでの顧客アクティビティに関するリアルタイム データを収集します。これには、閲覧した商品、カートに追加した商品、商品に付けた評価に関するデータが含まれます。
ただし、この未加工のデータは、推奨事項の生成に使用する前に調整が必要になることがよくあります。たとえば、生データにはユースケースに関係のない余分な詳細が含まれている場合があります。たとえば、お客様のブラウザの種類やサイトにアクセスした時間などです。また、データがレコメンデーション システムに必要な形式になっていない可能性もあります。たとえば、タイムスタンプの形式が異なる場合や、商品 ID を別の型に変換する必要がある場合があります。
Pub/Sub SMT を使用して、次のようなデータ変換を行うことができます。
顧客のプライバシーを保護するため、氏名や住所などの個人情報(PII)を削除します。
商品閲覧や購入など、おすすめに関連するイベントのみを保持し、顧客プロファイルの変更など、その他のイベントは破棄します。
すべてのタイムスタンプ、通貨値、商品 ID が、レコメンデーション システムと互換性のある一貫した形式と型に準拠していることを確認します。
ショッピング カートの合計金額や商品ページの滞在時間などの元データから、新しいデータ フィールドを生成します。
Gemini Enterprise エージェント プラットフォーム モデルの推論(分類、予測、感情、エンベディングなど)をイベントデータに追加します。
まとめると、SMT は次のような幅広いユースケースに対応できます。
データのマスキングと秘匿化: クレジット カード番号や PII などのフィールドをマスキングまたは秘匿化することでセンシティブ データを保護し、データ プライバシーに関する規則の遵守を支援します。
データ形式の変換: 下流のシステムとの互換性を確保するために、異なる形式間でデータを変換します。
メッセージ フィルタリング: コンテンツまたは属性に基づいて不要なメッセージをフィルタリングし、関連するメッセージのみを処理します。SMT では、Pub/Sub の組み込みフィルタよりも複雑なフィルタ条件を使用できます。
簡単なデータ変換: 文字列操作、日付形式設定、数学演算などの基本的なデータ操作タスクを実行します。
AI 推論: AI 推論 SMT を使用して、AI モデルを Pub/Sub パイプラインにシームレスに統合します。
SMT の種類
Pub/Sub は、次の SMT をサポートしています。
- AI 推論: Agent Platform モデルから Pub/Sub メッセージの推論を取得します。
- ユーザー定義関数: JavaScript ユーザー定義関数(UDF)を呼び出して、Pub/Sub メッセージに対してカスタム変換を実行します。
SMT のサンプル メッセージ フロー
この図は、トピック レベルとサブスクリプション レベルの両方で SMT が適用された Pub/Sub システムの例を示しています。
次の手順は、Pub/Sub システムでのメッセージのフローを示しています。
パブリッシャー アプリケーション パブリッシャー 1 と パブリッシャー 2 は、それぞれメッセージ A と B を Pub/Sub トピックにパブリッシュします。
トピックの SMT は、メッセージ A と B をそれぞれメッセージ A' と B' に変換します。
スキーマがトピックに関連付けられている場合、変換されたメッセージ A' と B' はスキーマに対して検証されます。たとえば、A' がスキーマと一致しない場合、メッセージ A のパブリッシュはエラーで失敗します。
変換されたメッセージ A' と B' が Pub/Sub ストレージに書き込まれます。
Pub/Sub は、図に示すように、Subscription 1 と Subscription 2 のすべてのサブスクリプションにメッセージ A' と B' を配信します。
サブスクリプション 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' は除外されます。
サブスクリプション 1 がペイロードのラップ解除が有効になっている push サブスクリプションの場合、メッセージ A'' と B'' はラップ解除されます。Subscription 2 がペイロードのラップ解除が有効になっている push サブスクリプションの場合、A' はラップ解除されます。
サブスクライバー 1 はメッセージ B'' を受信し、サブスクライバー 2 はメッセージ A'' を受信し、サブスクライバー 3 はメッセージ A' を受信します。
サブスクライバーは受信したメッセージを確認応答します。
Pub/Sub は、確認応答済みのメッセージをストレージから削除します。
制限事項
トピックまたはサブスクリプションで最大 5 個の SMT を有効にできます。
SMT は単一の Pub/Sub メッセージで動作します。複数の Pub/Sub メッセージを集約することはできません。