MENU
Archives

BigQueryの累積計算の処理方法を解説!

データ分析において累積計算(累計)は非常に重要な分析手法です。特に時系列データを扱う際には、累積合計や累積平均などの計算が頻繁に必要になります。本記事では、Google BigQueryを使用して効率的に累積計算を行う方法について解説します。

目次

累積計算とは?

累積計算とは、ある時点までのデータを集計する計算方法です。例えば:

  • 累積合計:各時点までの値の合計
  • 累積平均:各時点までの値の平均
  • 累積最大/最小:各時点までの最大値または最小値

BigQueryでの累積計算の基本

BigQueryでは、ウィンドウ関数(アナリティック関数)を使用して累積計算を実装します。主に以下の関数が利用されます:

  • SUM() OVER()
  • AVG() OVER()
  • MAX()/MIN() OVER()
  • COUNT() OVER()

累積合計(Running Total)の計算方法

以下のサンプルデータを考えてみましょう:

日付売上
2025-01-011000
2025-01-021500
2025-01-03800
2025-01-042000
2025-01-051200

日付ごとの累積売上を計算するクエリは次のようになります:

SELECT
  日付,
  売上,
  SUM(売上) OVER (ORDER BY 日付 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS 累積売上
FROM
  sales_table
ORDER BY
  日付;

結果は以下のようになります:

日付売上累積売上
2025-01-0110001000
2025-01-0215002500
2025-01-038003300
2025-01-0420005300
2025-01-0512006500

グループごとの累積計算

例えば、複数の店舗の売上データがある場合、店舗ごとに累積売上を計算することもできます:

SELECT
  店舗ID,
  日付,
  売上,
  SUM(売上) OVER (PARTITION BY 店舗ID ORDER BY 日付) AS 店舗別累積売上
FROM
  sales_table
ORDER BY
  店舗ID,
  日付;

移動平均の計算

直近3日間の移動平均を計算するには:

SELECT
  日付,
  売上,
  AVG(売上) OVER (ORDER BY 日付 ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS 移動平均_3日
FROM
  sales_table
ORDER BY
  日付;

累積シェアの計算

全体に対する累積シェアを計算するには:

SELECT
  日付,
  売上,
  SUM(売上) OVER (ORDER BY 日付) AS 累積売上,
  SUM(売上) OVER (ORDER BY 日付) / SUM(売上) OVER () AS 累積シェア
FROM
  sales_table
ORDER BY
  日付;

パフォーマンス最適化のヒント

BigQueryでの累積計算を最適化するためのいくつかのヒント:

  1. 適切なパーティショニング: データ量が多い場合、テーブルのパーティショニングを検討しましょう
  2. インデックスの活用: ORDER BY句で使用するカラムにはインデックスを設定すると良いでしょう
  3. クラスタリング: 頻繁にフィルタリングするカラムでクラスタリングを設定すると効率的です
  4. 必要なデータのみを選択: 必要なカラムだけをSELECTすることでパフォーマンスが向上します

実践的な例:月次売上の累積比率

年間の月次売上データから、その年の累積売上比率を計算する例です:

WITH monthly_sales AS (
  SELECT
    EXTRACT(MONTH FROM 日付) AS 月,
    SUM(売上) AS 月間売上
  FROM
    sales_table
  WHERE
    EXTRACT(YEAR FROM 日付) = 2025
  GROUP BY
    EXTRACT(MONTH FROM 日付)
)

SELECT
  月,
  月間売上,
  SUM(月間売上) OVER (ORDER BY 月) AS 累積売上,
  SUM(月間売上) OVER (ORDER BY 月) / SUM(月間売上) OVER () AS 累積売上比率
FROM
  monthly_sales
ORDER BY
  月;

累積計算を使った業務指標の例

  • 顧客生涯価値(LTV)の計算: 顧客ごとの累積購入金額
  • コホート分析: 顧客グループごとの時間経過に伴う累積行動分析
  • 予算進捗管理: 月次予算に対する累積実績の比較
  • 在庫推移分析: 入出庫の累積計算による在庫推移の把握

まとめ

BigQueryの累積計算機能を活用することで、時系列データに対する洞察を深めることができます。ウィンドウ関数の理解を深め、実務に適用することで、より高度なデータ分析が可能になります。

特にPARTITION BYORDER BYの組み合わせ、そして適切なウィンドウフレーム指定(ROWS BETWEEN)をマスターすることが、効率的な累積計算の鍵となります。

以上の知識を活かして、BigQueryでの累積計算を効果的に活用してください。

株式会社KUIXではただ導入・開発するだけでなく、導入後の利活用を実現することに着眼した、BIツールの選定・導入からレポート作成、運用、啓蒙・展開までトータルのコンサルテーションなどを行っています。

「BigQuery/BIツールを導入したい」

「すでに導入しているがデータ活用、展開が進んでいない」など

お困りの方は、ぜひお気軽にご連絡ください!お問い合わせはこちらから

BigQueryのSQLチートシートダウンロード


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次