· HARUBOUYA · ai · 16 min read

読み込めないほど大きいデータを、AIでどう扱うか

数千万行のテーブルはAIに貼り付けられません。渡すのはデータではなく、構造か集計結果です。4つの型と、どれを選ぶかの判断基準を書きます。

巨大なデータを分割・集計してAIに渡すイメージ

AIにデータ分析をさせようとして、最初にぶつかるのがこれです。元のデータが大きすぎて渡せません。

数千万行のログ、数百MBのCSV、1年分の受注明細などです。貼り付けようとしても入らないし、分割して渡すと前半の内容を踏まえた判断ができません。

ここでの考え方は1つです。AIに渡すのはデータそのものではありません。渡すのは、データの構造か、集計した結果です。順に書きます。

問題:全部読ませようとしている

大きなデータをそのまま渡そうとすると、次のどれかで詰まります。

やり方起きること
全部貼り付けます入りきりません。途中で切れます
分割して順に渡します前半を踏まえた比較ができません
サンプルだけ渡します全体の傾向が出ません。外れ値を見落とします
要約してから渡します要約の時点で必要な情報が落ちています

共通するのは、AIを「読む人」として使おうとしていることです。数千万行を読ませる必要はありません。読むのではなく、数える処理を書かせればよいです。

4つの型

型渡すもの向く場面
1. 集計してから渡します集計結果(数十行)数字の解釈、レポートの文章化
2. 構造だけ渡します列名・型・サンプル数行集計そのものをAIに書かせます
3. 分けて渡して統合します1件ずつの要約契約書・議事録など、独立した文書の束
4. 実行環境ごと渡しますファイルの置き場手元の環境でAIに処理を書かせて動かせる場合

だいたいの場面は1か2で足ります。

型1:集計してから渡す

最も確実です。集計はデータベース側で終わらせ、AIには結果だけを渡します。

BigQuery で集計(数千万行 → 30行)
   ↓
その30行をAIに貼り付ける
   ↓
「この結果から、先月と比べて変化が大きい項目を3つ挙げて」

渡すのは、次のような形です。

月注文件数売上平均単価
2026-0612,430148,300,00011,930
2026-0713,890159,100,00011,454
2026-0811,205141,700,00012,646

この形なら数十行に収まります。AIが得意なのは、この数字から何が言えるかを言葉にすることです。数えること自体ではありません。

指示の書き方

上の表について、次の条件でまとめてください。

- 表の数値だけを使う。表にない数値を出さない
- 変化が大きい項目を3つ、変化率の大きい順に挙げる
- 原因は推測しない。数値の事実だけを書く
- 最後に、追加で確認すべき切り口を2つ挙げる

「表にない数値を出さない」を必ず入れます。これがないと、それらしい補足の数字が付いてきます。

型2:構造だけ渡して、SQLを書かせる

データは渡さず、どんな形のデータがあるかだけを渡します。

渡すものは次のとおりです。

テーブル:orders(注文明細)
列:
  order_id     STRING   注文番号
  ordered_at   TIMESTAMP 注文日時(UTC)
  member_id    STRING   会員ID。未ログインは空
  item_code    STRING   品番
  quantity     INT64    数量
  unit_price   NUMERIC  単価(税抜)
  channel      STRING   web / app / store
件数:約4,800万行(2024年1月〜)

そのうえで、やりたいことを日本語で書きます。

上のテーブルから、月ごとの新規会員の初回購入件数を出すSQLを書いてください。
新規会員は「その会員IDの最初の注文」と定義します。
日時はUTCなので、日本時間に直して月で集計してください。

出てきたSQLは、実行する前に必ず自分で読みます。見るのは次の4点です。

確認する箇所よくある誤り
期間の条件絞り込みが無く、全期間をスキャンします
時差UTCのまま集計され、月初と月末がずれます
重複明細と注文を取り違えて件数が膨らみます
除外条件キャンセル分が含まれたまま

BigQueryなら、実行ボタンの上に処理されるデータ量が表示されます。桁が想定と違えば、絞り込みが抜けています。

なぜこの型が効くか

実データを1行も渡していないため、件数がいくら増えても関係ありません。4,800万行でも48億行でも、渡す情報は同じです。

型3:分けて渡して統合する

契約書100件、議事録50本のように、1件ずつが独立している文書の束で使います。

1件ずつ渡して、決まった形で要約させる
   ↓
要約だけを集めて1つの表にする
   ↓
その表をAIに渡して、横断で比較させる

要点は、要約の形を先に決めておくことです。バラバラの形で要約すると、統合の段階で比較できません。

次の形式で要約してください。この項目以外は書かないこと。

- 相手先:
- 期間:(開始日〜終了日)
- 金額:(税抜、数値のみ)
- 自動更新:(あり/なし/記載なし)
- 解約の通知期限:(日数。記載がなければ「記載なし」)

「記載なし」を選べるようにします。これがないと、書かれていない項目を埋めようとして、もっともらしい値が入ります。

型4:実行環境ごと渡す

手元の環境でAIにコードを書かせて動かせる場合は、ファイルの置き場所を伝えるだけでよいです。

data/ フォルダに12か月分のCSVがあります(各200MB前後)。
全部を読み込まず、1ファイルずつ処理して、
月ごとの合計を1つの表にまとめてください。

この型の利点は、大きいファイルがAIの手元を通らないことです。処理するコードだけが書かれ、実行結果の数十行が返ってきます。

注意点は、途中経過をファイルに残させることです。1ファイル処理するたびに結果を書き出させておくと、途中で止まってもやり直しが1ファイル分で済みます。

どの型を選ぶか

状況選ぶ型
集計はもうできています。解釈と文章化をしたいです型1
何をどう集計するかを決めたいです型2
データベースに入っていない大きなファイルがあります型4
文書の束を横断で比べたいです型3
個人情報を含みます型2(データを渡さないため)

個人情報を含むデータでは型2を使います。列名と件数だけを渡し、実データは自社の環境から出しません。

数字の扱い

どの型でも共通する原則が1つあります。

数えるのは機械、説明するのが人とAI。

やらせてよいことやらせてはいけないこと
集計結果を文章にします数値を暗算させます
変化の大きい項目を選びます合計や平均を計算させます
SQLや処理を書きます書いたSQLを実行せずに結果を予想させます
確認すべき切り口を挙げます原因を断定させます

合計を計算させません。表を渡して「合計は」と聞くと、それらしい数字が返るが、検算すると合わないことがあります。合計は集計側で出しておきます。

やること

手順1. 渡すものを1度書き出す

指示を書く前に、次の3行を埋めます。

渡すもの:(集計結果/列の定義/要約の束/ファイルの置き場)
渡さないもの:(実データ、個人情報、社名)
知りたいこと:(1つだけ)

「知りたいこと」を1つに絞ります。複数を一度に聞くと、どれも浅くなります。

手順2. 件数と期間を必ず添える

添えるもの理由
全体の件数サンプルなのか全部なのかが分かります
期間季節性を踏まえた解釈ができます
除外した条件数値の前提が揃います

手順3. 出てきた数値を1つだけ検算する

全部を検算しません。最も大きい数値を1つだけ、元の集計と突き合わせます。ここが合っていれば、集計結果をそのまま使っています。ずれていれば、どこかで作られた数字が混ざっています。

手順4. 同じ手順を繰り返すなら、スキルに登録する

毎月同じ形式で同じ分析をするなら、手順書として登録しておくと、次から指示を書かなくてよくなります。

登録する内容は次の3つです。

内容例
渡す形式集計結果の表の列構成
出力の型見出し、数値、変化、次の確認事項
禁止事項表にない数値を出さない、原因を断定しません

失敗例

失敗何が起きるか代わりにやること
元データを全部渡そうとします入りません。分割しても比較ができません集計結果か構造だけを渡します
サンプル1万行で傾向を語ります外れ値や季節性を見落とします全件を集計してから渡します
合計や平均を計算させます検算すると合いません集計側で出してから渡します
「表にない数値を出さない」を書きませんもっともらしい補足の数字が付きます指示に必ず入れます
出てきたSQLをそのまま実行します期間の絞り込みが抜け、全期間をスキャンします実行前に期間・時差・重複・除外を確認します
要約の形式を決めずに束を処理します形がばらつき、統合できません項目を先に決め、「記載なし」を選べるようにします
個人情報を含むデータを渡します出してはいけない情報が外に出ます列の定義だけを渡します
原因まで書かせます推測が事実として資料に載ります数値の事実だけを書かせ、原因は人が考えます

まとめ

  • 大きいデータは読ませるのではなく、数える処理を書かせます
  • 渡すのはデータではなく、集計結果か、データの構造
  • 型は4つです。集計してから渡す/構造だけ渡す/分けて統合する/実行環境ごと渡します
  • 構造だけ渡す型なら、件数がいくら増えても渡す情報は変わりません
  • 個人情報を含む場合は、列の定義だけを渡して実データを出しません
  • 指示には「表にない数値を出さない」を必ず入れます
  • 合計や平均は計算させません。集計側で出してから渡します
  • 出てきた数値は、最も大きいものを1つだけ検算します

最初にやることは、渡すもの・渡さないもの・知りたいことの3行を書くことです。ここが決まれば、どの型を使うかは自動的に決まります。

Share:

参考になったら、いいねを押してください。

コメント

    お名前とコメントは、確認後にこのページで公開されます。メールアドレスや電話番号などは書かないでください。

    Back to Blog

    Related Posts

    View All Posts »
    AI導入を外注する前に、社内で決めておく5つのこと

    AI導入を外注する前に、社内で決めておく5つのこと

    外注先が決めてくれないことが5つあります。対象の業務、AIに見せてよい情報、社内の担当者、成功の基準、予算の上限の5つです。そのまま使える依頼メモの書き方までまとめます。