商品別・期間別の売上をAIで比べるときは、いきなり「伸びた商品を教えて」と聞くより、期間粒度と売上定義をそろえ、売上・数量・平均単価を分けて見る方が原因候補まで追いやすくなります。売上が増えていても、数量増なのか単価上昇なのか、返品や値引きの扱いが変わっただけなのかで意味は変わります。
この記事では、Raw Dataの整形から、Product × Period集計、前期間差、前年比較、数量・単価分解、Segment深掘り、検算まで進めます。読後には、AIが出した「売上増」の一言ではなく、どの商品が、どの期間に、何が動いて増減したかを確認できる状態を目指します。
目次
最初にSales Analysis Contractを決める
比較前に、何を1件の売上として数えるかを固定します。
表は横にスクロールできます
| 項目 | 例 | 確認すること |
|---|---|---|
| Period | 月次 | 日次/週次/月次を混ぜない |
| Sales | 税抜Net Sales | 税・返品・値引きの扱い |
| Quantity | 販売数量 | 返品数量を差し引くか |
| Product Key | product_id | 商品名表記ゆれを避ける |
| Region | region | Segment分析に使うか |
| Date | order_date | 売上計上日か注文日か |
このContractが曖昧なまま比較すると、AIが正しい集計をしてもBusiness上の意味がずれることがあります。
Raw Dataは1行1Recordにする
例として、次のようなDataを想定します。
order_date, product_id, product_name, quantity, unit_price, discount, net_sales, region
同じ月の合計だけを並べた表より、明細Recordから集計する方が、後で商品・地域・Channelへ分解できます。集計済みDataしかない場合は、その粒度を明示します。
商品名よりProduct IDを優先する
「商品A」「商品A」「Product A」のような表記ゆれがあると別商品として集計されます。
安定したproduct_idがあるならKeyに使い、表示名はLabelとして扱います。IDがない場合は、表記正規化のRuleを先に決めます。
期間粒度をそろえる
2026年9月の1か月と、2026年10月1日〜15日の半月をそのまま比べると期間長が違います。
完了月同士で比較するのか、月途中なら同じ経過日数で比べるのかを決めます。前年同期比較でも、日数・曜日構成・休業日が大きく違わないかを確認します。
締め済み期間と速報期間を分ける
売上Dataは月末後に返品・Cancel・計上修正が入ることがあります。確定月と当月速報を同列に扱うと、後から数字が変わる可能性があります。
period_status = FINAL / PROVISIONAL のように状態を持ち、速報値同士か確定値同士で比べます。会議資料へ出す場合も、数字が確定前ならその旨を明記します。
まずProduct × Periodで3指標を出す
最初のOutputは売上だけにしません。
表は横にスクロールできます
| 商品 | 期間 | 売上 | 数量 | 平均単価 |
|---|---|---|---|---|
| A | 2026-08 | 1,000,000 | 500 | 2,000 |
| A | 2026-09 | 1,200,000 | 480 | 2,500 |
| B | 2026-08 | 800,000 | 400 | 2,000 |
| B | 2026-09 | 760,000 | 380 | 2,000 |
数字は説明用の架空例です。平均単価は単純平均ではなく、ここでは売上 ÷ 数量として確認します。
売上増を数量と単価へ分解する
Product Aは売上が100万円→120万円に増えていますが、数量は500→480へ減り、平均単価は2,000→2,500へ上がっています。
この場合「売れた個数が増えた」ではありません。売上増の観測Factは、数量減と単価上昇が同時に起きたことです。値上げ、商品Mix、Discount減などは原因候補であり、別Dataで確認します。
絶対差と増減率を両方出す
売上差は current - previous、増減率は 差 ÷ previous で確認します。
Product Aなら、差は+20万円、増減率は+20%。Product Bなら-4万円、-5%。金額差が大きい商品と率が大きい商品は一致しないことがあります。
比較元が0なら増減率を無理に出さない
前月売上0円、当月10万円の場合、通常の増減率計算は意味を持ちにくくなります。
この場合は「新規売上10万円」「前期0」のように絶対差で示し、率はN/A等にします。AIに0除算を勝手な大率へ変換させません。
返品・Cancel・値引きの扱いをそろえる
Gross SalesとNet Salesを混ぜると比較が壊れます。返品をマイナス計上する月と、返品Rowを除外する月が混ざっても同じです。
Sales Definitionを「売上総額」「返品差引後」「税抜」など具体的に決め、全期間へ同じRuleを適用します。
架空例:商品別の変化を読む
A:売上+20%、数量-4%、平均単価+25%。
B:売上-5%、数量-5%、平均単価±0%。
C:売上+60%、数量+60%、平均単価±0%。
Aは単価・Mix要因、Bは数量要因、Cは数量要因がまず疑われます。ただしこれは「売上表から読める変化」であり、なぜそうなったかの確定ではありません。
AIへのPrompt例
「このSales CSVをproduct_id × monthで集計してください。net_sales、quantity、average_unit_price=net_sales/quantityを出し、前月差・前月比・前年同月差を追加してください。比較元が0なら増減率はN/A。売上変化をquantity change / unit price changeの観点で整理し、原因は断定せずHypothesis列へ分けてください。集計前後の売上合計も検算してください。」
AIには集計と解釈を同じColumnへ混ぜさせないのがポイントです。
全体合計と商品別合計をReconcileする
商品別集計の合計がRaw Data全体のNet Salesと一致するか確認します。
Raw Net Sales Total = Grouped Net Sales Total
一致しなければ、Filter、Missing Product ID、重複Row、返品Rule、Date範囲のどれかを疑います。
Row Countも確認する
売上合計だけ一致しても、Recordの取り込み漏れが相殺されている可能性があります。
Raw Rows、対象期間Rows、集計対象Rows、除外Rowsを数え、除外理由を残します。G918/G919の重複・欠損処理を先に済ませているかも確認します。
前年同月比は季節性を見る助けになる
前月比は直近変化に強い一方、季節性がある商品では自然な増減も含みます。
前年同月比を併記すると、「毎年9月に上がる商品」なのか、今年だけの動きなのかを分けやすくなります。ただし商品構成や価格体系が変わっている場合は単純比較しません。
地域・Channelへ分解する
商品Aが全体で伸びていても、東日本は減少、西日本だけ大幅増ということがあります。
全体→Product→Region / Channelの順にSegmentを細かくすると、変化がどこに集中しているか見つけやすくなります。ただし少数RecordのSegmentは率が大きく振れやすいので母数も併記します。
Mixの変化を見る
全体平均単価が上がっていても、各商品の価格が上がったとは限りません。高価格商品の販売比率が増えただけかもしれません。
Product-levelの平均単価と、全体売上に占める構成比を分けて確認します。全体のAverageだけで値上げと断定しません。
Chartは問いに合わせる
時間推移なら折れ線、同一期間の商品差なら棒Chartが基本候補です。商品数が多い場合はTop NとOthersに分けるなど、読める形にします。
グラフはG923のSelection Ruleへつなげ、1つのChartに売上・数量・単価を無理に重ねません。
原因は別Dataで確認する
売上表だけから「Campaign成功」「競合撤退」「季節要因」と断定できません。
Hypothesisとして、Campaign実施日、価格改定、在庫切れ、広告費、流入数など必要なEvidenceを列挙し、追加Dataで確認します。
Analysis Outputの完成形
表は横にスクロールできます
| Product | Period | Sales | Qty | Avg Price | MoM | YoY | Observation | Hypothesis | Needed Data |
|---|---|---|---|---|---|---|---|---|---|
| A | 2026-09 | 1.2M | 480 | 2,500 | +20% | +15% | 数量減・単価上昇 | 値上げ/Mix | Price history |
ObservationとHypothesisを別Columnにすることで、AIの推測をFactとして扱いにくくなります。
最終QA Checklist
-
Period粒度がそろっている
-
Sales定義が全期間で同じ
-
Product Keyが安定している
-
売上・数量・単価を分けた
-
0を分母にしていない
-
商品別合計とRaw合計が一致
-
前月比と前年同月比を分けた
-
Segmentのn数を確認した
-
ObservationとHypothesisを分けた
-
原因は追加Evidenceで確認する
AIものさしの判断
商品別・期間別分析では、「売上が増えた商品」を見つけるだけでは足りません。売上を数量と単価へ分解し、期間・返品・税・割引の定義をそろえたうえで、Raw Totalと集計Totalを検算します。
まず1〜2か月、2〜3商品だけでPilotし、売上・数量・平均単価・前月差が手計算と一致するか確認してください。そこから全商品へ広げ、最後に原因候補をCampaignや価格改定など別Dataで検証する。この順なら、AIのもっともらしい説明より先にData上の変化を固定できます。
引用・データ出典
公式情報を編集部が見た内容です。Hands-on未実施の記述は本文かここに分けています。
確認日:2026-10-09
OpenAI Help:Data analysis with ChatGPT(新しいタブで開く)
OpenAI Help:Extracting Insights with ChatGPT Data Analysis(新しいタブで開く)
