NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

注目のタグ

    BigQuery オブジェクト テーブルで広告クリエイティブ資産を「データ」として管理しよう

    本記事は  【Advent Calendar 2025】  17日目の記事です。
    🌟🎄  16日目②  ▶▶ 本記事 ▶▶  18日目①  🎅🎁

    はじめに

    最近RITZ(クラッカー)の美味しさに気づいた松村です。
    本ブログでは、Google Cloud を使って広告クリエイティブを一元管理する方法として、BigQuery のオブジェクト テーブルを紹介します。オブジェクト テーブルで広告のクリエイティブを管理すると、BigQuery にエクスポートされた Google アナリティクスのデータからクリエイティブごとの成果を確認、さらに、成果の悪い広告クリエイティブについて改善案を AI に出してもらうといったことも、BigQuery 上で完結できるようになります。
    広告クリエイティブの管理から分析までを Google Cloud 上で完結させたい方の参考になれば幸いです。

    オブジェクト テーブルとは

    「オブジェクト テーブル」という言葉に馴染みがない方のために、まず簡単にどのようなものか説明します。
    オブジェクト テーブルとは、Cloud Storage(GCS)上に保存されている非構造化データ(画像、音声、PDF など)を、あたかも BigQuery のテーブルであるかのように参照できる機能です。

    BigQuery は、数値やテキストといった構造化データの分析を得意とする一方で、画像ファイルのような非構造化データそのものを直接格納・分析することはできません。
    一方で、オブジェクト テーブルを利用することで、GCS に格納された大量のファイルを BigQuery のテーブルとして扱い、ファイル一覧やメタデータ(サイズ、フォーマット、更新日時など)を SQL で取得・集計できるようになります。
    さらにオブジェクト テーブルは、単なるファイル管理にとどまらず、BigQuery ML や外部の AI/ML モデルと組み合わせて、オブジェクトの内容そのものを分析・処理できる点も特長です。たとえば画像から特徴量を抽出したり、分類・判定結果をテーブルとして扱ったりといった活用が可能になります。
    参考:オブジェクト テーブルの概要  |  BigQuery  |  Google Cloud Documentation

    今回は、この仕組みを広告クリエイティブの管理に活用します。
    日々増え続けるバナー画像などをオブジェクト テーブルで管理することで、「ファイルサイズが大きすぎる画像」や「古いフォーマットの画像」「特定の日時に更新された画像」といったクリエイティブを SQL で簡単に洗い出すことができます。
    さらに応用すれば、AI/ML を用いてクリエイティブの内容や特徴を分析し、成果の悪い広告が特定のフォーマットやサイズ、表現傾向に偏っているといった示唆を得ることも可能になります。

    オブジェクト テーブルを作成する際のステップ

    それでは、実際にオブジェクト テーブルを作成していきましょう。大まかな流れは以下の通りです。

    1. 画像を GCS にアップロードする
    2. BigQuery と GCS をつなぐ「接続」を作成する
    3. オブジェクト テーブルを作成する

    ステップ 1:画像を GCS にアップロードする

    まずは、分析対象となる広告クリエイティブ(画像ファイル)を GCS にアップロードする作業です。 今回は例として、Nano Banana Pro で作成した2つの広告クリエイティブ画像を用意しました。これを GCS へアップロードしていきます。

    ①バケットの作成
    画像を保存するためのバケットがまだない場合は、作成する必要があります。設定自体は難しくないので、以下の公式ドキュメントを参考に作成してみてください。
    参考:バケットの作成  |  Cloud Storage  |  Google Cloud Documentation

    ②画像のアップロード
    作成したバケットに、広告クリエイティブをアップロードします。 アップロードにはコマンドラインを使う方法などいくつか手段がありますが、ブラウザ画面へのドラッグ&ドロップが一番簡単です。私も普段はこの方法でサクッとアップロードしています。
    参考:ファイル システムからオブジェクトをアップロードする  |  Cloud Storage  |  Google Cloud Documentation

    ③【重要】カスタム メタデータの追加
    ここで、単に画像をアップロードして終わりにするのではなく、画像ファイルに対してカスタム メタデータを追加することを強くおすすめします。ファイル名だけで管理しようとすると、後々「どのキャンペーンの画像だっけ?」と混乱しがちです。
    そこで、ファイル自体にタグのような情報を埋め込んでおきます。おすすめは、Google アナリティクスや Google 広告などのデータとの連携を見据えて、utm パラメータ(「utm_id」のようなキャンペーン ID)をメタデータに入れておく方法です。

    例えば、以下のように設定します。
    キー:utm_id
    値:advent_calender_campaign_2025_santa(一意なID)
    メタデータの編集方法は、アップロードした画像ファイルの詳細から「メタデータを編集」を選ぶだけです。詳しくは以下をご参照ください。
    参考:オブジェクトのメタデータの表示と編集  |  Cloud Storage  |  Google Cloud Documentation

    こうしておけば、Google アナリティクスのデータと画像ファイルの照合が簡単になります。また、後々 Google アナリティクスのデータとこの画像ファイルから作成したオブジェクト テーブルをもとに、マルチモーダル データ(※)を作成する際など、ファイル名に依存せずに正確に紐づけることが可能になります。
    ※参考:BigQuery でマルチモーダル データを分析する  |  Google Cloud Documentation

    ステップ 2:BigQuery と GCS をつなぐ「接続」を作成する

    画像をアップロードしたら、次は BigQuery から GCS 上のバケットを覗けるようにするための「接続(Connection)」を作成します。
    具体的な手順は、以下に詳しく載っていますが、要点を絞ってお伝えします。
    参考:オブジェクト テーブルを作成する  |  BigQuery  |  Google Cloud Documentation

    手順の概要:

    1. BigQuery のコンソール(エクスプローラ)から「+ データを追加」を押下する。
    2. 「データを追加」画面から「Vertex AI > BigQuery フェデレーション」を押下する。
    3. 接続タイプで「Vertex AI リモートモデル、リモート関数、BigLake、Spanner(Cloud リソース)」を選択し、適当な接続 ID(例:creative_connection)を入力して作成。
      ※ロケーションタイプについては、後続の工程で作成するオブジェクト テーブルの保存先データセットと、同一のロケーションになるようにしてください。

    前述の手順で接続は作成できますが、これで終わりではありません。実際に作成した接続が GCS を閲覧できるように、権限の付与が必要です。
    作成した接続を押下すると「サービス アカウント ID」が表示されるので、この ID をコピーしてください。その後、IAM にてコピーしたサービス アカウントに「ストレージ オブジェクト 閲覧者」のロールを付与します。

    ステップ 3:オブジェクト テーブルを作成する

    接続ができたら、いよいよオブジェクト テーブルの作成です。 以下のようなクエリを実行します。

    -- 本 SQL を使用する場合はご自身のテーブル名に置き換えてください
    CREATE EXTERNAL TABLE `{{project_id}}.{{dataset_id}}.{{table_id}}`
    -- ステップ 2 で作成した接続 ID に置き換えてください
    WITH CONNECTION `{{location.接続 ID}}`
    OPTIONS (
      object_metadata = 'SIMPLE',
      -- ステップ 1 のバケットのパスに置き換えてください。
      uris = ['bucket_path']
    );
    

    uris には、どのバケット内のファイルを参照するかを、バケットのパスで指定します。
    ワイルドカード(*)を使うことで、フォルダ内のすべての画像を対象にできます。また、カンマ(,)で区切ることで、複数のパスを指定することも可能です。

    このほかに、GCS のメタデータをキャッシュする時間を指定できるオプションもあります。必要に応じて、以下のドキュメントをご参照ください。
    参考:オブジェクト テーブルを作成する  |  BigQuery  |  Google Cloud Documentation
    デフォルトではキャッシュは無効になっていますが、頻繁にクリエイティブを追加することが少なく、メタデータの更新頻度も高くない場合は、キャッシュを有効にしてもよいかもしれません。

    オプションの指定を必要に応じて追加いただき、クエリを実行し、「テーブルが作成されました」と表示されれば成功です!

    クエリを実行してインサイトを得る

    作成したテーブルに対してクエリ(SELECT *)を実行してみましょう。
    実行結果を見ると、通常のテーブルとは少し違うカラムが並んでいるはずです。ここでは、主要なカラムについてご紹介します。

    • uri
      オブジェクトのパスを表します。「gs://bucket_name/[folder_name/]object_name」という形式で、どのバケットのどのオブジェクトかを一意に特定できます。
    • content_type
      ファイル形式(例:image/png、image/jpeg など)を表します。意図していない形式のファイルが混じっていないか確認する際に使用することができます。
    • size
      ファイルサイズ(バイト単位)を表します。
    • updated
      オブジェクトのメタデータが最後に更新された日時を表します。「半年以上更新されていない古いクリエイティブ」を洗い出し、整理・削除・差し替えを検討する際の判断材料として使用することができます。
    • metadata
      オブジェクトに付与されたカスタムメタデータです。ステップ 1 で追加したメタデータが、このスキーマに格納されます。
      metadata は Key-Value 形式で格納されており、「metadata.name」にはメタデータのキーが、「metadata.value」にはメタデータの値が格納されています。
    • ref ※プレビュー
      ObjectRef 形式で保存されたオブジェクトのメタデータです。このスキーマを利用することで、画像などの非構造化データを、構造化データと組み合わせたマルチモーダル データを作成できるようになります。
      なお、このカラムは「マルチモーダル データ プレビューの許可リスト」に登録されている場合のみ作成されます。
      詳細については、公式ドキュメント「ObjectRef functions  |  BigQuery  |  Google Cloud Documentation」をご参照ください。

    ステップ 1 でメタデータを追加しておくことで、単にファイル一覧を見るだけでなく、Google アナリティクスや Google 広告のデータと JOIN することも可能となります。 そうすれば、「ファイルサイズが大きい画像は、CVRが低い傾向にあるのか?」といった、高度な分析まで見えてきます。

    まとめ

    今回は、BigQuery のオブジェクト テーブルを使って、散らばりがちな広告クリエイティブを「データ」として管理する方法をご紹介しました。
    最初は「難しそう」と感じたかもしれませんが、一度設定してしまえば、あとは SQL を組み立てるだけで、様々な分析ができるようになります。

    ぜひ、今回作成したオブジェクト テーブルを使って、以下のような高度な分析にも挑戦してみてください。

    • Google アナリティクスのデータと統合して、成果に直結する分析を行う
    • BigQuery ML を活用して、パフォーマンスが低いクリエイティブの改善策を AI に提案してもらう

    もし「こんな面白い活用方法があったよ!」という発見があれば、ぜひコメントなどで教えていただけると嬉しいです。

    本ブログ内でも少し触れましたが、別の機会でGoogle Cloud Next 2025 で紹介されていた マルチモーダル テーブル を、今回作成したオブジェクト テーブルをもとに構築し、さらに高度な分析ができるようにしてみたいと思います。

    ※本記事執筆にあたって使用した Nano Banana Pro は2025/12/14(JST)に実行し、その時点における次の利用規約に基づいています。

    1つめのサンタの画像は、以下プロンプトを入力し、作成しました。

    Anime-style illustration of a cute Santa Claus holding an advent calendar. Warm and festive Christmas atmosphere with red and white as main colors. Create a 300x250 banner for a blog.

    Place the main headline text near the top of the banner: “Advent Calendar Event!”

    Use a bold and easy-to-read font.

    Include a call-to-action button at the bottom-right: “Open Today’s Entry”

    Make the button stand out with rounded corners and a soft glow.

    Background decoration should be minimal, with soft lights or snow, so the text and button remain the main focus.

    2つめのトナカイの画像は、以下プロンプトを入力し、作成しました。

    Cute anime-style reindeer holding an advent calendar. Friendly and playful expression with green and red as the main color palette. Create a 300x250 banner for a blog.

    Place the main headline text near the upper-center: “Advent Calendar Event!”

    Clear, simple, and easy for viewers to understand.

    Include a call-to-action button at the bottom-left: “See Today’s Post”

    Make the button noticeable with soft shading and a gentle highlight.

    Background includes subtle Christmas elements like stars or ornaments, kept simple so the headline and CTA button stand out.

    執筆者松村 賢

    ジブリが好きなデジタルマーケティングコンサルタント