こんにちは、中都です。
BigQueryって聞いたことはあるけれど、SQLが難しそうだし、料金も怖い。Excelやスプレッドシートで集計している方なら、そう感じるかもしれません。
でも、BigQueryの中でGeminiを使うと、「2021年の注文金額の合計と平均を出して」と日本語で伝えてSQLを作れます。今回は、3万件の注文データを取り込み、集計結果を出すところまで試しました。設定画面と実際に返ってきた数字を見ながら、順番に進めていきましょう。
動画でも解説しています
大量の注文データを集計したい。でも、SQLと料金が不安な方へ
この記事で解決すること
毎月の注文CSVを開いて、年や商品カテゴリーで絞り、合計・平均を出す。データが増えると表が重くなり、集計のたびに手を動かすのも大変です。一方、BigQueryへ移そうとしても、「最初に何を作ればいいのか」「SQLを書けない自分にも使えるのか」で止まりがちですよね。
この記事では、次の状態を作ります。
- データを入れる:プロジェクトの中にデータセットとテーブルを作り、注文CSVを読み込む。
- 日本語で集計する:Geminiに期間と集計したい金額を伝え、生成されたSQLを確認して実行する。
- 数字を持ち帰る:合計・平均を確かめ、Googleスプレッドシートへ書き出す。
ここまでの操作は、その日のうちに進められます。元データの毎日の取り込みや、翌朝の自動更新は別途設定が必要です。本記事では、まず一つのCSVから分析を始めます。
「データの倉庫」と考えると、BigQueryは分かりやすい
BigQueryは、Google Cloudで使えるデータ分析基盤です。会社のあちこちにあるデータを集めて、必要な条件で取り出したり集計したりする「倉庫」と考えてください。サーバーを自分で用意しなくても、ブラウザーから使えます。
難しい用語が並ぶと身構えますが、データをためる場所で、サーバー管理も任せられる。そう聞くと、「あれ、意外といいんじゃない?」という感覚になりませんか。僕は、高機能なデータベースの中では扱いやすいところに価値を感じています。
最初は「CSVを入れる→一つ集計する→元の数字と照合する」まで試すと、自分の業務で使えそうか判断できます。
1.Google Cloudのプロジェクトを用意する
用意するものは、Googleアカウント、作業用のGoogle Cloudプロジェクト、読み込むCSVです。会社の環境を使う場合は、BigQueryでデータセット・テーブルを作成し、データを読み込み、クエリを実行できる権限を管理者に確認してください。Geminiの利用には、後述のAPIと権限も必要です。
- Google CloudのBigQuery画面を開き、利用するGoogleアカウントでログインします。
- 上部のプロジェクト選択を開き、既存の作業用プロジェクトを選びます。新しく作る場合は「新しいプロジェクト」を押します。
- プロジェクト名と所属先を確認して作成します。プロジェクトIDは作成後に変更できないため、確定前に内容を確認してください。
- 作成したプロジェクトを選び、上部の表示が切り替わったことを確かめます。
ナビゲーションから「BigQuery」→「スタジオ」を開きます。左側にプロジェクトやデータセット、中央に選択した内容が出る画面になれば準備完了です。
権限の設定は、Google公式のデータ読み込み要件を管理者と確認してください。すべての操作を行うために、組織全体の管理者になる必要はありません。
2.料金とサンドボックスの違いを押さえる
初めて開いたときに、「サンドボックス」や請求先の設定を促す表示が出る場合があります。サンドボックスは、請求先アカウントやクレジットカードを登録せず、制限内でBigQueryを試すための環境です。
| 確認する項目 | 考え方 |
|---|---|
| サンドボックス | 保存容量・処理量に上限があり、テーブルなどは60日で期限切れになります。長期保管用にそのまま使い続ける環境ではありません。 |
| BigQueryの保存料金 | 保存するデータ量などで決まります。無料枠は月ごとの最初の10GiBです。 |
| オンデマンドのクエリ料金 | SQLが読み取るデータ量で決まります。月の最初の1TiBは無料枠です。 |
| GeminiのSQL作成支援 | 基本のSQLコード支援は追加料金なしで提供されています。ただし、生成したSQLの実行やデータ保存にはBigQueryの料金が適用されます。 |
サンドボックス固有の保存上限は10GiBで、公式資料では削除しても使用枠が戻らない累計上限とされています。請求先を設定した通常の無料枠と区別してください。詳細はサンドボックスの制限、BigQueryの料金、Geminiの料金を確認できます。
僕が伝えたいのは、最初から「BigQueryは高い」と身構えなくていい、ということです。今回の3万件の注文データは、小さな容量で試せました。ただし、件数だけで料金は決まりません。同じデータを何度も広く読み取れば、処理量は増えていきます。
試す段階では小さなデータから始め、業務でため続ける段階では、請求先と保存期限をセットで確認しましょう。
長期保存へ移るときは、プロジェクトの「アップグレード」または「お支払い」から、利用する請求先アカウントをリンクします。リンク後も、既存テーブルの有効期限が希望どおりか確認してください。実行前にはSQLエディタの処理量見積もりを見て、必要に応じてクエリ設定の「最大課金バイト数」を指定します。表示行数をLIMITで減らしても、読み取り量が同じなら料金は減りません。(Google公式の費用管理)
3.データセットを作り、注文CSVを読み込む
データセットとテーブルの関係
操作の順番は、プロジェクト→データセット→テーブルです。プロジェクトが作業全体の入れ物、データセットが表をまとめる場所、テーブルが実際の表です。
- 左側のプロジェクト名の右にあるメニューから、「データセットを作成」を開きます。
- データセットIDを入力します。ここではECの注文を入れるので、
ecを例にします。 - ロケーションタイプとリージョンを選びます。実演では東京の
asia-northeast1を選びました。 - IDと保管場所を確認して「データセットを作成」を押し、左側に
ecが出たことを確かめます。
僕が東京を選んだのは、リージョンをまたぐ分析や、後から保管場所を変える作業を複雑にしたくないからです。既に会社のデータが別のリージョンにあるなら、そちらの設計に合わせてください。データセットのロケーションは作成後に変更できません。(データセットの作成)
これから一緒に分析したいデータの置き場所に合わせて、最初のリージョンを決めると、後の集計を組み立てやすくなります。
CSVからテーブルを作成する
手元の注文CSVを用意します。実演では顧客ID、注文日、注文番号、商品カテゴリー、数量、注文金額などが入ったデータを使っています。記事の集計例では注文日がorderdate、注文金額がorderpriceという列名です。自分のCSVでは、該当する列名と金額の意味を確認してください。
- 作成した
ecを選び、「テーブルを作成」を押します。 - ソースを「アップロード」にし、CSVファイルを選びます。ファイル形式はCSVです。
- 送信先のプロジェクトとデータセットを確認し、テーブル名を入力します。実演では
orderにしました。 - 「スキーマ」の「自動検出」を選びます。スキーマとは、各列が日付・数値・文字列などのどの型かを定めた情報です。
- 新しいテーブル名であることを確認し、「テーブルを作成」を押します。完了後、左側のデータセットを展開してテーブルを開きます。
テーブルの「プレビュー」を開き、ヘッダーと先頭のデータが元CSVと対応しているか確認します。実演では3万行が入りました。自分のファイルなら、そのファイルの行数と照合します。
続いて「スキーマ」で、日付列と金額列の型を確認します。自動検出でも意図した型になるとは限りません。日付が文字列になっている、金額に通貨記号が混じっている場合は、そのまま集計を進めず、CSVや読み込み設定を見直してください。
また、1行が「注文1件」なのか「注文内の商品明細1件」なのかも確かめます。同じ注文番号が複数行にあるデータでは、金額の持ち方によって、合計や平均の意味が変わります。
4.SQLで合計を出すと、スプレッドシートとの共通点が見える
テーブルを開いた状態で「クエリ」を押すと、SQLを書くエディタを開けます。クエリは、データに対する「問い合わせ」です。「この表から必要な数字を出して」とBigQueryに依頼します。
最初に表示されるSELECT *は全列を取り出す指定、FROMの後ろは対象テーブル、LIMIT 1000は返す行数の上限です。全体の合計を見るなら、金額列にSUMを使います。
次は、テーブル参照を自分の環境へ置き換えて使う例です。your-project-idを実際のプロジェクトIDに変更し、データセット名・テーブル名・金額の列名も照合してください。
SELECT SUM(orderprice) AS total_order_price
FROM `your-project-id.ec.order`;
上部の「実行」を押し、完了後に下の「結果」を見ます。今回のデモデータでは、注文金額の全体合計は811,255,266円でした。
ここ、気づいてほしいんですよね。スプレッドシートでSUM関数を使うことと、BigQueryでSUMを使うことは、どちらも表の金額を合計する操作です。見た目はコードになりましたが、やりたいことの本質は同じです。
普段の表計算で「何を、どの条件で集計するか」を決められるなら、その考え方をBigQueryでも使えます。残るSQLの書き方を助けてくれるのがGeminiです。
5.Geminiに日本語で頼み、期間を絞って集計する
Geminiの利用設定を確認する
- BigQuery Studio上部のGeminiアイコンを開きます。
- 既に使える場合は、SQL生成機能がオンになっているか確認します。初回設定の案内が出た場合は、「続行」を押します。
- 表示されたAPIの状態を確認し、無効になっている必要なAPIだけ「有効にする」を選びます。
- 利用者の権限が不足している場合は、管理者にGeminiとBigQueryの必要権限を設定してもらいます。案内を完了し、SQL生成画面を開けることを確認します。
権限や表示されるAPIは環境によって異なります。現行の設定はGemini in BigQueryの公式セットアップを参照してください。SQL生成の利用権限と、対象テーブルの参照・クエリ実行権限は、それぞれ必要です。
「2021年の合計と平均」を日本語で伝える
対象の注文テーブルを開いてから、SQLエディタ付近の「Geminiを使用してSQLを生成」を選びます。現行画面では「SQL生成ツール」と表示されることもあります。入力欄へ、次のように依頼します。
2021年に絞った注文金額の合計と平均値を出してほしいです。
「生成」を押すと、合計のSUM、平均のAVG、2021年に絞る条件を含むSQLが返りました。
日本語で聞いたものをSQLに変換してくれる。これ、めちゃめちゃ便利なんですよね。実演でも、自分で条件式を書き足さずに、生成されたSQLを「挿入」して実行できました。
ただし、実行前に対象のテーブル、期間、合計する列の3点は確認してください。別の表が選ばれていたら、「テーブルソースを編集」で対象を指定し直します。生成SQLは毎回同じとは限らないため、公式のSQL生成手順でも出力の確認が案内されています。
質問を具体化するなら、次のように頼めます。これは自分のデータで試すための質問例です。
対象は `your-project-id.ec.order` です。
orderdateは注文日、orderpriceは各行の注文金額(円)です。
2021年1月1日から12月31日までに絞り、
orderpriceの合計と、NULLを除く行の平均を出してください。
使うテーブル・列・期間条件も説明してください。
合計・平均の結果を確認する
「挿入」→「実行」と進み、クエリ完了後の結果を確認します。実演では、2021年の注文金額の合計が246,616,941円、行ごとの平均が約26,885.09円になりました。
SQLを書けない初心者でも、こうして条件を伝えて分析を進められる。「BigQueryって意外と簡単じゃん」と感じていただけたらうれしいです。
平均金額を客単価として読む前に、1行が何を表しているかを確かめましょう。今回のAVG(orderprice)は、その列の値の平均です。商品明細が1行ずつ並んでいれば、注文1件あたりの平均とは一致しない場合があります。
最初の一回は、元CSVでも同じ期間を絞り、合計と平均を照合してください。重複行、返品・取消、空欄、税込・税抜の扱いが違えば、SQLが正常に動いていても、業務で求める数字とはずれます。
6.集計結果をスプレッドシートへ書き出す
結果を共有したい場合は、クエリ結果の「結果を保存」→「Googleスプレッドシート」を選びます。初回にGoogle Driveへの権限確認が出たら内容を確認して許可します。保存完了のメッセージに表示されるファイルのリンクを開き、列名と数値がBigQueryの結果と一致することを確かめてください。
細かな手順はGoogle公式の結果の保存方法でも確認できます。今回のような一度の書き出しでは、その後のBigQueryの変更が自動で反映されるわけではありません。
毎朝の数字を更新する表にしたい場合は、BigQueryとスプレッドシートを連携・自動更新する方法へ進んでください。GA4のデータを蓄積するところから始めたい方には、GA4とBigQueryの連携手順も用意しています。
集計表ができたら、その表をAIに読ませて「この数字から次に何を確認するか」を相談することもできます。記事末尾で、Synapse MCPで自分の集計表をつなぐ方法を紹介します。
まとめ:SQLを覚え切る前に、一つの集計から試してみる
今回は、プロジェクトを用意し、データセットとテーブルを作ってCSVを取り込みました。そのうえで、Geminiに日本語で依頼し、2021年の注文金額の合計・平均を出すところまで進めています。
表の数字に指示を出して結果を見る、という意味では、普段のスプレッドシートと同じです。そこにGeminiが加わると、SQLの書き方で立ち止まりにくくなります。僕が「AI時代にBigQueryは扱いやすくなった」と感じるのは、この部分です。
まずはいつも手作業で出している合計を一つ、BigQueryでも出してみてください。同じ数字を確認できたら、期間やカテゴリーを変えて質問を広げていきましょう。
データをためる場所を作り、分析できる形にして、判断に使う。この土台ができれば、他のデータとの連携も考えやすくなります。
Synapse MCPで、集計表の数字から次の判断までAIに相談する
注文金額の合計を出せたら、次に知りたいのは「どのカテゴリーが伸びたのか」「売上が変わった理由として何を調べるべきか」ではないでしょうか。数字を作るだけでなく、仕事の判断につなげたいですよね。
私たちが提供するSynapse MCPは、GoogleスプレッドシートやGA4など、普段使っているツールのデータを、いつものAIに自然言語で聞けるようにするサービスです。今回なら、BigQueryから書き出した集計表をGoogleスプレッドシートとして接続するところから始められます。
まずは、今作った合計・平均を読み取ってもらう
スプレッドシートを接続し、利用するAIへのMCP登録を済ませたら、実際のファイル名・タブ名を伝えて次のように聞きます。
接続した注文集計表の、合計と平均が入ったタブを確認してください。
最初にファイル名とタブ名を示し、A1:B2のヘッダーと値を読んでください。
金額の単位は円、対象期間は2021年1月1日〜12月31日です。
合計と行平均を分けて説明し、元のセルが空なら推測で埋めないでください。
ここで返ってくるのは、指定したセルの値と、その意味の整理です。自分の表が別の位置にある場合は範囲を変更し、元の表とヘッダー・数値が一致したら初回取得は完了です。
その後、カテゴリー別・月別の比較をしたいなら、BigQueryで必要な内訳も書き出します。合計と平均の2セルだけから、カテゴリー別の増減は判断できません。内訳表を用意した後は、たとえば次のように質問できます。
「月別カテゴリー集計」タブにある2021年1〜12月の表を読み、
カテゴリー別に前月から増えた金額・減った金額を整理してください。
最初に表の範囲と読み取れた月を示してください。
小計行と明細行は二重に足さず、欠けた月は欠損としてください。
数字から分かる事実と、追加で調べる仮説を分けてください。
Synapse MCPが読むのは、シートへ出力されたセル値です。BigQueryへのCSV投入やクエリ実行は本編の手順で行います。詳しい接続方法は、スプレッドシートをAIにつなぐMCP活用ガイドで説明しています。
アクセスデータも、接続・取得・グラフ化の流れで聞ける
売上の変化に加えて、サイトへのアクセスも確かめたい場合は、GA4やSearch Consoleも接続できます。以下は、GA4の週次レポートをAIで作った別の実演です。今回の注文集計表とは別のデータですが、接続したデータを会話で取り出す流れが分かります。
GA4なら、次のような質問もできます。画像と同じ出力を再現する指示ではなく、自分のサイトで試すための例です。
接続した対象サイトのGA4から、2026年8月1〜31日の日別PVを取得してグラフにしてください。使ったプロパティ名、取得期間、指標名を示し、欠けた日は教えてください。
数字を見て「その日はどの流入元が増えた?」と続ければ、必要な切り口を会話で追加できます。売上の増減とアクセスの増減を並べるときは、サイト・期間をそろえ、同時に増えたことだけで原因と決めないようにしましょう。
自分の集計表を一つ接続してみる
- Synapse MCPにログインし、利用する店舗・プロジェクトの接続管理を開きます。
- 「媒体を追加」→「Googleスプレッドシート」を選び、Google認証後に、今回書き出したファイルを選択します。
- 同じ店舗・プロジェクトの「MCPリンク」から、利用するAI向けのリンクを発行します。AIのMCP/カスタムコネクタ設定へ登録し、認証と会話内での有効化を済ませます。
- 先ほどの質問でヘッダーと数値を読み取り、元のセルと一致することを確認します。
AI側の登録は、Claude・ChatGPTへのMCP登録手順も参考になります。利用できる接続機能は、AIのプランや組織設定によって異なります。
最初の一歩は、今作った集計表を一つつないで、合計と平均をAIに読んでもらうことです。数字が正しく届いたら、次に確かめたい内訳や比較を相談していきましょう。
フリーは新規登録から14日間、3サービス・各媒体1アカウントまでで、自動課金はありません。利用条件は料金ページをご確認ください。
