Zenn
📷

Next'25 速報 - Unify your data with BigQuery multimodal tables

に公開

はじめに

現在ラスベガスで開催されている Google Cloud の旗艦イベント「Google Cloud NEXT'25(以下、Next'25)」に現地参加中の Shanks / kazz / 小堀内 / 岸本 です。
Next'25 で発表された 最新情報 を現地からお届けしています!

構造化データと非構造化データ (画像、音声、動画、ドキュメントなど) の統合分析は、長らく多くの企業にとって困難な課題でした。
従来、これらのデータは別々のシステムで管理され、連携には複雑な ETL パイプラインやカスタムコードが必要でした。
データが多様化する現代において、これらのデータを統合的に分析・活用することは、ますます重要な意味を持っています。

Next'25 で発表された BigQuery の新機能「マルチモーダルテーブル」と、その中核をなす Object Ref は、この課題に対する画期的なソリューションを提供します。
本記事では、Next'25 のセッション内容に基づき、BigQuery の Object Ref がどのようにデータ管理と分析の未来を変えるのか、その技術詳細と活用方法を紹介します。

主要ポイント

このセッションで紹介された BigQuery の新機能に関する重要ポイントは以下の通りです。

  • 構造化・非構造化データの統合: Object Ref データ型により、テキスト、画像、音声、動画などの非構造化データへの参照を、既存の構造化データと同じ BigQuery テーブル内に格納できます。
  • AI/ML 連携の簡素化: BigQuery ML (BQML) や Vertex AI の関数 (ml.generate_text, AI.analyze_image など) に Object Ref を直接渡すことで、非構造化データに対する AI/ML 推論を SQL や Python から容易に実行できます。
  • 統合されたガバナンスとアクセス: 既存の BigQuery のガバナンス機能 (列レベルセキュリティ、行レベルセキュリティ、データマスキングなど) を Object Ref 列にも適用でき、一貫したデータ管理が可能です。
  • SQL と Python による柔軟なアクセス: SQL インターフェースに加え、BigQuery DataFrames (Python) でも Object Ref をネイティブに扱うことができ、使い慣れたツールでマルチモーダルデータ分析を行えます。

技術詳細

背景: 分断されたデータと Object Table の登場

gap

従来、データは構造化データ (テーブル)、半構造化データ (JSON, ログ)、非構造化データ (画像, 音声, 動画など) に分断され、それぞれ異なる分析手法とストレージが必要でした。これらのデータを統合して分析することは可能でしたが、多くの場合、時間と手間のかかる複雑なプロセスを伴いました。

BigQuery は 2023 年頃に Object Table を導入し、このギャップを埋める第一歩を踏み出しました。
Object Table は Google Cloud Storage (GCS) 上のオブジェクトに対する読み取り専用の構造化メタデータレイヤーを提供し、SQL で GCS オブジェクトをクエリ可能にしました。
これにより、「バケット内で最大のファイルは何か?」といったクエリや、BQML 関数への URI 受け渡しによる非構造化データ分析が可能になりました。

object-table

しかし、Object Table には以下の制限がありました。

  • 読み取り専用: テーブルスキーマは固定で、列の追加はできませんでした。
  • 1 オブジェクト対 1 行: 関連ファイルを 1 レコードにまとめることが困難でした。
  • アクセス制御: テーブル単位でのアクセス制御となり、オブジェクトごとの細かい権限設定ができませんでした。
  • スケーラビリティ: カタログ化できるオブジェクト数に上限がありました (現在は緩和されつつあります)。

これらの課題を解決し、より柔軟で統合されたアプローチを提供するために登場したのが Object Ref です。

新機能 Object Ref の紹介

object-ref

Object Ref は BigQuery の新しい列データ型で、STRUCT 型として定義されます。
主な構成要素は以下の通りです。

  • uri: GCS 内のオブジェクトへのパス。
  • authorizer: BigQuery が GCS オブジェクトに安全にアクセスするためのクラウドリソース接続 (Cloud Resource Connection)。これは、BigQuery がユーザーに代わって GCS オブジェクトへ安全にアクセスするための権限委譲メカニズムです。
  • version: GCS オブジェクトの特定の世代 ID。これにより参照が固定され、再現性のあるパイプライン実行が可能になります (特に ML ワークロードで有用)。
  • details: コンテンツタイプやサイズなどの GCS メタデータ。

Object Ref は標準の BigQuery テーブル内に他の列と並べて定義できます。
単なる URI 文字列とは異なり、Object Ref はメタデータ、バージョン情報、そして統合されたアクセス制御(Authorizer)をカプセル化し、より堅牢で管理しやすい参照を実現します。
また、STRUCT 型であるため、配列 (ARRAY<STRUCT<...>>) 内にネストすることも可能です。
これにより、1 つのレコードに複数の非構造化ファイル (例: 商品に対する複数角度からの画像、オーディオブックの各章の音声ファイル) を関連付けることができます。

Object Ref の作成方法 (coming soon)

Object Table を作成すると ref 列が自動的に含まれるようになります。
ref

Object Ref を活用した分析と AI/ML

Object Ref の最大の利点の一つは、非構造化データに対する AI/ML 処理を大幅に簡素化することです。

  • BQML / AI 関数の利用: ml.generate_text, ml.generate_embedding, AI.analyze_image などの関数に、Object Ref 列を直接引数として渡すことができます (例: AI.generate_bool のようなカスタムまたは将来の関数も同様のパターンに従う可能性があります)。BigQuery が GCS からのデータ取得とモデルへの安全なデータ送信を処理します。

  • 複数 Object Ref / 配列の利用: 1 つのプロンプトに複数の Object Ref (例: 2 つの画像を比較) や Object Ref の配列 (例: 通話履歴全体から傾向を分析) を渡すことも可能です。

  • Python (BigQuery DataFrames) との連携: BigQuery DataFrames を使用して、Pandas ライクなインターフェースで Object Ref を含むマルチモーダルデータフレームを操作できます。また、Python UDF 内で OBJ 関数 (get_access_url など) を使用し、カスタムライブラリで非構造化データにアクセスして処理することも可能です。内部的には署名付き URL を利用して GCS へのアクセスが行われます。
    python

  • ガバナンス: Object Ref 列に対しても、通常の BigQuery 列と同様に列レベルセキュリティ、行レベルセキュリティ、データマスキングを適用できます。Authorizer を介したアクセス制御により、オブジェクトレベルでのより詳細な権限管理も可能になります。

まとめ

BigQuery の Object Ref は、これまで分断されがちだった構造化データと非構造化データの壁を取り払い、単一のテーブル内で統合的に管理・分析することを可能にする強力な機能です。

この機能は、顧客分析 (購買履歴 + サポート通話音声/チャットログ)、製品分析 (仕様データ + 画像/動画)、研究開発 (実験データ + 観測画像/動画) など、多様なデータソースを扱う日本のエンジニアにとって、新たなインサイト発見や業務効率化に大きく貢献する可能性を秘めています。
金融における不正検知(取引データ+証拠書類)、製造業での品質管理(センサーデータ+製品画像)、メディア業界でのコンテンツ分析(記事データ+関連動画/音声)など、応用範囲は多岐にわたります。

Object Ref の今後の一般提供に向けて、ぜひ注目しておきたい技術です。

参考リンク

Discussion

ログインするとコメントできます