GA4 の数字を毎月スライドや Slack にまとめていて、ChatGPT や Claude に「要約して」と頼んでいる方向けの記事です。コピーして使えるプロンプト(AI に渡す指示文)6 本と、AI の文章を上司に出す前に間違いを見つける検算の手順を、実際に試した結果つきで紹介します。読み終わると、AI に書かせる部分と書かせない部分を分けて、短い時間で確かめられるようになります。
この記事で分かること
- GA4 の月次レポートを AI に書かせるときのプロンプト 6 本(文面つき)
- 同じ表を渡しても、プロンプトによって「表に無いこと」を書く割合が大きく変わったこと
- 数値の突き合わせ、変化率の再計算、原因文の根拠確認という 3 段階の検算の手順
- 件数・日付・金額は AI に書かせず、機械で埋めるという分け方
ざっくり言うと:誤りは「計算」より「表に無い話」から生まれた
GA4 の公開サンプルデータから 3 か月分の月別集計表を作り、6 種類のプロンプトで AI に文章を書かせました。生成された文を 1 文ずつ表と突き合わせたところ、計算の誤りは全体で 1 件だけでした。
一方で、原因の推測を求めたプロンプトでは 24 文中 13 文(54.2%)が誤りで、そのうち 12 文は表から確かめられない原因でした。自由に「要約して」と頼んだプロンプトでも 21 文中 5 文(23.8%)が、表に無い事実か表から確かめられない原因でした。
逆に「表に無いことは書かない」と制約を付けたプロンプトは、自由要約と同じくらいの長さ(16 文)を書きながら、誤りは 0 件でした。ただし、これはモデル 1 種で各 1 回だけ試した結果です。一般的な割合ではない点に注意してください。
なぜこの記事を書いたか:このサイトでも AI に書かせない部分を決めている
筆者はこのサイトの運用で、記事の修正にも AI を使っています。ただし、文の置き換え・更新日・「更新履歴」の記入は、AI ではなくスクリプト(AI を使わない決まった処理)が行う形にしています。しかも置き換えるのは、本文に 1 回だけ現れる文に限っています。
別の改善を試したときも、修正担当の AI が直した記事を再レビューしたところ、2 回目の試験運転で 4 本中 3 本が「段落が 3 文以内の目安を超える」と判定され、不合格で止まりました。
AI の提供元も同じ立場です。Anthropic の公式ガイドは、幻覚(AI が事実と違う内容をもっともらしく書くこと)を減らす手法は誤りを大きく減らすが完全には無くせないので、重要な情報は必ず検証するよう書いています(Anthropic: Reduce hallucinations)。そこで、月次レポートの文章でこれを試すことにしました。
正解表を作る:GA4 公開サンプルデータの月別集計
検算するには、まず「正解」が必要です。今回は Google が公開している GA4 の e コマースのサンプルデータを使いました。Google Merchandise Store の BigQuery(Google のデータ分析用データベース)へのイベントエクスポートを難読化(元の値が分からないように加工すること)したもので、2020 年 11 月 1 日から 2021 年 1 月 31 日までの 3 か月分が入っています(Google: GA4 e コマースのサンプルデータセット)。
このデータは GA のデモアカウントの数字とは異なり、比べられないと公式ページに書かれています。そのため、GA4 の画面ではなく、次の SQL(データベースに出す問い合わせ文)で作った表を正解にしました。
WITH events AS (
SELECT
SUBSTR(event_date, 1, 6) AS month,
user_pseudo_id,
event_name,
(SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS ga_session_id,
ecommerce.purchase_revenue_in_usd AS revenue_usd
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20201101' AND '20210131'
)
SELECT
month,
COUNT(DISTINCT CONCAT(user_pseudo_id, CAST(ga_session_id AS STRING))) AS sessions,
COUNT(DISTINCT user_pseudo_id) AS users,
COUNTIF(event_name = 'purchase') AS purchase_events,
ROUND(SUM(IF(event_name = 'purchase', revenue_usd, 0)), 2) AS revenue_usd
FROM events
GROUP BY month
ORDER BY month
数え方は公式の基本クエリ集に合わせました。ユーザーは user_pseudo_id(サイトに初めて来たときに割り当てられる識別子)の重複を除いた数、セッションは ga_session_id を event_params(イベントごとの付加情報を入れた列)から取り出して数えています(Google: 基本的なクエリ)。売上の purchase_revenue_in_usd は purchase イベントでだけ値が入る列です(GA4 BigQuery Export schema)。
2026 年 11 月 5 日に実行した結果が次の表です。処理したデータ量は約 1.04GB でした。
| 月 | セッション | ユーザー | 購入イベント | 売上(USD) |
|---|---|---|---|---|
| 2020年11月 | 108,401 | 79,421 | 2,054 | 144,260 |
| 2020年12月 | 133,368 | 104,315 | 2,434 | 160,555 |
| 2021年1月 | 118,380 | 94,790 | 1,204 | 57,350 |
プロンプト 6 本と、生成された文章
6 本とも、冒頭は同じ文と表です。違うのは最後の指示文だけにしました。こうしておくと、結果の差を指示文の差として比べられます。
以下は、あるECサイトの GA4 データを BigQuery で月別に集計した表です。
(ここに上の表を Markdown(記号で表や見出しを書く文字の書き方)の文字のまま貼る)
使ったモデルは Anthropic の claude-sonnet-5-5 で、2026 年 11 月 5 日に各プロンプトを 1 回ずつ実行しました(システムプロンプト(AI の振る舞いを最初に決める前置きの指示)は最小限にし、ツール(AI が検索や計算に使う追加機能)は使っていません)。ChatGPT や Gemini では試していないので、同じ割合になるとは限りません。
OpenAI の公式ガイドは、同じ系列のモデルでも版(スナップショット)が違うと結果が変わりうると書いています(OpenAI: Prompt engineering)。そのため、モデル名と日付を書いておきます。
プロンプト 1:自由要約
この表をもとに、上司に提出する月次レポートの要約を書いてください。
見出しや派生指標(表の値どうしを割り算などして作る指標)の表まで付いた、読みやすいレポートが返ってきました。ただし「12月は新規ユーザーが急増しました」という文がありました。表にあるのはユーザー数で、新規ユーザー数ではありません。
プロンプト 2:数値の列挙のみ
表にある数値だけを使い、月ごとに各指標の値を文章で並べてください。解釈・評価・原因は書かないでください。
「2021年1月:セッションは118,380、ユーザーは94,790、購入イベントは1,204、売上は57,350米ドルです。」のような文が 3 か月分並びました。
プロンプト 3:前月比の計算
2021年1月の各指標(セッション、ユーザー、購入イベント、売上)について、前月(2020年12月)比の増減率を小数第1位まで計算し、1指標につき1文で書いてください。
計算式を先に示してから、「売上は2020年12月の160,555ドルから2021年1月の57,350ドルへ減少し、前月比で64.3%減でした。」のような結果 4 文を書きました。計算過程の 4 行も、判定ではそれぞれ 1 文として数えたので、後の表では 8 文になっています。
プロンプト 4:原因の推測
2021年1月に数字が変化した原因を推測して、上司向けに説明してください。
一番長い回答でした。季節要因、計測の不具合、決済導線の問題、流入の質、商品構成の 5 つを候補に挙げ、「可能性があります」と断りながら説明しています。
プロンプト 5:テンプレート穴埋め
次のテンプレートの穴を埋めて、2021年1月の4指標(セッション、ユーザー、購入イベント、売上)について1行ずつ書いてください。前月比は2020年12月との比較で、小数第1位までの%で書いてください。そのあとに、表から言える解釈を1〜2文だけ書いてください。
テンプレート: {月}の{指標}は{値}(前月比{率})
「2021年1月の売上は57,350 USD(前月比 -64.3%)」のような 4 行と、解釈 2 文が返ってきました。
プロンプト 6:「表に無いことは書かない」制約付き
この表をもとに、上司に提出する月次レポートの要約を書いてください。ただし次を守ってください。
- 表に無い数値・事実・原因は書かない。
- 原因はこの表からは確かめられないため推測しない。分からないことは「この表からは分からない」と書く。
- 計算した値(増減率など)を書く場合は、計算式を括弧で添える。
- 各文の最後に、根拠にした表の行(月)と列(指標)を【】で書く。
この制約は、各社の公式ガイドの考え方を組み合わせたものです。Anthropic は「分からないと言ってよい」と明示する方法と、主張ごとに裏付けを探させ、見つからない主張は取り下げさせる方法を紹介しています(Anthropic: Reduce hallucinations)。OpenAI も、回答を人が選んだ資料の範囲に限定するために、その資料を文脈として渡す、と書いています(OpenAI: Prompt engineering)。
回答では「2021年1月に購入イベントと売上が大きく落ち込んだ原因は、この表からは分かりません。【2021年1月/購入イベント、売上】」のように、分からないことを分からないと書いていました。
誤りの分類と誤り率:1 文ずつ判定した結果
生成文を 1 文ずつ、次の 4 種類に分けました。表の 1 行や箇条書きの 1 行も 1 文として数えています。「前年同月と比べる」のような次の行動の提案は、データについての記述ではないので数えていません。
| 分類 | 意味 | 例 |
|---|---|---|
| 表と一致 | 表の値、または表から正しく計算できる値だけで書かれている | 売上は前月比 64.3% 減 |
| 計算誤り | 表の値から計算した結果が合っていない | 11 月の購入率 1.90%(正しくは 1.89%) |
| 表に無い数値・事実 | 表に無い指標や事実を書いている | 12 月は新規ユーザーが急増 |
| 根拠のない原因 | 表からは確かめられない原因を書いている | 年末商戦後の反動が考えられる |
判定は筆者が行い、数値は次の節の再計算と突き合わせました。結果は次のとおりです。
| プロンプト | 判定した文 | 表と一致 | 計算誤り | 表に無い数値・事実 | 根拠のない原因 | 誤り率 |
|---|---|---|---|---|---|---|
| 1. 自由要約 | 21 | 16 | 0 | 1 | 4 | 23.8% |
| 2. 数値の列挙のみ | 3 | 3 | 0 | 0 | 0 | 0% |
| 3. 前月比の計算 | 8 | 8 | 0 | 0 | 0 | 0% |
| 4. 原因の推測 | 24 | 11 | 1 | 0 | 12 | 54.2% |
| 5. テンプレート穴埋め | 6 | 6 | 0 | 0 | 0 | 0% |
| 6. 「表に無いことは書かない」制約 | 16 | 16 | 0 | 0 | 0 | 0% |
誤り率は、「計算誤り + 表に無い数値・事実 + 根拠のない原因」の文の数を、筆者が判定した文の数で割って計算しました。図 1 のとおり、誤りはプロンプト 1 と 4 に集中しています。
判定で迷った文もありました。「流入減より成約率と単価の低下が主因」(プロンプト 1・4・5)は、売上を「セッション × 購入率 × 購入 1 件あたりの売上」に分けると表から確かめられるので、表と一致に入れました。プロンプト 6 の「この表からは分からない」という文は、表で言える範囲の限界を正しく書いているので、これも表と一致に入れています。
誤り 18 件のうち計算誤りは 1 件だけで、残りの 17 件は「表に無い事実」と「根拠のない原因」でした。AI は計算そのものより、表の外の話を付け足すところで誤りやすい、と考えられます。
プロンプト 4 の原因はどれも「可能性があります」と断ってあり、内容としてはありそうな話です。ただし、表からは 1 つも確かめられません。上司が「季節要因が主因」と読み取ってしまうと、確かめていない話が事実として広まります。
検算の手順:数値、変化率、原因の 3 段階
AI の文章を上司に出す前に、次の順で確かめます。図 2 がその流れです。
- 生成文から数値をすべて抜き出し、正解表の値と 1 つずつ比べる
- 前月比や購入率など、AI が計算した値を自分で計算し直す
- 原因や背景を書いた文に印を付け、表のどの行・列が根拠かを確かめる
- 根拠が示せない文は削るか、「この表からは分からない」に書き換える
手順 2 の再計算は、表計算ソフトでも次のような 1 行のコードでもできます。式は「(当月 − 前月) ÷ 前月 × 100」です。
const pct = (prev, cur) => ((cur - prev) / prev * 100).toFixed(1);
console.log(pct(160555, 57350)); // 売上の 1 月前月比 → -64.3
筆者がこの方法で再計算した結果が次の表です。AI が書いた前月比(プロンプト 1・3・4・5・6)は、すべてこの値と一致しました。
| 指標 | 2020年12月の前月比 | 2021年1月の前月比 |
|---|---|---|
| セッション | +23.0% | −11.2% |
| ユーザー | +31.3% | −9.1% |
| 購入イベント | +18.5% | −50.5% |
| 売上 | +11.3% | −64.3% |
AI が自分で付け足した派生指標も検算しました。購入率(購入イベント ÷ セッション)は 11 月 1.8948%、12 月 1.8250%、1 月 1.0171% です。プロンプト 1 と 6 は 1.89%・1.83%・1.02% と書いて一致しましたが、プロンプト 4 は 11 月を 1.90% と書いていて、これが唯一の計算誤りでした。
購入 1 件あたりの売上は 11 月 70.23 ドル、12 月 65.96 ドル、1 月 47.63 ドルで、1 月は前月比 27.8% 減です。プロンプト 4 の「約28%低下」とは一致しました。
手順 3 では、プロンプト 1 の「新規ユーザーが急増」が引っかかります。公式の基本クエリ集では、新規ユーザーは first_visit または first_open イベントで判定するとされています(Google: 基本的なクエリ)。今回の表にはその列が無いので、この文は削るか、別に集計してから書き直す必要があります。
プロンプトの選び方と、組み合わせる検算
6 本は「どこまで AI に書かせるか」が違います。用途に合わせて選び、決まった検算と組にすると、確かめる時間を短くできます。図 3 と次の表に、今回の結果をもとにした組み合わせをまとめました。
| プロンプト | 向く場面 | 今回の誤り率 | 起きやすい誤り | 組み合わせる検算 |
|---|---|---|---|---|
| 1. 自由要約 | 下書きのたたき台 | 23.8% | 表に無い事実、根拠のない原因 | 数値の突き合わせと原因文の根拠確認 |
| 2. 数値の列挙のみ | 数字の読み上げ | 0% | 写し間違い | 数値の突き合わせ |
| 3. 前月比の計算 | 増減率を文にする | 0% | 計算・丸めの誤り | 変化率の再計算 |
| 4. 原因の推測 | 調べる候補を出す | 54.2% | 根拠のない原因 | 提出文には使わない |
| 5. テンプレート穴埋め | 毎月の定型文 | 0% | 穴の値の誤り | 機械で埋めた値と比べる |
| 6. 「表に無いことは書かない」制約 | 上司向けの要約 | 0% | 今回は無し | 根拠の【行・列】を見て突き合わせ |
プロンプト 4 は役に立たないわけではありません。「次に何を調べるか」の候補出しには使えますが、出てきた原因は検証前の仮説として、提出する文章とは分けて扱うのが安全です。
AI に書かせない部分:件数・日付・金額は機械で埋める
検算をさらに減らすには、そもそも数値を AI に書かせないことです。プロンプト 5 のテンプレートを、AI ではなくスクリプトや表計算の数式で埋めれば、穴の部分は検算が要らなくなります。AI には、残りの解釈 1〜2 文だけを、プロンプト 6 の制約付きで書かせます。
{月}の{指標}は{値}(前月比{率}) ← BigQuery の表から機械で埋める
購入イベントの減少幅がセッションより大きい。 ← AI が書く(表に無いことは書かない)
図 4 は、この分担を表したものです。冒頭で紹介した、このサイトの記事修正で「文の置き換え・更新日・更新履歴はスクリプトが書く」形と同じ考え方です。
この分け方にすると、検算の対象は解釈の 1〜2 文に絞られます。Anthropic のガイドも、プロンプトを直す前に成功の基準と、それを試す方法を決めておくことを前提にしています(Anthropic: Prompt engineering overview)。「数値は機械、解釈は AI」と決めておくこと自体が、その基準作りになります。
つまずきやすい点
丸めの桁で「合わない」ように見える
12 月の購入率は 1.8250% で、小数第 2 位に丸めると 1.83% になります。AI と自分の丸め方が違うと、どちらも正しいのに数字がずれて見えます。検算では、丸める前の値まで出してから比べると判断がぶれません。
期間の区切りがずれる
BigQuery の event_date は、登録したタイムゾーンでの日付を YYYYMMDD 形式の文字列で持っています(GA4 BigQuery Export schema)。月別集計を UTC(世界の基準になる標準時)など別の基準で区切ると、月末・月初のデータが隣の月に入り、正解表そのものがずれます。
表は文字で渡す
今回は表を Markdown の文字のまま貼りました。文字で渡すと、検算のときに AI の文と表の数値をそのままコピーして比べられます。画像で渡す方法は今回試していないので、この記事では比べていません。
サンプルデータは内部で完全には揃っていない
公式ページによると、このサンプルデータは難読化のため一部の項目にプレースホルダ(本物の値の代わりに入れた仮の値)が入っていて、データの中で数字どうしが完全には合わない場合があります(Google: GA4 e コマースのサンプルデータセット)。今回の数字は検算の練習用で、実在の店舗の業績として読むものではありません。
1 回の結果を一般化しない
今回の誤り率は、モデル 1 種・各 1 回・表 1 つで筆者が判定した結果です。自社で使う場合は、自分の表とモデルで同じ判定を数回やってから、どのプロンプトを使うかを決めてください。
まとめ
- 同じ表を渡しても、原因の推測を求めると 24 文中 13 文、自由要約でも 21 文中 5 文が誤りでした。計算誤りは 1 文だけで、残りは表から確かめられない原因や表に無い事実でした。
- 「表に無いことは書かない」「分からないことは分からないと書く」「根拠の行と列を書く」と指示すると、今回の試行では誤りが 0 件になりました。
- 提出前は、数値の突き合わせ、変化率の再計算、原因文の根拠確認の順で検算し、件数・日付・金額は AI ではなく機械で埋めるのが安全です。
次にやること
月次レポートの数字そのものを整えたい方は、ダッシュボードのページで、GA4 や BigQuery のデータをどう見える形にするかを確認できます。AI に書かせた SQL や集計の正しさに不安がある場合は、BigQuery SQL レビューパックも用意しています。
参考にした一次情報
- Google for Developers: GA4 e コマースのサンプルデータセット
- Google for Developers: 基本的なクエリ(GA4 BigQuery Export)
- Google アナリティクス ヘルプ: GA4 BigQuery Export schema
- Anthropic: Reduce hallucinations
- Anthropic: Prompt engineering overview
- OpenAI: Prompt engineering
更新履歴
- 2026-11-09: 定期点検で、本文の7か所を直しました。