SQL一発でAI分析!BigQueryのAI.GENERATE関数をSearch Consoleデータに応用してみた

SQL一発でAI分析!BigQueryのAI.GENERATE関数をSearch Consoleデータに応用してみた

先日(2026年3月19日)、Google Cloud主催の「Agentic AI Summit ’26」にオンライン参加しました。そこで、(いくつかセッションを視聴したのでどのセッションか忘れてしまったのですが)Googleのエンジニアの方が「これ、めちゃくちゃ便利ですよ」と紹介していたのが、BigQueryから直接AIを操作できる関数でした。何種類かありますが、総称して「生成AI関数(Generative AI Functions)」と呼びます。

 

 

「BigQueryから、SQLだけでGeminiが使えるの?そりゃすごい!」と検証してみたのですが、これが想像以上に強力だったので、今回はその使い方と実務への応用についてまとめたいと思います。SQLでこんなこともできるんだよ、という知識の一環となれば幸いです。最終的にはBigQuery上のGoogle Search Console(GSC)のデータをGeminiで分析してもらいます。

 

 

AI GENERATE関数とは何か

今回ご紹介するのは、生成AI関数の中で、最も汎用的に利用できる、「AI.GENARATE関数」です。非構造化データ(あらかじめ定義されたデータモデルやスキーマに従っていない、固定された形式を持たないデータ)も含め、データ(BigQuery上のテーブル)とプロンプトを投入すると、Geminiが生成AIとして、「要約」や「分類」、「翻訳」、「感情分析(センチメント分析)」などを実行して、その結果を返してくれます。

  

複数ある生成AI関数のうち、今回紹介するのは「AI.GENERATE」関数

 

内部的には、BigQueryに格納されているデータに対して、Vertex AI上のGeminiを呼び出して、処理していますが、我々ユーザー側からは、Vertex AIはまったく意識することはありません。Vertex AIとは、Googleが提供している「AIの道具箱」です。Geminiの各種モデルはもちろん、Gemini以外の生成AIモデルも使えるようになっています。

 

何が嬉しいのか?

BigQuery上のSQLから生成AIを使えると何が嬉しいのか?を、以下の利用環境と対比してみました。みなさんがGeminiを利用するとき、ほとんどの人がAとして使っていて、AI体験を追求している僅かな人がBとして使っていますよね。

 

  • A.ブラウザからGeminiを使い分析してもらう。
  • B.Claude Desktop等からBigQuery MCPサーバーに接続し、Claudeにデータを分析してもらう

 

Aと比較すると、今回紹介する「BigQueryからGemini利用」には以下のメリットがあります。 

  • データの移動が不要: 膨大なデータをGeminiにアップロードすることなく、データが「ある」場所でAIを動かせます。

 

Bと比較すると、今回紹介する「BigQueryからGemini利用」には以下のメリットがあります。

  • 中間サーバー(MCPサーバー)が不要: 以前、BigQueryのデータをAIに食わせるために「MCPサーバー」を立てる手法を紹介しました(※)が、この関数を使えばその手間も不要になります。

(※)ClaudeからBigQuery上のGA4テーブルを自然言語でクエリする

 

そして、A、Bの両方に比べて、以下の3点のメリットがあります。

 

  1. パラメータの網羅的なテスト。: temperature はもちろん、や top_p などのパラメータを SQL で少しずつ変えながら実行し、どの設定が自社のデータに最適かを比較検討できます。(temperatureは、回答の創造性の度合いを調整します。0がいちばん創造性がなく、1が最大の創造性です。top_pは、回答の候補となる語彙の範囲を指定することで、結果的に多様性をコントロールします。0以上、1以下の値を取ります。0に近い値は確率的に最も高い語彙を使い、1に近いほど確率が低い語彙も候補に加わり、多様でランダムな回答になります。)こうした生成AIの振る舞い自体のチューニングや、試行錯誤は、AでもBでも基本的にはできません。
  2. プロンプトの「大量並列」実行。: プロンプト自体をテーブル化してしまえば、一つのデータに対して「要約」「翻訳」「タグ付け」といった何十種類もの命令を同時に投げる、といった運用も可能になります。どんなパラメータが最も的確に生成AIから回答を得ることができるのか、について簡単に効率よく確認することができます。
  3. 既存データとのシームレスな結合。: これがAともBとも違う、最も大きい点です。例えば、AI が出した顧客別の「センチメント」結果を、そのままBigQueryにある他のテーブル、例えば、顧客マスターと JOIN できます。これにより、「どの属性の顧客が、どのような感情を持っているのか」を即座に可視化することができます。

  いずれも、前述のA、Bの方法ではできないことです。

 

どんなときに向いていないのか

逆に、以下の状況や環境、目的ではこのブログ記事で紹介する方法(BigQueryからGeminiを呼び出して、テーブル形式で結果を得る)は向いていないです。  

  1. SQLを書ける人がいない場合。: AI.GENERATE関数はあくまでSQLの中に記述するため、SQLの知識が前提になります。ノーコードツールのようなGUIでの操作はできません。
  2. BigQuery外のデータをそのままAIに渡したい場合。: スプレッドシート、外部API、ローカルファイルなど、BigQueryにロードされていないデータを直接分析させることはできません。事前にBigQueryへのデータ取り込みが必要になります。ちょっと面倒ですね。
  3. セマンティックレイヤーを活用したい場合。:ビジネスロジックを一元管理するセマンティックレイヤーをAIに認識させることができません。そのようなコンテキストをAIに理解させたい場合は、セマンティックレイヤーに対応した別のアプローチが必要になります。

 

実装の準備:APIの有効化

何ができて、何が嬉しいのか、また、逆に、どんな場合に向いていないのか、がわかったところで、手順の紹介です。BigQueryからGeminiを動かしたいプロジェクトで、以下の2つのAPIを有効にする必要があります。準備はこれだけです。 

  • BigQuery Connection API (aiplatform.googleapis.com)
  • Vertex AI API (bigquery.googleapis.com)

 

APIを有効化する手順は、以下の通りです。

BigQueryのコンソールの左カラムから「APIとサービス → 有効なAPIとサービス」に入り、「+APIとサービスを有効にする」をクリックします。APIの一覧画面になりますので、当該のAPIを検索して、有効化します。

 

基本デモ:商品レビューの感情分析

では、準備が整ったところで、まずは、簡単な商品レビュー(非構造化データ)を使って、サマリー(要約)とセンチメント(感情)を抽出してみましょう。

対象サンプルテーブル

実行対象のは、別途作成しておいた以下のテーブルです。

わずか3`行のテーブルではありますが、comment欄に入っているのはユーザーが回答した文章(非構造化データ)であり、なかなかここから総合的な知見を得ることは難しいですね。

 

 

実行用クエリ

以下が、上記の「商品レビューテーブル」から、「サマリー」と「センチメント」を抜き出すクエリです。コピペは以下のコードブロックを利用してください。実行するときはプロジェクト名、データセット名、テーブル名はみなさんの環境に合わせて変更してください。クエリの解説は、その後に書いています。

 

SELECT
  comment,
  gen.summary,
  gen.sentiment
FROM `bq-verification.ai_demo_us.demo_reviews`,
UNNEST([
  AI.GENERATE(
    CONCAT(
      '次のレビューを分類してください。',
      '出力は定義されたフィールドのみを埋めてください。',
      '前置き、説明、見出し、JSONという語、コードブロックは禁止です。',
      'summary は15文字程度の日本語。',
      'sentiment は ポジティブ / ネガティブ / 中立 のいずれか1つのみ。',
      'レビュー: ', comment
    ),
    endpoint => 'gemini-2.5-flash',
    output_schema => '''
      summary STRING OPTIONS(description="レビューの要点を15文字程度の日本語で要約"),
      sentiment STRING OPTIONS(description="必ず ポジティブ / ネガティブ / 中立 のいずれか1つ")
    ''',
    model_params => JSON '''
      {
        "generation_config": {
          "temperature": 0,
          "max_output_tokens": 1024
        }
      }
    '''
  )
]) AS gen;

 

クエリの解説1(全体の構成)

以下のクエリは、全体としては、「データの入ったテーブル’と、「UNNEST関数でフラット化したGeminiからの戻り値」をクロスジョインで結合し、元テーブルにあった、commentと、Geminiからの戻り値である、 gen.summary、gen.sentimentを取得しています。(5行目、6行目あたりですね。)

一方、UNNESTを利用するまえに一工夫してありまして、Geminiからの戻り値は、もともとは、STRUCT(構造体)ですが、その戻り値を、[ ] で囲むことで一旦 ARRAY(配列)に格納しています。(「構造体」と「配列」については、こちらのブログ記事を参照してください。)

配列に格納したことで、エイリアス(別名)として、 genを付けることができました。(30行目)


そのため、SELECT句で、gen.summary、gen.sentimentという列名で参照し、結果テーブルに含めることが出来ています。

 

 

 クエリの解説2(AI.GENERATE関数)

7行目のAI.GENERATE関数を解説します。この関数には、以下の4つの引数を与えています。SQL文では10行以上になっていますが、一つづつ見ていくと決して難しくないです。少しゆっくり見てください。


引数 内容 具体的な値
第一引数 プロンプトをテキスト型のデータとして記述します。 CONCATという文字列連結関数を使って、自然言語でのプロンプトと、データが格納されているテーブルの comment列の値を投入しています。

=====
CONCAT(
    ‘次のレビューを分類してください。’,
    ‘出力は定義されたフィールドのみを埋めてください。’,
    ‘前置き、説明、見出し、JSONという語、コードブロックは禁止です。’,
    ‘summary は15文字程度の日本語。’,
    ‘sentiment は ポジティブ / ネガティブ / 中立 のいずれか1つのみ。’,
    ‘レビュー: ‘, comment
)
第二引数 Geminiのモデル指定 endpoint => ‘gemini-2.5-flash’
第三引数 アウトプットとして期待するスキーマを指定します。 summary STRING OPTIONS(description=”レビューの要点を15文字程度の日本語で要約”),
sentiment STRING OPTIONS(description=”必ず ポジティブ / ネガティブ / 中立 のいずれか1つ”)
第四引数 生成時のパラメータを指定します。 {
  “generation_config”: {
    “temperature”: 0,
    “max_output_tokens”: 1024
  }
}

 

クエリ実行結果

`結果は以下の通りです。元のテキストに対して、要約(summary)と、感情(sentiment)を抽出することができました。美しいですね。しかも、BigQueryのSQLだけでGeminiを利用できてしまいました。

  

 

応用編:Google Search Console データの分析

基本がわかったところで、マーケティングの実務に投入してみましょう。ターゲットは Google Search Console(GSC)のデータです。

「順位は 10 位〜30 位くらいだけど、インプレッションは多い」というお宝予備軍のキーワードを抽出し、AI に「ユーザーの意図」と「具体的なリライト案」を 100 文字程度で提案させてみます。

 

 

実行してみると、的を射た検索意図の言語化と、修正のアドバイスが返ってきます。SQL 一発で「どの記事を、どんな方向性で書き直すべきか」の指示書が完成するわけです。

 

まとめ:AI GENERATE 関数は誰のためのものか

今回検証した AI.GENERATE関数 を利用すると、SQL の知識さえあれば、Geminiを利用して生成AIに分析や、サマリー、アドバイスをもらえるということが分かりました。ブラウザで Gemini と対話するのとは違い、BigQuery 上で実行するからこそ得られる「実務的な価値」は以下のような立場や組織の皆さんに最適だと感じました。

 

  • SQLは書けるが、AIエンジニアではないデータアナリストやマーケター。: BigQueryを日常的に使っており、SQLでデータを扱える知識があれば、Pythonやシステム開発の知識がなくても、手軽に「量産型」のAI分析を実行できます。
  • 大量のデータをまとめてAI処理したいビジネス担当者。 :Search Consoleのキーワード分析や顧客レビューの感情分析など、「手作業では到底こなせない量のテキストデータ」を一括処理したい場面でこそ、この関数の真価が発揮されます。
  • 素早くAI活用の成果を出したい組織。: システム開発やMCPサーバーの構築といったインフラ整備を待たずに、SQLを書ける人材がいればすぐに始められます。「まずは小さく試して成果を見せる」というアプローチに最適です。生成AIのパラメータを調整しながらベストな回答を得たいという目的にも向いています。

 

まとめると、SQL を書く必要があるため「社員全員が日常的に使う」というよりは、現場のデータ分析官が「武器」として持ち、その結果をチームに共有する、といった使い方が最もフィットすると思います。

通常のSQLのライティングスキルは、生成AIの登場によって徐々にその価値を失って行くという論調もありますが、このブログで紹介した機能がリリースされている現実を考えると、まだまだ、その有用性、必要性は維持されていると思います。

 

この記事に関連した学習リソース

この記事をここまで読んでいただいた方は、もれなく、BigQuery(SQL)って、素敵なことができるな!!と思っていただいたんじゃないかと思います。

SQLについて、学習用の良い動画講座を紹介します。たくさんのレビューを頂き、5点満点中4.6点と、お陰様で評判も良いようです。よろしければどうぞ。(画像をクリックするとUdemy.comにジャンプします。)

 

書籍で学習したい場合には、以下の拙著を推奨します。こちらをどうぞ。(アマゾンのアフィリエイトリンクです。画像をクリックするとアマゾンにジャンプします)

 

自分のSQLライティング能力を確認したい、同僚や上司や転職先にアピールしたい。という場合には、ぜひ、こちらのサービスをご利用ください。私が開発した、SQLリテラシーを診断するテストです。